これはなに

Tailscaleを利用して無料でVPNを構築する手順と、Tailscale Routerを用いたローカルネットワークへのルーティング設定方法をまとめたメモ。
Tailscaleとは

Tailscaleは、同一アカウントで認証した端末同士を、インターネット越しに安全に接続できるVPNサービスである。 設定はアカウント作成とクライアントのインストールだけで、非常に簡単である。ポート開放やルーターの設定も不要で、NAT越しでも接続できる。 しかも、無料で100台までの端末を接続できる。神。個人利用には十分。
手順

全体の流れは次のとおりである。
- Tailscaleアカウントを作成する
- Tailscaleクライアントをインストールする
- 必要に応じてTailscale Routerを設定する
Tailscaleアカウントを作成する

Tailscaleの公式サイトにアクセスし、アカウントを作成する。GoogleアカウントやGitHubアカウントで簡単に登録できる。 すべての端末で同じようにログインする必要があることを考えて、アカウントを作ると良い。 筆者はGoogleアカウントで登録した。
Tailscaleは同一アカウントで認証した端末同士を接続するため、アカウントを共有する必要がある。アカウントの取り扱いには注意すること。
Tailscaleクライアントをインストールする

接続したい/されたい端末にTailscaleクライアントをインストールする。 TailscaleはWindows、macOS、Linux、iOS、Androidなど、主要なプラットフォームに対応している。
たとえば、Windowsならインストーラをダウンロードして実行する。 iOSやAndroidなら、App StoreやGoogle PlayからTailscaleアプリをインストールする。
クライアントをインストールしたら、Tailscaleアカウントでログインする。
Linuxの場合は、インストールした後、sudo tailscale up
を実行してログインする。
ログインすると、その端末がTailscaleのネットワークに自動的に追加される。とても簡単だ。
GUIアプリなら、アプリから接続状態を確認できる。Linuxの場合、tailscale status
コマンドで接続状態を確認できる。
自動でsystemctl
による起動が有効になっているので、再起動後も自動で接続される。
必要に応じてTailscale Routerを設定する

Tailscale Routerを使うと、TailscaleクライアントをインストールできないデバイスをTailscaleネットワークに接続できる。 Tailscale Routerは、Tailscaleのサブネットルーティング機能を利用して、ローカルネットワーク内のデバイスへアクセスできるようにする機能である。
たとえば、筆者の環境ではBuffaloのNAS(LinkStation LS720D)を使っていて、これにはTailscaleクライアントをインストールできない。 そこで、Raspberry Piに入れたTailscaleでTailscale Routerを設定し、NASをTailscaleネットワークに接続させた。
Tailscale Routerを設定するには、Tailscaleクライアントをインストールした端末で次のコマンドを実行する。
sudo tailscale set --advertise-routes=XXX.XXX.XXX.X/XX
ここで、XXX.XXX.XXX.0/24
は、ローカルネットワークのサブネットアドレスに置き換える。
たとえば、ローカルネットワークが192.168.1.1
のようなアドレスを持つ場合、次のコマンドを実行する。
sudo tailscale set --advertise-routes=192.168.1.0/24
Tailscale Routerの設定コマンドを実行した後、Tailscaleの管理画面にアクセスして、ルーティングを有効にする必要がある。
管理画面の「Machines」を選択すると、接続されている端末の一覧が表示される。
Tailscale Routerとして設定した端末には、Subnets
のラベルが付いている。
このSubnets
のラベルに!
マークが出ている場合は、ルーティングが有効になっていないことを示している。
その場合は、Tailscale Routerとして設定した端末を選択し、右上の「…」メニューから「Edit route settings…」を選択する。
すると、ルーティング設定の画面が表示される。この画面で「Subnet routes」のチェックボックスにチェックを入れる。
これで設定は完了である。Tailscale Routerを設定した端末が起動していて、かつネットワークアドレスが間違っていなければ、Tailscaleネットワークからローカルネットワークのデバイスへアクセスできる。
ちなみに、サブネットルーターとしているデバイスは、下記を参照して接続の再認証を無効にしておくと良い。