清水理史の「イニシャルB」

100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?

WireguardフルメッシュVPNを「ゼロコンフィグ」で作れるクラウド型の最新VPNサービス

 とにかく手軽にVPN接続環境を整えたいのであれば、これほど優れたサービスはほかにない。ユーザーがやることは3つだけで、オフィス-社員宅間や拠点間接続など、WireguardベースのフルメッシュVPNを即座に構築できる。

  1. アカウントを取得
  2. クライアントをインストール
  3. GoogleかMicrosoftアカウントでサインイン

 組織で使うのに多少の注意点はあるが、回線の種別やポート転送、ファイアウォール設定などについては一切意識する必要がない上、ファイル共有のようにリンクで「マシンをシェア」することもできる。高価なVPN装置の存在意義が問われる、最新のクラウド型VPNサービスだ。

「tailscale」とは何か?

 著名プログラマーの転職や、2020年末の1200万ドルの資金調達などで、少しずつ話題になっていた「tailscale」。

 遅ればせながら、今回筆者もその実力を体験してみたのだが、実際に使ってみた率直な感想は「こりゃすげえ」というものだ。

 社会的な情勢の変化によって、テレワークの需要が伸び、社員がオフィスのリソースをリモートからも利用できるようにするVPNへの注目が高まりつつある。

 が、その一方で、クラウドを中心に認証とアクセス制御で安全な接続環境を整えるゼロトラストの考え方も広がりつつあったりして、この分野の状況は混沌として、正解が見えない。

 そんな中、登場したのがtalescaleだ。

「tailscale」のウェブサイト

 このサービスをひと口で言えば、ゼロトラスト的な発想も兼ね備えたクラウド型のVPNサービスだ。

UDPベースのVPNプロトコル「Wireguard」がベース

 本コラムでも、これまで何度かWireguardを利用したVPN環境の構築方法を紹介したことがあるが、talescaleのベースとなる技術もWireguardだ。

 Wireguardは、最新のLinux Kernel 5.6でカーネルレベルでサポートされるようになったUDPベースのVPNプロトコル。非常に高速で、設計や扱いがシンプルという特徴を持っている一方で、ファイルベースのコンフィグと接続数が増えた場合の管理が煩雑という課題を持っていた。

 この課題を見事に解消したのが、今回のtailscaleだ。簡単に言うと、クラウド版のWireguard接続管理サービスと言ったところ。

 Wireguardの接続設定や管理を実現するために、ウェブベースの管理画面やクライアントの接続設定をするためのアプリを提供し、接続設定や管理などをほぼ自動化できる。

 このためユーザーは、インターネットに接続できる環境であれば、どこからでもtailscaleを利用したVPN環境を活用できる。オフィスに専用のVPN装置はもちろん不要だし、回線がDS-LiteだろうがMAP-Eだろうが関係ない。ポートやファイアウォールも意識する必要がない。

tailscaleの管理画面。クラウド上でマシンを管理できる

 しかも、何とこのサービスでは、リンクでファイルを共有するのと同じ感覚で、VPN上にある任意のマシンをほかのユーザーとシェアすることまでができるのだ! レガシーなVPNの最新系とでも言ったところだろう。

tailscaleのVPNネットワーク内に接続された端末をリンクでシェア可能。このリンクを受け取ったユーザーは、tailscaleクライアントで手軽にシェアされたマシンにVPN接続可能となる

tailscaleを理解する2つのポイント

 このように手軽さが特徴のtailscaleだが、その仕組みも興味深い。

 まず、tailscaleは、基本的にVPNトラフィックを処理しない。

従来型のVPNネットワーク。各拠点にVPN装置が必要で、それを経由してネットワークが接続されており、トラフィックの集中などが問題になりがち

 tailscaleが提供するには、Wireguard接続設定用のコンフィグやルーティングテーブルなどの生成や配布、管理のみであり、実際のVPN接続はクライアント同士で直接行われ、tailscaleを経由しない。

 いわゆるハブ&スポーク型のVPNのようにtailscaleが接続を取りまとめるのではなく、クライアント同士が直接接続されるメッシュ型のVPNを形成するわけだ。

tailscaleのVPNネットワーク。ユーザーは全てのマシンに直接VPNで接続される
マシン同士はメッシュ状に相互接続される

 これは、従来型のVPNの課題であるゲートウェイへのトラフィック集中を避けられるというメリットがある上、tailscaleに通信内容が閲覧される心配がないことも示している。

 とは言え、どうしても直接接続できない場合のため、tailscaleのアクセスポイントを中継する接続方式も用意されている。しかし、これをユーザーが意識することはない(ちなみに中継拠点は東京にもある)。

中継用のリレー接続もサポートされる
リレーサーバーは東京にも配置されている

 もう1つ、これも画期的だが、tailscaleは認証に外部サービスを利用する。

tailscaleへのログインは、基本的にGoogleかMicrosoftアカウントを利用する(法人向けサービスでは別の方法も利用可能)

 本サービスは、基本的にGoogleアカウントかMicrosoftアカウントで利用する。ほかのクラウドサービスで見かけることが多いが、ログイン時に「Googleでログイン」などと表示される例のあれだ。

 これにより、GoogleアカウントやMicrosoftアカウントで一般的な多要素認証やアカウントポリシーをそのまま利用できる。冒頭で「ゼロトラスト的」と書いたのは、この部分によるものだ。

 従来型のVPNサービスで課題になりがちだったアカウント管理やアクセス制御に、すでに実績と信頼のある外部サービスを活用することができる。

 このようにtailscaleは、Wireguardの接続設定と管理を提供する非常にシンプルなサービスとなっている。

タダで、しかもいろいろな機器で使える!

 こうした仕組みの恩恵もあってか、本サービスは、個人ユーザーにとって大盤振る舞いとも言える無料サービスを提供している。

 ユーザーあたり月10ドルの小規模向け「Connectivity」プランは、正直、もう一声と値切りたい気持ちもあるが、個人向けの「Solo」は無料で100台!までの端末が接続できる。実質的な制限はないと考えても差し支えない。

tailscaleのプランと価格。個人向けの「Solo」は無料で100台まで接続可能

 しかも、Soloプランは基本的にシングルユーザー向けのプランだが、2021年2月1日時点では、まだプランごとの機能制限が適用されないため、ほぼ全ての機能が利用できる(将来的に制限が加わるとされているが日程は明らかではない)。

 このため、「Google Workspace」(旧G Suite)や「Microsoft 365」のアカウントでサインアップした場合は、ドメイン単位での利用が可能となっており、実質的にはSoloプランでも複数ユーザーで運用可能となっている。例えば、abc@impress.co.jpで10台、def@impress.co.jpで10台をそれぞれ接続し、どちらのユーザーからもそれぞれの端末に相互にアクセスするといったことも可能だ(ACLで制限も可能)。

 ただ、この方法は、最初にサインアップしたドメインのユーザーがオーナーとなり、後からサインアップしたユーザーが自動的にその配下に登録されてしまうため、会社のアカウントで勝手にオーナーになってしまうと、社内的に「怒られる」可能性が高い。このあたりはサービス側での改善の余地がありそうだが、とりあえずドメインの管理権限がない場合は、会社のアカウントでサインアップするのは避けた方がいいだろう。

 もちろん、先にも触れたが、リンクでマシンをシェアすることが可能になっているため、例えば会社のアカウントでNASをシェアし、社員それぞれの個人アカウントからシェアされたNASにアクセスするといった使い方は可能だ。無料のSoloプランといっても、実質的な複数ユーザーでの運用が可能となっていると言えそうだ。

 しかも、対応する端末が豊富なことにも驚く。こちらのダウンロードページを見てもらえれば一目瞭然だが、macOS、iOS、Windows、Linux、Androidと一通り揃っているだけでなく、Linuxに関してはAmazon Linux2、CentOS、Debian、Raspberri Pi、Ubuntuなどとほとんどのディストリビューションに対応する。

豊富なクライアントを用意

 さらに、非公式なユーザー制作のものながら、Synology NASQNAP NAS向けのモジュールも存在する(QNAP版は自分でビルドが必要)。

ユーザー制作のものであればSynology用のパッケージも利用可能

 Synology版は筆者も試したが、パッケージをインストール後、SSH接続して接続を確立(サインイン)するだけと簡単で、無事に動作することを確認できた。本家の最新バージョンがすでに1.4.0(2021/1/30時点)になっているので、Synology版は古いバージョンとなるが、接続は問題なく可能だった。

 NASには独自のVPNサーバー機能と、接続が困難な環境で通信を中継するための仕組みが用意されることが多いが、正直、これらのサービスは使いやすいとは言えないし、速度的な不満を感じることも多い。

 tailscaleを使えば、こうした不満も解消できるわけだ。

わずか3ステップで接続完了

 それでは、実際の使い方を紹介しよう。

1.サインアップ

 tailscaleのウェブサイトからサインアップする。と言っても、前述したように認証にはGoogleアカウントかMicrosoftアカウントを使うので、いずれかのアカウントを選んでサインインし、アプリへのアクセス許可を与えるだけでいい。

tailscaleにサインアップ
GoogleアカウントかMicrosoftアカウントでサインインし、アクセス許可を与える

2.ダウンロード

クライアントアプリをインストール

 サインアップが完了したら、クライアントアプリをダウンロードする。Windowsの場合であれば、ダウンロードしたファイルを実行するだけでいいが、Linuxの場合はコマンドの入力が必要になる。ダウンロードページにディストリビューションごとのインストール方法が記載されているので、その記述に従えばいい。

 ちなみに、アプリをインストールすると、Wireguard接続用のネットワークアダプターが追加される。

Wireguard用のネットワークアダプターが追加される

3.認証して接続完了

アプリから接続

 アプリのインストールが完了すると、タスクトレイにtailscaleのアイコンが表示される。このアイコンをクリックすると、ウェブブラウザーが起動し、サインインが求められるので、同様にGoogleアカウントかMicrosoftアカウントでサインインすれば完了だ。

アカウントでサインインすれば接続完了

 以上で、VPN接続が完了する。

 この状態で、tailscaleの管理画面にアクセスすると、新たに接続した端末のほかに、「hello-ipn-dev(100.101.102.103)」というマシンが表示される。

 これは、同社がサポート用に用意しているIRCサーバーだ。まずは、このサーバーにpingを実行することで、接続状況を確認できる。海外のサーバーなので遅延があるが、無事に接続されていることが確認できるはずだ。

接続後に管理画面にアクセスすると、接続されたPC名が表示される。最初はサポート用サーバーで疎通を確認する

 同様の手順でほかのPCやサーバーをtailscaleに接続すれば、それぞれのマシンがメッシュ状に相互接続されたVPNネットワークを構築できる。

 あとは、通常のネットワークと同様に接続先のマシンに対して、リモートデスクトップなどで接続すればいいだけだ。

接続状況をチェック

 接続が完了したら、どのように接続されているのかを確認してみよう。

 以下は、接続したWindowsマシンのルーティングテーブルだ。IPv4のルートに「100.x.x.x(別のマシン)」や「100.100.100.100(tailscaleのDNS)」「100.101.102.103(IRC)」宛てのルートが追記されている。

tailscale接続後のroute

 このように、サブネット単位ではなく、接続したマシンに対して直接ルートが設定されていることから、マシン同士が直接つながれていることが分かる。これにより、中継による速度低下を避けられ、ほかのマシンのダウンの影響も受けないことになる。

接続された別のマシンへ「tracert」コマンドを実行。直結されていることが分かる

 速度は次のようになった。10Gbpsの「auひかり ホーム10ギガ」と、1Gbpsの「フレッツ 光ネクスト」の回線それぞれにマシンを設置して接続した際の値だ。pingの遅延は7~9msほどで、iPerf3による速度は170Mbpsほどで、。Wireguardによる高速な接続の恩恵も受けられている。

別回線を使って、tailscaleで接続されたNASとの通信結果

 さらに、より詳しい状況は、「tailscale」コマンドで確認可能だ。これはウェブインターフェースの接続状況と同じで、接続されているマシンとその転送状況が表示される。

接続された端末の一覧。メールアドレスが別のものになっているのは、シェアされた自分以外のマシン

 ちなみに、tailscaleで使われている「100.x.x.x」(tailscaleが利用しているのは100.64.0.0./10)は、通常はISPが内部NATなどで利用するCGNATアドレス空間となる。

 このアドレス空間を一種のプライベートアドレス空間のように利用することに対しては、さまざまな意見があるが、同社の見解としては自身もVPNというサービスを提供するISPであるというものとなっている(詳しくはTailscale FAQの該当ページを参照)。

マシンをシェアする

 続いて、マシンをシェアしてみよう。

 と言っても操作は簡単で、tailscaleの管理画面からシェアしたいマシンを選択して、リンクを作成すればいい。

マシンを選んで共有設定開始
共有用のリンクを作成し、メールなどで送信する

 これを受け取った側は、リンクにアクセスして認証を行なえば、共有された相手のマシンが自分の管理画面に表示されるようになる。

別のユーザーの共有前の管理画面
別のユーザーがリンクにアクセスし、招待を受ける

 共有されたマシンは、tailscaleの「100.x.x.x」のアドレスが割り当てられており、自分のVPNネットワーク内のマシンと同じようにアクセス可能となる。例えば、NASであれば次の画面のように「100.x.x.x」のアドレスで管理画面にアクセスできる上、「\100.x.x.x」で共有フォルダーにもアクセスできる。

 もちろん、後述するMagicDNS(別のDNSでもOK)を使えば、アドレスの代わりにホスト名でもアクセスできる。

管理画面に共有されたNASが表示される

拠点間接続やDNSの利用もOKだが……

 以上、今回はtailscaleのサービス概要について紹介した。Wireguardの取っつきにくさを見事に解消したサービスで、テレワークなどへの活用に適したものと言えそうだ。

リレー機能を使って拠点の複数台の端末をまとめて接続することも可能

 なお、さらに設定を工夫することで、1台にインストールしたtailscaleで通信をリレーすることで、tailscaleクライアントをインストールしていない機器での接続を可能にもできる(拠点間接続などではこの方法が便利)。

 具体的には、ネットワーク内にLinuxベースのマシンを用意し、以下のコマンドでtailscale接続を確立する(IPフォワードも有効にしておく)。この状態で、管理コンソールでサブネット通信を有効化すればいい。

sudo tailscale up --advertise-routes=192.168.1.0/24 --accept-routes
MagicDNSを使うと、「100.x.x.x」のtailscaleの内部IPにホスト名を設定できる。この機能を利用するには、管理可能なDNSサーバーが必要

 また、MagicDNSという機能を利用して、同サービスで各マシンに割り当てられる「100.x.x.x」のアドレスに対して、ホスト名を自動的に割り当て、ホスト名でアクセスできるようにすることも簡単にできる。

 では、欠点はないのかというと、そんなこともない。

 まず、前述したように、ドメインでSoloプランにサインアップした場合、最初にサインアップしたユーザーがオーナーになってしまうのは困りものだ。

 また、接続端末の台数が増えたときの管理が難しい。筆者は10台前後をつないでみたが、これだけでもどのマシンが、どれかが分かりにくくなってしまう。さらに、クライアントモジュールのアップデートが発生したときに、個別にアップデートをするのにも手間が掛かる。端末間のアクセス制御をするためのACLも、現在はテキストベースで分かりづらい。

 こういったあたりには管理者視点では賛否両論ありそうだ。

 しかしながらtailscaleは、従来のレガシーなVPNサービスであっても、まだまだ発展の余地があり、工夫次第でこれほどまでに楽に使えるようになることを実感させられた画期的なサービスと言える。

 開発者の動きも速く、筆者も1つの不具合(live.jpドメインでサインアップしたときに先行してサインアップ済みの他者の配下に接続されてしまう)をメールで報告したが、即座に返答があり、改善もすぐに適用された。フットワークが軽く、今後のさらなる発展も期待できるサービスと言える。個人的には、非常に期待したい。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できる Windows 10 活用編」ほか多数の著書がある。