메시 네트워크가 줄이는 것과 남기는 것
Tailscale은 WireGuard를 바탕으로 기기 사이의 암호화된 경로를 만들고 NAT 통과를 조정해. 공개 포트 포워딩을 줄일 수 있지만 서비스 바인딩, 방화벽, ACL, 애플리케이션 인증까지 자동으로 안전해지는 것은 아니야.
설치
brew install --cask tailscale
open -a Tailscale
# 모든 디바이스에서 같은 Google/Microsoft/GitHub 계정으로 로그인로그인을 마치면 각 기기가 Tailscale 관리 콘솔에 표시되고, office.tailnet.ts.net 같은 호스트명과 100.x 주소를 받아.
Tailscale 위에서 SSH 사용하기
Tailscale 연결이 준비되면 공개 포트 포워딩 없이 Tailscale 주소나 호스트명으로 SSH에 접속할 수 있어. 예를 들어 ~/.ssh/config에 별칭과 Tailscale 주소를 다음처럼 적을 수 있어:
Host office
HostName 100.x.x.x
User you_username
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes이 설정을 읽는 tailnet 기기에서는 ssh office, scp file office:, rsync ... office:처럼 같은 별칭을 사용할 수 있어.
Tailscale 자체 SSH
Tailscale SSH를 사용하면 tailnet의 사용자·기기 신원과 정책으로 SSH 접근을 제어할 수 있어. 운영체제의 일반 OpenSSH와 인증·정책 소유자가 달라지므로 둘을 섞어 설명하지 말고, 선택한 방식의 ACL과 감사 경로를 명확히 해.
MagicDNS로 이름 사용하기
MagicDNS를 켜면 ssh office처럼 호스트명으로 접속할 수 있어. 100.x 주소를 직접 외울 필요는 없지만, 이름이 어느 기기와 역할을 가리키는지는 MagicDNS 문서와 관리 콘솔에서 확인해야 해.
왜 Terminal Quest에서 다룰까?
장비가 두 대뿐이어도 안정된 이름, SSH, rsync를 조합하면 반복 가능한 원격 작업 흐름을 만들 수 있어. 다만 기준 데이터가 어디에 있는지, 어느 방향으로 동기화하는지, 실패 후 누가 복구하는지는 네트워크 도구 밖의 운영 계약으로 남겨야 해.
연결 가능성과 권한 부여를 나눠
기기가 tailnet에 들어왔다는 사실은 통신 경로를 만들 뿐 모든 서비스 사용 권한을 주어야 한다는 뜻은 아니야. 사용자, 태그, 소스 기기, 대상 포트별로 최소 ACL을 설계하고 오래된 기기 키를 정리해.
이름이 맞아도 호스트 역할은 바뀔 수 있어
DNS 이름은 기억하기 쉽지만 장애 복구나 이전 뒤 다른 장비를 가리킬 수 있어. 상태 변경 전에 호스트의 신원과 서비스 상태를 확인하고, 기준 데이터가 어느 장비에 있는지 별도 운영 기록으로 관리해.
비공개 경로에도 정책은 남아
메시 주소를 쓴다고 신원, 접근 제어, 호스트 키, 서비스 노출 경계가 사라지는 것은 아니야. 누가 어느 포트에 닿을 수 있는지 정하고, 서비스는 필요한 주소에만 바인딩하며, 별도 복구 경로를 남겨.