VPNの悩ましさ
外部からのアクセス、認証用にサーバやネットワーク機器を用いて行い、プライベートネットワークへの接続を必要とするケースは様々なところで利用してきましたが、
そのための踏み台/proxyサーバやユーザ用VPN機器を中継する形をとると、以下でボトルネックとなる場合がある
- 作業ユーザー増、サーバやIoT機器等では接続台数、セッション/コネクション数が多くなり、さばききれなくなる
- トラフィック増に対して、集約箇所のサーバやNWとその帯域などに変更をするため対処がしずらい
接続台数が増えると接続が重くなり、複数に増やすとIDや鍵の情報管理が煩雑になり、また、プライベートIPを使う企業などの制限されたネットワーク環境下で必ずしも使えるわけでもないので、対処に困るというということがありました。
wireguard, tailscale
wireguardは比較的新しい実装であり、UDPを用いてのポイント・ツー・ポイント接続を実現しているアプリケーション・プロトコルである。tailscaleはwireguardをベースとし導入や接続を管理するサービスを提供している
-
wireguard - ポイント・ツー・ポイント接続でのVPNのアプリケーションとプロトコル
tailscaleの何が嬉しいの?
- クライアント同士が直接接続するメッシュ型のNWが使え、中継によるボトルネックがない
- 制限されたNW環境でも利用が可能
- 中継/クライアントNW情報の管理が不要となる
tailscaleの仕組み
-
https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp
-
主な要素
- メッシュネットワーク
- key exchange and coordination : wireguardの鍵管理と認証サーバの機能
- DERP(Designated Encrypted Relay for Packets) : STUN,TURNサーバ相当の役割でhttps通信での実装を利用しNAT環境化でのクライアント情報の受け渡し&リレー処理
試してみる
自宅と別の場所にサーバを設置しており、mac,andoridクライアントを利用しているため、接続してみました。
-
セットアップ
- linux,mac,pc,android等は標準でクライアントappがあり、インストールと起動だけで可能、接続先情報のやり取りは不要
- 100.x.x.xのIPが自動で割当され、クライアント間の通信が可能
-
接続テスト
それぞれで別のNAT配下のクライアント同士にて接続先の情報を確認、確認にiftop利用、sshや後述のTailscale CLIを実行- クライアントは以下への接続
- 1.複数のDERPへの接続
- 2.接続先のネットワーク機器(NAT)のグローバルIPへの接続
- クライアントは以下への接続
(一部省略)
-
=> XXXXXXXXXXXXXX.ppp-bb.dion.ne.jp 277Mb 268Mb 202Mb <= 5.46Mb 5.44Mb 4.14Mb
-
=> derp7-tok.tailscale.com 208b 42b 94b <= 208b 42b 59b
-
=> derp6-blr.tailscale.com 0b 0b 14b <= 0b 0b 12b
-
=> derp3-sin.tailscale.com 0b 0b 14b
- ssh実施時のでのサーバー間の通信トラフィックは2.のトラフィックのみが増加、接続先ローカルネットワークの最大速度と同程度までの速度が出る
- 参考で確認したCPU使用率はローカル通信より微増程度で負荷は高くない
-
- 操作関連
- 管理画面
- ![screen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2286841/eca37ad3-2c30-6497-ded1-5e70bf68c6d2.png)
- [Tailscale CLI](https://tailscale.com/kb/1080/cli/)
- 起動停止以外に、一覧の確認(status)、ping,機能等のコントロールwebサーバ(web),ファイル転送(file)
- 例、linuxから接続先にファイル送信する場合
```
tailscale file cp 1gb.tmp clinethostname:
```
- アプリでのファイル転送に関しては[Taildrop](https://tailscale.com/kb/1106/taildrop/)が用意されている
## 所感
個人で扱うには簡単であり、台数が増えても用意に使えるものである、よくできている
- 実際にファイル転送までの事前準備が手軽、wireguardに必要な設定はなしでシンプルにできている、
- ファイル転送によるネットワークの処理が重たくなることもなく高速で、パフォーマンスは実用的
- 管理画面の機能は現状少ないが、alphaなどの機能や他のサービスと組み合わせて使っていく必要がある(認証,DNS,vpcネットワークをまたぐ際の中継,e.t.c.)
かなり有用であるが、企業で扱うにはアルファ提供しているような機能拡張、耐障害性やアップデート等の追加が必要であり、また、頻繁に更新されているところから、セキュリティ周りの検証が必要で、今後別途確認してみたい
## その他
- きっかけ
- [100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?](https://internet.watch.impress.co.jp/docs/column/shimizu/1303751.html)
- wireguardやその対応製品等は以前から知ってましたが、悩ましく発展途上だったのでなんとなく保留してました
- クライアントの自動アップデートや接続先に任意の処理をフックさせるなど他サービスとの組み合わせを作るのは、どこかで試したいですね