1P by GN⁺ | ★ favorite | 댓글 1개
  • Tailscale은 Mullvad와 제휴해 Mullvad의 글로벌 VPN 서버를 Tailscale exit node로 쓸 수 있게 했고, tailnet 사용자가 별도 인프라 없이 더 비공개로 웹을 탐색할 수 있게 함
  • Mullvad는 활동 로그·모니터링을 하지 않고 구독에 고유 계정 번호를 쓰는 VPN으로, 개인 데이터가 계정에 직접 묶이지 않도록 설계됨
  • Tailscale은 기기와 Mullvad 네트워크 엣지 사이의 조정 계층만 맡고, 실제 인터넷 트래픽은 선택한 Mullvad 노드를 통해 직접 흐름
  • 이 조합은 공용 Wi-Fi 보호나 지역별 접속 같은 용도에 유용하지만, 진정한 익명성까지 보장하는 모델은 아님
  • 기능은 공개 베타로 제공되며, 기존 Tailscale 플랜과 Free 플랜에 유료 애드온으로 추가할 수 있고 가격은 5개 기기당 월 $5

Tailscale과 Mullvad가 맡는 역할

  • 둘 다 VPN으로 불릴 수 있지만, 해결하려는 문제는 다름
  • Tailscale은 개인용 사설 인터넷인 tailnet을 만들어, 사용자가 필요한 서비스와 사람에게 거의 어디서든 안전하게 연결되도록 돕는 서비스임
  • Mullvad 같은 프라이버시 VPN은 광고주, ISP, 공용 Wi-Fi의 위협 행위자, 마케팅 사이트 등으로부터 기기 식별 정보를 가리며 더 비공개에 가까운 인터넷 접속을 제공함
  • 이전에는 Tailscale을 쓰면서 프라이버시 VPN과 비슷한 이점을 얻으려면 사용자가 직접 인프라를 구성해야 했음

Mullvad를 Tailscale exit node로 쓰는 방식

  • Mullvad는 전 세계 40개 이상 국가에 있는 수백 대 서버에 접근할 수 있게 함
  • Mullvad 서버에 연결할 때 기기는 WireGuard 키 쌍을 생성함
    • 공개 키는 Mullvad 인프라에서 피어를 식별하는 데 사용됨
    • 개인 키는 트래픽 암호화에 쓰임
  • Tailscale에서 Mullvad exit node를 사용할 때도 구조는 유사함
    • 노드는 기존 Tailscale 생성 WireGuard 키 쌍을 Mullvad 인프라에 등록함
    • 인터넷에서 들어오는 트래픽은 Mullvad 네트워크 엣지에서 종료됨
    • 트래픽은 기기까지 종단 간 암호화됨
  • 결과적으로 Mullvad의 서버 플릿을 tailnet 안으로 가져와 쓰는 형태가 됨

Tailscale은 조정 계층으로 동작

  • Tailscale은 사용자 기기와 Mullvad 네트워크 엣지 사이에서 조정 계층 역할을 맡음
  • 제어 계층은 사용 가능한 Mullvad 네트워크 맵을 계속 갱신하고, 각 지역이나 도시에서 어떤 서버에 연결할지 기기에 전달함
  • 기기는 선택한 지역·도시의 Mullvad 노드 연결 정보를 받은 뒤, 해당 노드를 통해 인터넷으로 직접 트래픽을 보냄
  • tailnet의 다른 트래픽처럼 데이터는 종단 간 암호화되며, Tailscale은 개인 키를 갖지 않아 트래픽 내용을 볼 수 없음

설정과 과금

  • Mullvad exit node를 활성화하려면 tailnet 관리자가 관리자 콘솔의 general settings 페이지에서 Configure를 선택해야 함
  • 관리자는 tailnet에서 Mullvad와 함께 사용할 기기를 고른 뒤 결제 흐름을 통해 라이선스를 구매함
    • 가격은 사용하려는 기기 5대당 월 $5
  • Mullvad VPN 접근 권한이 부여된 기기에서는 Mullvad exit node를 선택할 수 있음
  • 각 기기는 exit node를 개별적으로 켜거나 끌 수 있음
  • 자세한 사용 방법은 Tailscale 문서에서 확인할 수 있음

프라이버시와 익명성의 한계

  • Tailscale 연결은 각각 WireGuard 터널이며, 종단 간 암호화되고 인증됨
  • 인증은 트래픽이 주장한 엔드포인트 사이에서 흐른다는 강한 보장을 제공함
  • Mullvad에는 사용자의 개인 정보가 전송되지 않음
  • Tailscale은 연결된 identity provider를 통해 사용자를 알지만, Mullvad 서버 연결에는 이 정보가 필요하지 않음
  • 로컬 Tailscale 클라이언트는 공개 WireGuard 키를 어디로 보낼지 전달받고, 이후 인터넷 트래픽은 Mullvad VPN 인프라를 통해 흐름
  • 이 구조는 기기, 네트워크, 연결의 개인 세부 정보를 외부 관찰자로부터 가리는 데 도움을 줌

진정한 익명성은 별도 문제

  • Tailscale은 이 조합이 많은 사용 사례에 적합하다고 보지만, 진정한 익명성을 제공하지는 않음
  • Tailscale이 해결하려는 문제는 true anonymity가 아니며, 조건부 익명성을 허용하는 위협 모델을 가진 사용자에게 맞는 방식임
  • 프라이버시와 진정한 익명성이 모두 필요한 유효한 사용 사례도 존재함
  • 상업적으로 이런 보장을 제공하는 데는 위험이 있음
    • Mullvad와 IVPN은 포트 포워딩 지원 제거와 관련해 악용 가능성을 언급함
    • 악의적 사용자가 서비스를 악용 벡터로 만들 수 있음
    • 이런 악용은 자신의 안전을 위해 서비스에 의존하는 사람까지 포함해 전체 사용자 경험을 악화시킬 수 있음
  • 더 어려운 위협 모델을 가진 사용자는 EFF Surveillance Self-Defense guide 같은 자료로 적절한 도구를 판단하는 과정이 필요함

공개 베타와 플랜 지원

  • Mullvad exit node는 공개 베타로 바로 사용할 수 있음
  • 가족이나 팀 단위로 확장할 수 있으며, 접근 권한이 있는 기기 5대당 월 $5로 반복 자동 결제가 적용됨
  • Mullvad는 현재 Tailscale의 모든 플랜에 유료 애드온으로 제공됨
  • Free 플랜에서도 이 애드온을 사용할 수 있음
  • 시작하려면 관리자 콘솔의 general settings 탭에서 Configure를 선택하면 됨

댓글과 토론

Hacker News 의견들
  • VPN은 원래 Mullvad 같은 상업적 소비자 VPN과는 꽤 다른 의미였고, Tailscale이 제공하는 암호화된 오버레이 네트워크에 더 가까웠음
    지금은 재발명의 바퀴가 한 바퀴 돌아 둘이 다시 합쳐지는 느낌이고, 여기서 “재발명”을 부정적으로 쓰는 건 아님. 좋은 방향이라고 봄
    John Gilmore[1] 같은 사람들이 IETF 표준 IPSec 기반의 보편적·상호운용 VPN 기술로 인터넷 트래픽을 종단 간 보호할 수 있다고 봤던 역사적 맥락은 90년대 FreeS/WAN의 취지 문서에서도 볼 수 있음: http://web.archive.org/web/20210125023625/https://www.freesw...
    그 뒤로는 VPN 암흑기가 있었고, 주로 구식 기업 “내부망”에 접속하는 기술로만 쓰였음
    [1] https://en.wikipedia.org/wiki/John_Gilmore_(activist)

    • 예전에는 지역 차단을 우회하려고 proxy.org에 올라오던 웹 프록시 같은 “반쪽짜리” 수단도 많이 썼음
      어릴 때 하나 운영해봤는데 보안 악몽에 가까웠고, 웹 프록시 운영자가 지나가는 모든 사용자 자격 증명을 훔쳐보는 걸 막을 방법이 없음. PHPRoxy를 그렇게 바꾸는 것도 아주 쉬움
      개인적으로 2000년대 초반 10대 때 도메인 파킹 서비스를 운영하면서 도메인을 웹 프록시로 쓰고, 콘텐츠 안의 애드센스 블록을 찾아 내 애드센스 코드로 바꿔 끼웠고 도메인 소유자 코드와 50/50으로 나눴음. Google이 결국 알아채고 금지했지만, 지속되는 동안은 꽤 괜찮았고 새 광고 블록을 추가한 게 아니라 기존 블록을 재사용한 거라 꽤 공정했다고 봄
    • 처음 접한 VPN은 지사를 회사망에 연결하는 용도였음
      나중에 소비자용 VPN이 나오면서 단일 컴퓨터를 네트워크에 붙이는 점대다점 구조가 됐는데, 그런 혼동이 어떻게 생겼는지는 잘 모르겠음. 그 시절엔 사실상 SSH 터널을 포장한 것에 가까웠음
    • “원래”는 아니지만 지금도 사이트 간 VPN은 널리 쓰임
      기술적으로 Mullvad의 VPN도 사이트 간 VPN이고, 원격 사이트가 인터넷일 뿐임
      집 LAN의 전체 구간을 인터넷에 연결하려고 비슷한 VPN을 자주 썼음
      가장 큰 차이는 클라이언트 쪽 설정 방식인데, 반대편이 거의 항상 호스트가 아니라 네트워크이기 때문임
    • 소비자 지향 제공자에게서 VPN이라는 용어를 빼앗아 문지기질하려는 경향은 이상함
      일반 용어로서 VPN은 지금도 20년 전과 정확히 같은 뜻임
      “가상”은 물리 네트워크 인터페이스에 대응하지 않는다는 뜻이고, “사설”은 ipip나 6in4 같은 단순 터널과 달리 암호화가 포함된다는 뜻임. 그리고 노드에 나타나는 네트워크 인터페이스라는 점도 늘 같았고, 그 노드가 벤더의 독점 블랙박스였는지는 별개임
      수십 년 전에는 용도와 위상이 더 적었고, 전용 “라우터”가 더 중요했으며, 사람들이 인프라를 순진하게 신뢰했을 뿐임. 시간이 지나며 바뀐 차이는 그런 것들임. 간단히 검색해보면 OpenVPN은 2001년, tinc는 1998년에 나왔음
  • Tailscale의 기술과 보안 생태계 기여는 좋아하지만, 여기 많은 반응과는 반대로 보게 됨
    이건 나쁜 아이디어처럼 느껴지고, 어쩌면 기술이 가장 큰 가치를 줄 수 있는 엔터프라이즈 시장에서의 패배 신호일 수도 있음. Tailscale은 작년에 1억 달러를 투자받았고, 분명 상위 시장으로 성장한다는 가설에 기반했을 것임
    이 파트너십은 개인 소비자에게는 가치가 있겠지만, 큰 기회에서 벗어나는 산만함에 가깝고, 최악의 경우 그 기회를 달성하는 데 역효과일 수도 있음
    개인 소비자 만족이 B2B 성공으로 이어지는 플라이휠이라는 반론도 별로 확신이 안 듦

    • 괴짜들을 행복하게 만드는 게 기업 판매로 이어진다는 통계가 계속 나오고 있음. 우리도 괴짜라서 잘 앎: https://tailscale.com/blog/free-plan/
      우리가 직접 원하고 친구들과 동료 괴짜들도 좋아할 만한 걸 만들 수 있고, 그게 기업 판매로도 이어진다면 안 할 이유가 없음
    • Tailscale은 직원이 많고, WireGuard 클라이언트 프로그래밍에 작은 패치를 더한 뒤 Mullvad 계정 프로비저닝을 붙이는 건 꽤 적은 노력처럼 보임
      그동안 공짜로 쓰던 괴짜 고객에게서 반복 매출도 얻는 꽤 멋진 기능임
    • 실제 변경 대부분은 Tailscale 쪽에서 이뤄지고, 사용자가 자기 설정을 통해 Mullvad를 프록시처럼 쓰게 하는 구조라 Mullvad에게 큰 산만함은 아닌 듯함
      Tailscale이나 Tor처럼 방향성이 비슷한 조직과 협업하는 건, 다른 VPN 경쟁사들처럼 수상한 사업 모델에 손대지 않고 사용자층을 늘리는 좋은 방법으로 보임
    • 지난여름 스타트업의 세 번째 엔지니어 자리에서 퇴사했음. 그곳에서 WireGuard와 EC2로 자체 VPN을 굴리지 말고 Tailscale을 쓰자고 1번, 2번 엔지니어를 필사적으로 설득했지만 실패함
      제품이 너무 마법 같아서 모두가 의심했음. 집에서는 쓰고 있었고, 어떻게든 설득하려고 애썼음
      이건 제품의 “메시” 기반을 깨기 위한 장기 투자에 더 가까워 보임. 그 마법 같은 부분이기도 하고 동시에 문제이기도 함. 외부자 입장에서 메시의 보안 모델을 설명할 수 없었고, 일부 댓글에 따르면 모바일 기기 배터리 문제도 일으키는 듯함
    • 속도에는 악몽일 수밖에 없어 보임
      별도의 터널을 두 개 만들고 그걸 통해 인터넷을 탐색한다면, 정적 HTML 페이지가 아닌 스트리밍이나 거의 모든 사용이 고통스러울 것임
  • Mullvad가 최근 많은 일을 하고 있고 정말 마음에 듦
    비슷한 방향을 추구하는 회사들과의 파트너십을 통해 탈중앙화 오픈소스 생태계를 만들어가는 느낌임. 보안을 좋아하는 쪽의 “해커”가 꿈꾸던 모습에 가까움
    다음은 Matrix나 Signal이 될지 궁금함. Signal은 가능성이 매우 낮겠지만, “표현이 실제 의미를 갖는 생태계”로 움직인다는 말이 현실이 되길 꿈꿔볼 수는 있음
    오픈소스와 공개 프로토콜 기반 제품들이 조화롭게 동작하는 세상을 보고 싶음. 사실 그런 모습은 포스트 희소사회에 꽤 가까워지기 전까지는 못 볼 줄 알았음

  • tailscaled는 root로 실행됨. 기능을 잃지 않고 격리할 방법이 있는지 궁금함
    내 네트워크의 여러 기기를 연결하므로 Tailscale 취약점은 영향이 큼. 최근에도 거의 10개 CVE가 있었음. 표준 클라이언트-서버 방식에서는 클라이언트를 사용자 공간 WireGuard로 실행할 수 있어 이런 문제가 덜함
    Tailscale로 포트를 직접 열지는 않지만, 더 정확히는 Tailscale에 외주를 주는 셈이라 여전히 밤잠이 편하지 않음

    • 사용자 공간 모드가 선택지일 수 있음. TUN 없이, 시스템 네트워크 배선을 건드리지 않고 실행하지만 성능은 희생됨: https://tailscale.com/kb/1112/userspace-networking/
      권한 없이 Tailscale을 실행하는 건 어렵다. tailscaled가 네트워크를 설정할 수 있어야 하고, Tailscale SSH를 켜면 설정된 사용자 세션도 만들 수 있어야 하기 때문임
      SSH가 필요 없고 이 도전과 유지보수 부담을 감수할 사람에게는 가능함: https://tailscale.com/kb/1279/security-node-hardening/
    • 커널에서 빼내는 사용자 공간 네트워킹 모드가 있음: https://tailscale.com/kb/1112/userspace-networking/
    • 틀릴 수도 있지만, 설정할 때 한 번만 root로 실행하면 되는 걸로 알고 있음. 데몬은 root가 아닌 사용자로도 잘 실행 가능함
      근거는 Arch에서 그렇게 쓰고 있다는 점임
  • 겉보기엔 정말 멋지고, Tailscale과 Mullvad 둘 다 쓰는 입장에서는 훌륭함
    다만 주된 걱정은 프라이버시 누출 가능성임. 정부 기관이 이제 Tailscale을 압박해서 Mullvad ID나 연결을 Tailscale 계정과 연결해 추적할 수 있지 않을까?

  • Tailscale이 최근 쿠바 국적자의 서비스 접근을 차단해서 개인적으로는 매우 유용했을 기회를 놓쳤음. 나름 이유는 있겠지만, 그래도 단계적으로 만들어가는 서비스 자체는 괜찮다고 봄

    • Tailscale에서 일하지 않고 구체적 이유도 모르지만, 쿠바 관련 미국 수출 통제와 제재는 꽤 복잡하고, 합리적 정책이라기보다는 역사적·현재적 정치 압력 때문에 설계된 측면이 큼
      예전에 미국 자선 비영리단체를 이끄는 일에 관여했을 때, 오바마 시절 쿠바의 기술 콘퍼런스 참석 비용을 누군가에게 지원하려고 한 적이 있음. 쿠바인이 다른 곳의 기술 콘퍼런스에 가는 비용이었는지도 모르겠음
      실제로 성사시키긴 했지만, 변호사와 상담하고 상황 세부사항을 적용 규칙과 대조하고, 관련자들이 그 규칙 안에 머물겠다고 약속해야 했음
      추측하자면 Tailscale이나 의존하는 제공자 중 하나가 쿠바 특화 미국 법적 의무를 준수하려고, 또는 최소한 위반 위험을 줄이려고 쿠바인을 차단하는 것 같음
      적어도 GitHub는 제재에도 불구하고 더 좁게 금지된 개인·단체를 제외하면 쿠바인이나 쿠바 내 사용자에게 대부분의 제공물을 합법적으로 제공하는 방법을 찾았음. Tailscale 클라이언트와 Headscale 서버의 오픈소스 코드를 얻을 수 있다면 Tailscale 소프트웨어의 이점은 어느 정도 누릴 수 있음
    • 중소기업은 안전하게 가는 편이고, 미국 국무부가 말하는 걸 다룰 자원이 별로 없음
      Google도 일부는 따름: https://support.google.com/google-ads/answer/6163740?hl=en
    • Tailscale이 대형 하이퍼스케일 클라우드 제공자 서비스를 쓴다면 선택권이 없었을 가능성이 큼
    • 외국 국적자에게서 특히 VPN 접근을 끊는 식의 수출 통제나 금수 조치는 정말 멍청하다고 봄
    • 자체 headscale 제어 서버를 돌리고 그 클라이언트를 같이 쓸 수 있음: https://github.com/juanfont/headscale
      설정은 훨씬 많이 필요하지만 선택지는 됨. 한동안 headscale을 자체 호스팅하고 있는데 꽤 안정적임
  • 이미 Mullvad 고객이라면 이걸 기존 계정에 통합할 방법이 있는지 궁금함
    지금은 tailnet을 통해 Mullvad를 쓰고 싶을 때, 집의 Linux 박스를 출구 노드로 설정하고 그 박스가 모든 트래픽을 자동으로 Mullvad를 통해 보내게 함. 집의 그 Linux 박스에서 이미 Mullvad 비용을 내고 있으니 내게는 추가 비용이 없음

  • 최근 몇 년 사이 VPN 사용이 왜 폭발적으로 늘어난 것처럼 보이는지 이해를 돕고 싶음
    회사 기기 같은 전형적 사용 사례는 알지만, 그런 건 수십 년 전부터 있었으니 주요 원인 같지는 않음. 지난 3년 이상 대규모 성장이 일어난 듯한 배경이 뭘까?

    • 요즘 독립 창작자 콘텐츠의 협찬 광고 읽기에서 공포·불확실성·의심이 꽤 많이 뿌려짐
      그래서 대중에게 “VPN”이라는 말은 “내가 제어하는 네트워크에 어디서든 접근하게 해주는 것”이 아니라 “트래픽을 특정 지리 위치로 라우팅하게 해주는 것”에 가까워졌음
      “연결을 안전하게 한다”, “추적을 막는다” 같은 반쪽짜리 진실이 보충 설명 없이 나오는데, 실제로는 기기와 브라우저 지문이 지리 위치보다 사용자를 식별하는 데 더 큼. HTTPS가 있으면 트래픽은 이미 암호화되어 있고, DNS-over-HTTPS나 TLS 제공자도 어디로 가려 했는지 가려주므로, 주장되는 이점 상당수는 거의 뱀기름에 가까움
      다만 지역 제한 콘텐츠를 보려거나, 신원을 익명화하기 위해 모호성을 여러 겹 쌓는 전략을 쓴다면 마음껏 쓰면 됨. 대중적 사용이 폭발한 이유는 건전한 수준의 편집증과 인플루언서 마케팅이 섞인 결과라고 봄
    • VPN 시장은 적어도 2009년부터 해마다 상당히 성장해왔음. 다만 최근 몇 년 사이 그 성장이 누적되어 절대 규모가 커진 것임
      고객군은 이렇게 봄: 온라인 프라이버시에 관심 있는 사람, 검열 우회에 관심 있는 사람, 로컬 ISP의 도청으로부터 자기 기계와 “인터넷” 사이의 안전한 네트워크 채널을 원하는 사람, 지리적 제한 우회를 원하는 사람
      인터넷의 성격과 가장 중요한 프로토콜인 IP가 작동하는 방식 때문에, IP 주소를 바꾸는 것은 온라인 프라이버리 보호에 필요하지만 항상 충분하지는 않은 단계임. 이 사실은 VPN, Tor, 비슷한 기술의 장기적 관련성을 보여줌
      출처를 밝히자면 Mullvad VPN 공동창업자임
    • Mullvad 유형의 VPN은 대체로 잘 모르는 사람을 겨냥한 마케팅이지만, 경찰국가에 사는 사람이나 토렌트 때문에 성가신 편지를 받는 사람들에게도 쓰임
      Tailscale 유형의 VPN은 주로 앱을 자체 호스팅하면서 인터넷에 공개하지 않고 여러 기기에서 접근하고 싶거나, Starbucks에서 NAS에 접근하고 싶은 사람들이 씀
    • 적어도 Tailscale에 관해서는 Tailscale SSH와 MagicDNS 때문이었음
      sshd를 전혀 만질 필요가 없었고, tailnet에 연결된 기계에는 자동 HTTPS 인증서가 생김. 게다가 무료임
      [1] https://tailscale.com/tailscale-ssh/
      [2] https://tailscale.com/kb/1081/magicdns/
    • 온라인에서 수상한 짓은 하지 않지만, HTTPS를 HTTP 대신 쓰고, ssh를 telnet 대신 쓰고, 가능하면 신용카드 대신 BTC/XMR을 쓰고, 아무것도 안 하는 대신 LUKS 전체 디스크 암호화를 쓰는 것과 같은 이유로 VPN을 씀
      프라이버시를 중요하게 여기고, 프라이버시 강화 도구는 수상한 사람들이 수상한 용도로만 쓴다는 잘못된 인식에 맞서고 싶음
      공중화장실 칸막이 문을 닫는 것과 같은 이유로 VPN을 쓰면 됨
      최근 VPN 사용이 실제로 늘었다는 전제에 꼭 동의하는 건 아님. 그게 사실인지는 모름
  • 흥미롭게도 예전에 Mullvad와 Tailscale을 공존시키려고 연결 시 실행하는 스크립트를 작성했음. 관심 있는 사람이 있다면 NVPN용도 있음
    DOMAINS=(login controlplane log derp1-all derp2-all derp3-all derp4-all derp5-all derp6-all derp7-all derp8-all derp9-all derp10-all derp11-all derp12-all derp13-all derp14-all derp15-all derp16-all derp17-all derp18-all derp19-all derp20-all derp21-all derp22-all derp23-all derp24-all)

    FWMARK=$(wg show $1 fwmark)

    for d in ${DOMAINS[@]}; do
    IPS=$(dig +answer -4 $d.tailscale.com +short)

    for IP in ${IPS[@]}; do
    iptables -I INPUT --in-interface tailscale0 -j MARK --set-mark $FWMARK
    iptables -I OUTPUT --out-interface tailscale0 -j MARK --set-mark $FWMARK

    iptables -I INPUT -d $IP/32 -j MARK --set-mark $FWMARK
    iptables -I INPUT -s $IP/32 -j MARK --set-mark $FWMARK
    iptables -I OUTPUT -d $IP/32 -j MARK --set-mark $FWMARK
    done;

    done;

    iptables -I OUTPUT -d 100.100.100.100/32 -j MARK --set-mark $FWMARK
    iptables -I OUTPUT -s 100.100.100.100/32 -j MARK --set-mark $FWMARK
    iptables -I INPUT -d 100.100.100.100/32 -j MARK --set-mark $FWMARK
    iptables -I INPUT -s 100.100.100.100/32 -j MARK --set-mark $FWMARK

    • 첫 줄은 이렇게 단순화할 수 있음
      DOMAINS=(login controlplane log derp{1..24}-all)
    • wg show $1$1은 무엇이고, 이 스크립트는 언제 어떻게 실행하는지 궁금함
    • 여기서는 코드 블록을 ```가 아니라 두 칸 들여쓰기로 만듦