0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tailscaleについて

Posted at

はじめに

初めて自宅サーバーを立てたとき、学校の先輩に「Tailscale入れてみなよ」と言われて、
正直そのときは なんぞそれ? という感じで、言われた通りインストールして設定も教えてもらい、
よくわからないまま使っていました。

その後サーバーPCを新しくしたタイミングで、自分で一から構築し直すことになり、
「そういえばTailscaleって結局どういう仕組みなんだ?」と思って改めて調べてみました。

概要

基盤技術:WireGuard

  • WireGuardとは
  1. VPNを作るための仕組み(プロトコル)
    暗号化された安全な通信トンネルを作る技術。
    OpenVPNやIPsecの“新しくて速い版”

  2. とにかくシンプルで高速
    CPU負荷が少なく、めっちゃ速い

  3. 最新の強力な暗号技術を使用
    ChaCha20(暗号化)
    Curve25519(鍵交換)

  4. ノード同士が直接通信(P2P)
    仲介サーバーなし。
    自分のPCと相手のPCが WireGuardトンネルで直接つながる。

  5. 公開鍵で認証
    ID/パスワード不要。
    公開鍵と秘密鍵のペアで相互認証する。

  6. UDPで高速通信
    TCPより遅延がないから速い。
    ゲームや動画転送にも強い。

実際のTailscale側の動作

  1. 認証
    Tailscaleにgoogleアカウントなどでログイン
    このアカウントごとに1つのVPNネットワークを作る

  2. デバイスの登録
    各ノードでgoogleアカウントにログインし、talescale up を行うことで
    デバイス名、デバイスの公開鍵、現在のIP、デバイスのバージョン・状態を
    tailscaleコントロールサーバーがVPNグループに登録する

  3. 他のノード一覧を配布
    コントロールサーバーは各ノードに “他のノードの公開鍵+接続情報” を配る
    これでノード同士が「誰と通信すればいいか」を理解する。

  4. STUN/ICEを使ってP2P通信

  • STUN
    自分が外からどう見えているか(グローバルIP+ポート)を教えてくれる仕組み。
  • ICE
    その外側のIP+ポートを使って、相手と直接つながるための“穴あけ”の仕組み。

これを使ってノードが STUN サーバーにUDPを送って、NATの外側のIPとマッピングされたUDPポートを取得する。
STUNで手に入れた候補アドレス同士でUDPホールパンチングを試す。
ICEで確立した 双方向UDPパスの上でWireGuardの暗号化ハンドシェイクを実行。

感想

今までなんとな〜く使ってたけど、仕組みちゃんと調べてみたらめっちゃ画期的じゃん!
ってなる一方で、え? これ普通にNATをだまして突破してない?みたいな裏技感あった。
でもまあ、便利すぎるからこれからも使います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?