7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

センシンロボティクスAdvent Calendar 2021

Day 12

tailscaleで自宅やどこかとセキュアにつなぐ (tailscale, securely connect to home or third places)

Posted at

VPNの悩ましさ

外部からのアクセス、認証用にサーバやネットワーク機器を用いて行い、プライベートネットワークへの接続を必要とするケースは様々なところで利用してきましたが、
そのための踏み台/proxyサーバやユーザ用VPN機器を中継する形をとると、以下でボトルネックとなる場合がある

  • 作業ユーザー増、サーバやIoT機器等では接続台数、セッション/コネクション数が多くなり、さばききれなくなる
  • トラフィック増に対して、集約箇所のサーバやNWとその帯域などに変更をするため対処がしずらい

接続台数が増えると接続が重くなり、複数に増やすとIDや鍵の情報管理が煩雑になり、また、プライベートIPを使う企業などの制限されたネットワーク環境下で必ずしも使えるわけでもないので、対処に困るというということがありました。

wireguard, tailscale

wireguardは比較的新しい実装であり、UDPを用いてのポイント・ツー・ポイント接続を実現しているアプリケーション・プロトコルである。tailscaleはwireguardをベースとし導入や接続を管理するサービスを提供している

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やその対応製品等は以前から知ってましたが、悩ましく発展途上だったのでなんとなく保留してました
- クライアントの自動アップデートや接続先に任意の処理をフックさせるなど他サービスとの組み合わせを作るのは、どこかで試したいですね
7
1
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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?