Tailscale이 계정 없이 DERP와 NAT 트래버설을 쓰는 netcat형 도구 Tailcat 공개
- Tailcat은 Tailscale 데이터 플레인 위에서 연결하는 netcat형 오픈소스 도구로, CLI와 Go 라이브러리가 같은 포트 1의 원시 스트림 형식을 사용함
- 최근 커밋으로 브라우저 WASM 파일 전송 앱을 추가함. 한쪽이 리스너를 만들고 tc 주소를 별도 채널로 전달하면, 브라우저는 WebSocket DERP를 거쳐 파일을 전송하며 다운로드는 File System Access API로 디스크에 스트리밍함
- Go의 Client는 Server 토큰만 지정하면 되고, 임시 키, 로거, 기본 DERP 맵은 첫 dial 또는 ping 시점에 지연 생성되도록 변경됨
- 토론에서 작성자는 DERP 서버도 오픈소스이며 자체 운영 DERP를 지정할 수 있다고 설명함. 기본으로 제공하는 tailcat.dev DERP 맵은 속도 제한이 있고 일반 Tailscale DERP 플릿과 분리돼 있음
Hacker News opinions
예전 NAT 펀칭 블로그를 읽고 바로 이런 걸 만들까 했는데, Magic Wormhole 같은 대안도 있고 결국 미뤘음. 그래도 흥미롭다.
난 수년간 SSH 포워딩과 nginx 리버스 프록시를 조합해서 비슷하게 썼음. 다만 NAT 트래버설은 없었지.
Tailscale 쪽 독점 요소를 뺀 점은 좋은데, 완전한 자주 운영이 목표라면 DERP 제어도 없애야 하는 것 아님? NetBird나 OpenZiti, ZeroTier처럼 말이야.
작성자인데 DERP 서버도 이미 오픈소스고, tailcat은 내가 운영하는 DERP를 쓸 수 있음. 시작하기 좋게 기본 DERP만 제공할 뿐이고, 대역폭이 민감하면 직접 운영하면 됨.
이걸 벤더 종속 상품처럼 보는 건 이상함. 계정이나 결제도 필요 없고, 회사가 사라져도 자체 DERP를 돌리면 tailcat은 계속 작동함.
포트 포워딩이 된다면 간단할 수는 있음. 하지만 공인 IPv4가 있고 CGNAT가 없고 두 호스트만 연결하면 된다는 조건이 붙고, 그게 Tailscale이 해결하려는 범위는 아님.
최근 나온 bitbang-cli의 직접 경쟁자처럼 보임.
Coder의 Wush도 Tailscale을 내부에서 써서 비슷한 일을 이미 했음.
이건 WireGuard 위에 stunnel을 얹는 대체재처럼 보이는데, 그런 용도는 꽤 유용함.
Magic Wormhole과 비슷하지만 범용 연결에 더 가까움. 다만 Wormhole은 전화로도 전달할 수 있는 짧은 사람이 읽는 세션 ID가 있어서 PAKE가 필요하고, tailcat의 암호 방식은 더 단순한 듯.
악성코드 C&C에 쓰일 위험은 어떨까? 개별 차단이 어려운 통신 채널은 공격자도 좋아함.
회사 밖에서 집 네트워크로 SSH하고 싶은데, 회사 쪽 tailnet이라 곤란했음. Iroh로 일회성 도구를 만들었는데 tailcat으로 버리거나 다시 설계할 수 있을 것 같음.
IPv6와 CGNAT가 없는 인터넷이면 이런 도구가 덜 필요했겠지. 그래도 쉬운 P2P 연결은 사람들이 생각하는 것보다 많은 일을 가능하게 함.
로그인 없이 DERP를 쓴다면 Tailscale이 비고객 트래픽도 받아줄지 궁금했음. 작성자 말로는 일반 Tailscale DERP와 분리된 별도 rate-limited DERP 플릿을 운영 중이라고 함.
이런 도구가 인터넷의 문제를 드러낸다고 봄. 원래는 netcat과 IP 스택만으로 끝나야 할 일이 NAT 펀칭, 암호화, 고정 ID, 권한 관리까지 앱마다 다시 구현하게 만듦.