世界を動かす技術を、日本語で。

Tailscaleの使い方

2025年8月6日原文(chameth.com)

概要

  • Tailscale は、WireGuardベースの VPNオーケストレーションサービス
  • 個人利用 なら無料枠でほぼ全機能が利用可能
  • MagicDNSやfunnel など便利機能が多数
  • ACLやタグ管理 による細かなアクセス制御が可能
  • 自己ホストやサーバ管理 に最適な現代的VPNソリューション

Tailscaleの概要と導入メリット

  • TailscaleWireGuard をベースにした VPN管理サービス
    • クライアントは オープンソース として公開
    • Headscale というサードパーティ製コントロールサーバも存在
  • 個人利用 に十分すぎる 無料プラン を提供
  • 多様なデバイス (PC、スマホ、サーバ、Raspberry Pi等)に対応
  • ネットワーク設定不要 で、インストール&ログインだけで利用開始
  • Tailscale IPアドレス でプライベートネットワーク構築

基本的な接続方法とSSHサポート

  • クライアントインストール後、コントロールサーバで認証
  • 異なるネットワーク間 でも シームレス接続 が可能
  • Tailscale SSH 機能により、 公開鍵やパスワード不要 でSSH接続
    • Tailscaleログイン済みなら、そのままSSH利用
    • スマホからのSSHも簡単

サービス単位での公開とMagicDNSの活用

  • 個別サービス をノードとしてtailnet上に公開可能
    • 公式DockerイメージやGoライブラリ、サードパーティツール(Centauri、tsp等)対応
  • MagicDNS により、ノード名でのアクセスが可能
    • 例:http://grafana/でアクセス
    • ノード名は自動DNS登録
    • NextDNS など特定のDNSサーバ強制も可能
  • machine.your-tailnet.ts.net 形式のアドレスも利用可能
    • コントロールパネルで再生成も可

funnel・serve機能とTLS証明書

  • funnel機能 でローカルサービスを HTTPSで外部公開 可能
    • 例:tailscale funnel 127.0.0.1:8080でグローバル公開
    • 訪問者はTailscale不要
  • serve機能 でtailnet内限定のサービス公開
    • 開発やモバイル端末からのテストに便利

認証フローのカスタマイズとプロキシ認証

  • OIDCプロバイダ (例:KeyCloak)による 独自認証フロー 構築
    • GitHubなど外部認証への依存を低減
    • セッション期間も自由設定
  • Tailscale経由のHTTPサービス に自動でユーザー情報ヘッダを付与
    • 例:Tailscale-User-Login、Tailscale-User-Name等
    • Grafana、Miniflux、Jelu、Linkding、Seafile 等でプロキシ認証利用可能

ACL・タグによるアクセス制御と失敗談

  • 初期状態 は全ノード間アクセスが可能
  • SSH再認証root制限 でセキュリティ強化
  • タグ付与 で役割ごとにノード管理
    • user、server、app、integration等
  • タグ運用の失敗 :全デバイスにuserタグを付与し、自身の認証が消失
    • タグ削除には再登録が必要
  • グラント設定 で柔軟なアクセス制御
    • 例:ユーザーデバイスのみ全アクセス、サーバ・アプリ間は限定的アクセス

その他の便利機能

  • Exit Node 機能でインターネットトラフィックもTailscale経由に
    • 信頼できないルータ環境や地域偽装に有効
  • Tailscale lock で新規ノード追加時の認証強化
  • ファイル共有機能 やその他多数の便利機能
  • サーバ管理やセルフホスト に必須級の現代VPNとして推奨

まとめ

  • Tailscale は現代的で 使いやすいVPN管理 サービス
  • 無料枠 でも十分な機能
  • サーバ・サービス管理個人のプライベートネットワーク 構築に最適
  • 今後の機能追加や発展 にも期待

Hackerたちの意見

Tailscale、めっちゃ好きなんだけど、携帯のバッテリーがすぐ減っちゃうし、WSL起動するたびにresolve.confが消えちゃうんだよね。もうちょっと運が良ければなぁ。

俺はスマホでZerotierを問題なく使ってるよ。確かに、もうオープンソースじゃないけど、ソースにはアクセスできるし、切り替える手間をかける価値はないかな。

ストレートにWireGuardを一つのポイントに繋げるのは全然気にならないね。

なんか、もうちょっと高級なngrokみたいだね。全部を繋げちゃうのはちょっと怖いな。インターネットに安全に公開したいものは1、2個あるけど(Plexとか)、外出中にそこまでリスクを冒すほど必要なものはないかな。これって自己ホスティング用って感じ?

なんか、もうちょっと高級なngrokみたいだね。うん、そうとも言えるし、そうじゃないとも言える。ngrokみたいに使えるし、WireGuardとngrokを設定すればTailscaleと似たようなことができると思うけど、Tailscaleはすぐに使える状態で、洗練されたクライアントとサーバーのアプリが揃ってるんだ。俺はインフラ系じゃなくて、元フロントエンドエンジニアだけど、メディアセンターやファイルサーバーを「野生」に公開する自信を持てるよ。家のサーバーからiPadでコンテンツをJellyfinで見るのは、Tailscaleを使えばディズニーやNetflixと同じくらい「簡単」。クライアントとサーバーをインストールするだけで、あとは…バッチリだよ?

モバイルのトラフィックをAdGuard Home(またはPiHole)経由でルーティングするのはゲームチェンジャーだね。公共のWi-Fiを使ってる時に、自宅のネットワークを通して出口ノードを使うのもいい感じ。

PlexはすでにUPnPを使ったリモートアクセスをサポートしてるよ。https://support.plex.tv/articles/200289506-remote-access/

SSHの話だけど、Tailscaleは特別にサポートしてて、Tailscaleネットワークからポート22へのすべての接続を処理して、認証も自分でやってくれるんだ。公開鍵やパスワードは不要で、Tailscaleにログインしてれば、そのマシンにもログインできる。スマホからSSHする時には特に便利だよ。適切な認証管理がちょっと面倒だからね。これにはちょっと不安があるな。そんなのは避けたい。俺はTailscaleじゃなくてZerotierを使ってるけど、原則は同じだよ。俺のノートパソコンとスマホはサーバーに繋がってるし、これらのマシンはすでにインターネットに接続されてるから、仮想ネットワークに繋げてもリスクはないと思う。(少なくとも、上記のような機能を使わない限りね。)俺が得られるのは、すべてのデバイスのIPアドレスが分かることだけで、SSHサーバーが動いてれば接続できる能力がある。外出中の主な利点は、どのデバイスがオンラインかが分かることだね。

俺も似たような設定を使ってるけど、このガイドに従う人には、認証する同じtailnetの裏にカスタムOIDCサーバーをホスティングするのはおすすめしないよ。設定の問題があると完全にロックアウトされちゃうから、TailscaleのサポートにOAuthプロバイダーを再有効化してもらう必要があるし、それは元に戻せないんだ。俺はOAuthプロバイダーを使ってTailscaleにログインして、内部でKeycloakをOIDCプロバイダーとしてサービス間認証に使ってる。

Tailscaleの使い方、いいね!俺も似たようなセットアップしてるけど、認証なしでNebulaに頼ってるよ! https://github.com/slackhq/nebula

tailscale funnelをダミーサーバーpython -m http.serverに使ってみたら、10秒もしないうちにボットが脆弱性をチェックし始めた。Tailscaleは、これを有効にするとHTTPS証明書が発行されて公開台帳に載るって警告してくれるけど、こんなに早いとは思わなかった。127.0.0.1 - - [10/Aug/2025 00:11:34] "GET /@vite/env HTTP/1.1" 404 - 127.0.0.1 - - [10/Aug/2025 00:11:34] コード404, メッセージ ファイルが見つかりません 127.0.0.1 - - [10/Aug/2025 00:11:34] "GET /actuator/env HTTP/1.1" 404 - 127.0.0.1 - - [10/Aug/2025 00:11:34] コード404, メッセージ ファイルが見つかりません 127.0.0.1 - - [10/Aug/2025 00:11:34] "GET /server HTTP/1.1" 404 - 127.0.0.1 - - [10/Aug/2025 00:11:35] コード404, メッセージ ファイルが見つかりません 127.0.0.1 - - [10/Aug/2025 00:11:35] "GET /.vscode/sftp.json HTTP/1.1" 404 - 127.0.0.1 - - [10/Aug/2025 00:11:35] コード404, メッセージ ファイルが見つかりません 127.0.0.1 - - [10/Aug/2025 00:11:39] "GET /s/7333e2433323e20343e2538313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties HTTP/1.1" 404 -

そうだね、CT(証明書透明性)については複雑な気持ちがある。みんながその情報を使ってスキャンしてるし。もし、あなたがファンネルしてるのが自宅の接続なら、実質的にDDoSを呼び寄せてるようなもんだ。一つ(明らかに?)のアドバイスは、できるだけ高い非標準ポートに自分のものを置くことだね。そうすれば接続数が劇的に減るよ。

Hacker Newsで議論の続きを見る