OpenSource-Hub

tailscale

CLI 도구

tailscale/tailscale

가장 간편하고 안전한 WireGuard VPN 도구, 이중 요소 인증 통합.

개요

Tailscale은 WireGuard 기반의 무설정 VPN 솔루션으로, 이중 인증과 싱글 사인온(SSO)을 내장하고 있습니다. 오픈소스 저장소에는 데몬과 명령줄 도구가 포함되어 있으며 Linux, Windows, macOS를 지원합니다. 복잡한 방화벽 설정 없이도 안전한 P2P 연결을 구현할 수 있습니다.

README 미리보기

# Tailscale\n\nhttps://tailscale.com\n\nPrivate WireGuard® networks made easy\n\n## Overview\n\nThis repository contains the majority of Tailscale's open source code.\nNotably, it includes the `tailscaled` daemon and\nthe `tailscale` CLI tool. The `tailscaled` daemon runs on Linux, Windows,\n[macOS](https://tailscale.com/kb/1065/macos-variants/), and to varying degrees\non FreeBSD and OpenBSD. The Tailscale iOS and Android apps use this repo's\ncode, but this repo doesn't contain the mobile GUI code.\n\nOther [Tailscale repos](https://github.com/orgs/tailscale/repositories) of note:\n\n* the Android app is at https://github.com/tailscale/tailscale-android\n* the Synology package is at https://github.com/tailscale/tailscale-synology\n* the QNAP package is at https://github.com/tailscale/tailscale-qpkg\n* the Chocolatey packaging is at https://github.com/tailscale/tailscale-chocolatey\n\nFor background on which parts of Tailscale are open source and why,\nsee [https://tailscale.com/opensource/](https://tailscale.com/opensource/).\n\n## Using\n\nWe serve packages for a variety of distros and platforms at\n[https://pkgs.tailscale.com](https://pkgs.tailscale.com/).\n\n## Other clients\n\nThe [macOS, iOS, and Windows clients](https://tailscale.com/download)\nuse the code in this repository but additionally include small GUI\nwrappers. The GUI wrappers on non-open source platforms are themselves\nnot open source.\n\n## Building\n\nWe always require the latest Go release, currently Go 1.26. (While we build\nreleases with our [Go fork](https://github.com/tailscale/go/), its use is not\nrequired.)\n\n```\ngo install tailscale.com/cmd/tailscale{,d}\n```\n\nIf you're packaging Tailscale for distribution, use `build_dist.sh`\ninstead, to burn commit IDs and version info into the binaries:\n\n```\n./build_dist.sh tailscale.com/cmd/tailscale\n./build_dist.sh tailscale.com/cmd/tailscaled\n```\n\nIf your distro has conventions that preclude the use of\n`build_dist.sh`, please do the

FAQ (5)

문제 해결
Tailscale Android 스플릿 터널링 allowlist 모드 사용 시 DNS 이름 확인 실패를 해결하는 방법

근본 원인: Android용 Tailscale이 allowlist(포함) 모드로 스플릿 터널링을 실행할 때, Tailscale 앱 자체가 허용 목록에 자동으로 추가되지 않아 Tailscale 프로세스가 VPN에서 제외됩니다. 이로 인해 서브넷 라우팅이 정상적으로 작동하더라도 허용된 앱이 Tailscale의 DNS 리졸버에 접근할 수 없습니다. allowlist 모드에 MDM이 필요하다고 기술된 기존 문서는 오래된 정보입니다. 해당 기능에는 더 이상 MDM 제한이 없습니다. 이 문제는 Android 17 및 기타 지원되는 Android 버전에서 Tailscale v1.98.8에 영향을 미칩니다.

해결 방법:
1. 즉각적인 임시 해결 방법: 스플릿 터널링을 기본 blocklist 모드로 다시 전환하고, allowlist 모드에서 허용했던 정확한 앱 세트를 제외한 모든 앱을 차단합니다. DNS 확인이 즉시 복원됩니다.
2. 영구 수정: 공식 패치는 https://pkgs.tailscale.com/unstable/에서 제공되는 unstable 빌드에 포함되어 있습니다. 이 unstable 빌드로 업그레이드하여 문제를 해결하거나, 수정 사항이 포함된 향후 stable 릴리스를 기다리세요.

원본 Issue #20978
문제 해결
노드가 이미 advertised tags와 함께 Running 상태일 때, 아무 플래그 없이 'tailscale up'만 실행하면 왜 hang되어 절대 반환되지 않나요?

이것은 Tailscale 1.102.5 (Linux)의 알려진 버그입니다: 노드가 이미 Running 상태이고 AdvertiseTags가 설정되어 있는 경우, 플래그 없이 tailscale up만 실행하면 무한히 블록되다가 결국 context canceled 오류와 함께 종료됩니다 (예: timeout 하에서 exit 124). 노드는 온라인 상태를 유지하며 정상적으로 작동하고, CLI만 멈춥니다. 해결 방법:

1. 명령을 실행하기 전에 상태를 확인하고, 이미 실행 중이면 건너뜁니다:

if [ "$(tailscale status --json --peers=false | jq -r .BackendState)" != "Running" ]; then
  sudo tailscale up
fi

2. tailscale up을 반드시 실행해야 하는 경우(예: 상태 복구), 태그를 포함한 기본값이 아닌 모든 플래그를 전달하고 timeout으로 감싸세요:

timeout 30 sudo tailscale up --advertise-tags=tag:your-tag --ssh --accept-routes

기존 플래그 전체를 포함하여 up을 다시 실행하면 CLI가 태그 변경이 없음을 감지하고 빠른 edit-and-return 경로를 사용하므로 즉시 반환됩니다.

근본 원인: 태그 플래그 없이 up만 실행하면 'simpleUp'으로 처리되므로, CLI는 태그가 변경된 것으로 간주하여 빠른 justEdit 반환 경로를 비활성화한 후, 발생하지 않는 IPN Running 알림을 계속 기다리게 됩니다. 이는 tailscaled가 상태 전환을 수행하지 않기 때문입니다 (WantRunning이 이미 true임). 태그가 없는 노드는 영향을 받지 않으며 즉시 반환됩니다.

원본 Issue #21774
문제 해결
macOS 앱에서 Safari로 Tailscale Admin Console을 열 때 발생하는 'Error 401 - bad tailscale-authstate2 cookie' 오류를 해결하는 방법

이 오류는 Safari에서 Apple SSO를 사용하는 상태에서 Tailscale macOS 메뉴 바 앱의 Admin Console 버튼을 클릭할 때 발생합니다. 앱이 controlplane.tailscale.com/login을 열면 해당 서브도메인에 tailscale-authstate2 쿠키가 설정되지만, Apple의 OAuth는 login.tailscale.com으로 다시 리디렉션됩니다. Safari의 엄격한 쿠키 스코핑으로 인해 쿠키가 서브도메인 간에 전송되지 않아 401 오류가 발생합니다(Chrome은 Lax+POST 완화 유예 기간 덕분에 정상 작동합니다).

해결 방법: 앱의 Admin Console 버튼을 사용하는 대신 브라우저에서 https://login.tailscale.com/admin으로 직접 이동하세요. 로그인과 쿠키가 OAuth redirect_uri와 동일한 도메인에 유지되므로 Apple SSO가 성공합니다.

영구적인 해결책(Tailscale 서버 측 변경 필요): tailscale-authstate2 쿠키에 Domain=.tailscale.com을 설정하거나, macOS 앱이 https://login.tailscale.com/admin을 직접 열도록 업데이트하세요.

원본 Issue #20342
문제 해결
Mullvad의 공용 DNS 서비스 종료 이후(194.242.2.2가 작동하지 않음) Mullvad exit node를 사용할 때 DNS가 끊기는 문제를 해결하는 방법은?

Mullvad가 공개 암호화 DNS 서버를 종료하며, 2023년부터 Mullvad exit node에 광고되어 온 리졸버 194.242.2.2가 2026-11-02에 응답을 중단하여 exit node 사용자의 DNS가 작동하지 않게 됩니다. 해결 방법: Mullvad exit node에 194.242.2.2 대신 Mullvad의 터널 내부 리졸버 10.64.0.1을 광고하는 릴리스로 업데이트하세요. 이 리졸버는 터널 내부에서 작동하며 이번 종료의 영향을 받지 않습니다. 수동 해결 방법: exit node DNS 구성을 10.64.0.1을 사용하도록 재정의하세요(Mullvad 터널을 통해서만 접근 가능). 터널 외부에서 Mullvad의 공개 DNS를 사용했다면, Mullvad가 공식적으로 권장하고 현재 후원하고 있는 Quad9(9.9.9.9)으로 전환하세요.

원본 Issue #21192
문제 해결
보안 스캐너로 Go 프로젝트를 빌드할 때 발생하는 golang.org/x/net 취약점 경고를 해결하려면 어떻게 해야 합니까?

golang.org/x/net을 v0.59.0에서 v0.60.0으로 업그레이드하고 Go 1.27.2 툴체인을 사용하세요. 다음을 실행하세요:

go get golang.org/x/net@v0.60.0
go mod tidy

Tailscale의 경우, go.toolchain.rev도 Go 1.27.2 툴체인 커밋(186053ab2af2ef8fc43f3c1d1150216e89d4aff0)으로 업데이트한 후 다시 빌드하고 재검사하세요. 이렇게 하면 취약한 코드 경로가 런타임에 사용되지 않더라도 스캐너 탐지 항목이 해소됩니다.

원본 Issue #21723