Tailscale VPN 서버 구성

참고

이것은 선택 사항입니다. 집에서 노드를 실행하고 홈 네트워크 외부에서 연결하려는 경우에만 이 섹션을 고려하면 됩니다.

휴가 중이거나 출장 중일 때와 같이 홈 네트워크에 원격으로 로그인하려면 가상 사설 네트워크 서버를 사용하는 것이 가장 일반적인 방법입니다. 이를 통해 SSH 포트를 인터넷에 노출하지 않고도 SSH를 통해 노드에 연결하고 전 세계 어디에서나 Grafana 대시보드를 모니터링할 수 있습니다.

많은 Rocket Pool 노드 운영자는 이를 위해 Tailscale을 VPN 서버로 선택합니다. Tailscale은 오픈 소스 P2P VPN 터널 및 호스팅 엔드포인트 검색 서비스입니다. 중앙 집중식 서버로 민감한 트래픽을 전송하지 않고도 머신과 노드 간에 종단 간 암호화 경로를 설정하는 데 필요한 인증, 게시 및 NAT 통과를 처리합니다. 이것은 매우 강력한 도구입니다.

여기서는 기본 구성을 간략하게 다루지만 자세한 내용은 그들의 문서를 참조하세요.

Tailscale 설정

먼저 무료 Tailscale 계정을 만드세요. Tailscale은 Google, GitHub, Okta, Microsoft 등과 같은 SSO ID 공급자를 사용해야 합니다. 자세한 내용은 그들의 SSO 페이지를 방문하세요.

보안을 강화하기 위해 선택한 ID 공급자에서 2FA(2단계 인증)를 활성화하는 것이 좋습니다.

다음으로 그들의 온보딩 가이드를 따라 클라이언트에 Tailscale을 설치하세요 - 네트워크에 연결하려는 머신입니다. 예를 들어 노트북이나 휴대폰일 수 있습니다. Rocket Pool 노드가 아님을 주의하세요!

완료되면 Tailscale 대시보드에서 컴퓨터가 '연결됨'으로 표시되어야 합니다.

이제 Rocket Pool 노드에 Tailscale을 설치하세요. 웹사이트에서 지침을 찾을 수 있습니다. 예를 들어 Ubuntu 설치 지침이 있습니다.

참고

UFW를 구성한 경우 UFW 구성 지침도 따라야 합니다.

먼저 Rocket Pool 노드에서 Tailscale의 패키지 서명 키와 저장소를 추가하세요:

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

이제 Rocket Pool 노드에 Tailscale을 설치하세요:

sudo apt-get update
sudo apt-get install tailscale

마지막으로 Rocket Pool 노드에서 머신을 인증하고 Tailscale 네트워크에 연결하세요:

sudo tailscale up

연결되었습니다! 다음을 실행하여 Tailscale IPv4 주소를 찾을 수 있습니다:

tailscale ip -4

이제 Tailscale 대시보드에 노드 머신이 추가된 것을 볼 수 있습니다. 대시보드를 통해 노드 머신의 이름을 변경할 수도 있습니다. 예를 들어 rocketnode로 변경할 수 있습니다.

주기적으로 재인증할 필요가 없도록 노드 머신의 키 만료를 비활성화하는 것이 좋습니다.

참고

rocketnode와 같이 기억하기 쉬운 호스트 이름을 사용하여 노드에 액세스하려면 Tailscale 설정에서 MagicDNS를 활성화하면 됩니다.

이제 클라이언트에서 노드로의 SSH 세션을 exit하고 ssh your.user@rocketnode를 사용하여 Tailscale을 통해 노드에 다시 SSH로 접속할 수 있습니다.

참고

처음 구성할 때 /etc/ssh/sshd_config에서 노드 머신의 SSH 포트를 수정한 경우 대신 ssh your.user@rocketnode -p <your port>를 사용하세요.

예를 들어 SSH를 포트 1234에 할당한 경우 다음과 같이 합니다:

ssh your.user@rocketnode -p 1234

이제 웹 브라우저에서 http://rocketnode:3100을 방문하여 클라이언트에서 Grafana 대시보드에 액세스할 수도 있습니다.

UFW를 구성한 경우 이제 Tailscale을 통한 모든 들어오는 SSH 연결을 허용하는 규칙을 추가할 수 있습니다.

경고

다음 단계는 방화벽 규칙을 수정합니다. **계속하기 전에 노드 머신에 최소 2개의 SSH 세션이 열려 있어야 합니다 - 하나는 구성을 수정하고 나중에 테스트하기 위한 것이고, 다른 하나는 변경 사항이 SSH를 손상시킬 경우 되돌릴 수 있도록 백업으로 로그인한 상태로 유지하기 위한 것입니다!

노드 머신에서 이 명령을 실행하세요.

Tailscale을 통한 모든 들어오는 ssh 연결에 대한 액세스를 허용합니다.

sudo ufw allow in on tailscale0

방화벽 활성화 단계에서 추가한 SSH 포트에 대한 액세스를 제거하여 노드를 완전히 잠글 수도 있습니다. Tailscale이 로그인하는 유일한 방법이 되므로 로컬 네트워크에서 로그인할 수 없다는 점에 유의하세요. 이것이 괜찮다면 다음 명령을 실행하세요.

sudo ufw delete "22/tcp"

모든 비 Tailscale 연결을 제한하도록 방화벽 규칙을 설정한 후 UFW와 SSH를 다시 시작하세요:

sudo ufw reload
sudo service ssh restart

이제 모든 것이 예상대로 작동하는지 확인하세요. 현재 SSH 세션 중 하나에서 exit하세요(하지만 두 번째 세션은 백업으로 열어 두세요).

다음으로 Tailscale IP 주소를 사용하여 SSH를 통해 노드 머신에 연결하세요:

ssh your.user@rocketnode

작동한다면 모든 것을 올바르게 수행한 것이며 이제 해외에서 홈 네트워크에 안전하게 로그인할 수 있습니다!

이전에 라우터에서 노드의 SSH 포트를 포트 포워딩한 경우 이제 제거할 수 있습니다.