Tailscale を使ってみた

便利の一言。

warning

この記事ではインストール方法、具体的な使用方法を記載していません!!

Tailscale ってなんや?

いわゆる VPN ってやつです。

---
config:
  theme: redux
---
flowchart RL
 subgraph cs["Client Side"]
        app["App<br>ex: safari edge"]
        cvpn["VpnApp"]
  end
 subgraph vs["Server Side"]
        sapp["App<br>ex: nginx mysql"]
  end
    svpn["VpnServer"] == Vpn Tunnel === cvpn
    sapp -- Internet --- svpn
    cvpn -- LAN<br>Host Router --- app

原理はともかく、トンネルと呼ばれる仮想専用線で、ある部分(上の図だと「VpnServer」)まで直接データをやりとりするやつです。
トンネルにはオプションで暗号化を施すことができ、上の図だと「VpnApp」から「VpnServer」の間まで暗号化されます。

note

Tailscale などの最新 VPN は標準で暗号化され、無効化できません。

VPN のメリット

  • 専用線より安い
    そもそも専用線とは、自社や NTT のダークファイバーなどを用いて、拠点間を直接結ぶものが一つ挙げられます。
    外部と接しないためにセキュリティーが高いというメリットがあります。1
    しかし、維持費が高い
    VPN は暗号化処理を施すことで、専用線同等のセキュリティを確保できます
  • 内部ネットワークを繋げられる
    専用線のメリットではありますが、内部専用のネットワークを繋げられます
    通常の通信の場合は、サーバーごとにグローバル IP アドレスの取得が不可避ですが、内部ネットワークであればプライベート IP アドレスで通信することができます。

warning

VPN のセキュリティは、暗号化処理によって変わります。
日記さんは、SSH や HTTPS で使われる OpenSSL を用いるwireguard、openvpnなどは安全だとよく耳にします。

tip

プライベート IP の枯渇という別の問題は一旦目を逸らすこととする

VPN のデメリット

  • 侵入経路の糸口に繋がる
    これが非常に厄介。内部ネットワークは**信頼のもと成り立つことが多いので、**一度侵入されると回復が非常に困難です。
    侵入経路は簡単に、2 パターンあります
    • 認証基盤が脆い
      VPN には暗号化に加えてユーザー認証があります。 ログイン処理。
      このおかげで 内部と直接つながる VPN への侵入を防げるのですが、 脆いと侵入されるのは簡単に想像できますよね。
    • 外からきたひとが勝手に VPN を使い、そこから侵入
      内部ネットワークへつながるトンネルを勝手に作ることになるので、VPN の使用を禁じる組織は多いそうです。
  • トラブルが連鎖する
    専用線同様のリスクとして、一つの拠点が陥落すると、複数の拠点が同時に陥落するという問題があります。
    内部ネットワークを繋げるというのは、拠点を繋げることと同じで、守るべき部分が増えてしまいます。
  • ラグくなる
    通信暗号化処理を挟むので、通信速度が落ちます。ping 悪化します。

note

VPN の使用を禁じるのは難しい。

最近の VPN だと、HTTPS などと同様な通信にしか見えないという特性を持ちます。2 これは、OpenSSL が IP とポート番号を除いたほどんどの情報を暗号化してしまうからです。(OSI レイヤーだと L5 以降。 IPSec なら L3 以降、つまりポートも隠れる)

結果的に VPN の通信をブロックすることが難しいです。 もはや利用者の良心に頼るしかない

Tailscale の凄さ

Tailscale は色々と強いです。

  • NAT 問題を回避できる プライベート IP アドレスは NAT によって変換されてしまうため、外部から直接通信ができないです。
    Tailscale は、ゲーム機などで用いられてる技術を VPN に応用し、このトラブルに対処します3
  • (ほとんどの場合は)P2P で通信できる
    クライアント間で VPN を繋ぐことができます。 サーバーよりも物理的距離が縮まり、早くなるケースがあります。4
  • 必要な通信のみを VPN に通すことができる
    個人的にはこれが熱い。 対外部通信は外部へ、対内部通信は VPN を通すと言ったことができます。

設定例とか

  • 内部 DNS を設定する
    PC の名前を変えれば ok。

    • windows
    • macOS/IOS/iPadOS 等: 設定/一般/情報/名前 で変更可能
    • Linux など: /etc/hostname などで変更可能

    例えば、adwpc と名付ければ、同じ tailscale に所属するもの同士、adwpc とアドレスを入力すれば通信できます。

  • exitnode を設定する
    一般的な VPN と同じように動作するものです。

    • 使われる側
      tailscale set --advertise-exit-node=true
      tailscale up --advertise-exit-node=true
      ただし、linux ではnet.ipv4.ip_forward有効化しないとダメらしい
      admin consoleで exitnode の有効化も必要5
    • 使う側
      windows や mac、iOS などではExitNode を選択可能。選択できるのは使われる側の設定を全て行った時
  • 特定 IP の広告
    tailscale は標準では内部ネットワーク(LAN)を晒さない。晒すのはあくまで自分の端末のみ。
    IP を晒したいなら、--advertise-routes xxx.xxx.xxx.xxx/nnと設定すれば、晒せる。

note

Firewall の設定は、大抵の場合自動で行ってくれます。

tailscale あるある

あるあるネタです。

  • プライベート IP アドレスが使えない!!
    大抵は--accept-routes, --exit-nodeが true の時です。 これは上記 exitnode と、特定 IP の広告を受け入れてる時です。
    IP が被ったりして、通信ができなくなることがあります。

  • 通信ができない!! tailscale の ACL 関係の問題や、ライセンス的な問題のことが多いと思います。
    後者ですが、tailscale は課金ありなので、ライセンスも確認してください。

終わり

便利だね。

参考・補足

参考

補足

1

ここでのセキュリティとは、盗聴リスクの低減、外部からの侵入によるウイルス注入、情報漏洩など

4

主に NGN 網内折り返しの通信の場合。 nuro であっても、nuro 使用者同士であれば早くなる模様。

ご意見募集中

当サイトのリポジトリにて、issue 募集中です!