👾

Tailscale VPNルーターを GL.iNet でかんたん構築

に公開
6

ども、takiponeです。
Tailscaleは開発者向けのVPNサービスでMacやPC、サーバーなどにインストールしリモートアクセスに利用します。Tailscaleがインストールできない組み込みデバイスやホストへのリモートアクセスにはSite-to-Site VPNに近いSubnet Router機能があり、VPNルーターとなるホストを構成することも出来ます。

https://tailscale.com/kb/1019/subnets/

本ブログではTailscaleのVPNルーターを手軽に立ち上げられるGL.iNetのルーター製品と、Subnet Router機能でVPNルーターとして動作させる手順をご紹介します。

GL.iNetルーターのTailscale対応

GL.iNetは、OpenWRTを採用する多機能なルーター製品を販売する香港のメーカーです。ルーター製品の一部のモデルで、Tailscale対応機能がリリースされました。

https://docs.gl-inet.com/en/4/tutorials/tailscale/

現在はベータで、以下の機種が対応します(Amazon.co.jpでの価格の安い順に並べてみました)。

GL.iNet製品が初めてという方には一番手頃なGL-MT2500 Brume 2が無難だと思いますが、各モデルが気になる方はhgot07さんのブログが参考になるかもしれません。

https://hgot07.hatenablog.com/

本ブログでは、GL-MT2500での設定例をご紹介します。

1. ファームウェアのアップグレード

GL-MT2500でTrailscaleをサポートするファームウェアバージョンは2023年3月時点でbeta buildの4.2.0 release2です。まずはファームウェアのダウンロードページから製品のモデル名とbetaを選択し、ファームウェアをダウンロードします。

ルーターのWeb管理画面のメニューから[システム]-[アップグレード]を選択、[ローカルアップグレード]タブを表示しダウンロードしたファイルをドラッグしてアップロードします。

しばらく待ちアップグレードが完了するとルーターが再起動し、新しいファームウェアで起動します。再度[システム]-[アップグレード]のページを表示するとバージョンが上がっていることが確認できます。

2. Tailscaleの構成

続いてTailscaleを有効化します。[アプリケーション]-[Tailscale]を選択してTailscaleの設定画面を開き、[有効にする Tailscale]のスイッチをオンにします。

セットアップが走り、しばらく待つと警告メッセージともに[The Device Bind Link]というリンクが表示されるのでクリックします。

Tailscaleにデバイスを追加するためのリンクが表示されるので、クリックするかURLをコピペしてWebブラウザで開きます。

Tailscaleの認証画面が表示されるのでログインします。

デバイス接続の確認画面が表示されるので、[Connect]をクリックし登録完了です。

先ほどのTailscale設定画面の表示が変わり、接続済みのメッセージが表示されます。

メニューの[アプリケーション]-[プラグイン] (旧パッケージソフトウェア)でtailscaledでサーチするとインストールされているエージェントのバージョンが確認できます。最新とは言えませんが、そこそこ最近のものですね。OpenWRTソフトウェアリポジトリのバージョンよりもいくらか新しい印象です。

3. Subnet Routerの構成

ここまでの構成で他のTailscaleデバイスからGL.iNetルーターへのリモートアクセスができるようになっています。リモートアクセス先の別のホストにアクセスさせるVPNルーターとして動作するためには、Subnet Routerの構成が必要です。

今回使用しているGL-MT2500の場合は有線のWANポートとLANポートがあり、どちらでもSubnet Routerの設定が可能です。WANポートは既定でDHCPクライアントとしてIPアドレスを動的に取得する構成、LANポートはDHCPサーバーとしてIPアドレスを払い出す構成になっているので、既存のLANに参加させるのかルーター配下にホストを追加するのかネットワーク構成に合わせて有効化するポートを選択します。

設定はシンプルで、Tailscale設定メニューから以下の有効にしたいポートのスイッチをオンにします。

  • リモートアクセスWANを許可する
  • LANのリモートアクセスを許可する

Tailscale管理画面からGL.iNetルーターの画面を表示し、Subnetsが表示されることを確認します。

今回の環境ではWANのネットワークセグメントが192.168.4.0/24、LANが192.168.8.0/24です。
画面右上の[Machine settings]-[Edit route settings...]をクリックしルート設定画面を表示します。

リモートアクセスさせたいネットワークセグメントのスイッチをオンにします。

これでSubnet Routerの構成は完了です。Tailscaleデバイスからオンにしたセグメントのホストにリモートアクセスできるようになりました。

ちなみに、今回はGL-MT2500なので有線ポートしか選択肢がありませんでしたが、Wi-Fiルーターの機種であれば動作モードを切り替えてWi-Fiのデバイスにいろいろな形でリモートアクセスを構成することができますし、LTEドングルをセットすればさらにその幅が広がります。SORACOM Gate D2Dの組み合わせなど面白そうですね。

https://soracom.jp/services/gate/

まとめ

TailscaleのVPNルーターを手軽に立ち上げられるGL.iNetのルーター製品と、GL-MT2500でSubnet Router機能を設定する手順をご紹介しました。Tailscaleで便利なVPN体験を楽しみましょう。

Discussion

じぇーじぇー

質問失礼いたします。
現在、GL-MT3000 Beryl AXを、アクセスポイントモードで使用しています。
この場合、正規の手段ではTailscaleを使用することはできないのでしょうか。
できるだけ二重ルーターの構成にはしないように考えていますが、アクセスポイントモード・ブリッジモードでTailscaleを有効化する方法はありませんでしょうか。

takiponetakipone

ご質問ありがとうございます!ルーターモードとAPモードでの構成上の制約はなさそうに見えるのですが、じぇーさんは何か試されてうまく行かなかったのでしょうか。それともドキュメントなどに不可という記述を見つけられたのでしょうか。

面白そうなので、ひとまず自分も試してみるつもりです。

じぇーじぇー

APモードにした場合、公式の設定画面では、アプリケーションの欄がほぼ消え、設定できるのはGoodCloud程度でした。
sshで接続してtailscale upとしても、Failed to connect to local Tailscale daemon とエラーが出ます。
ファームウェアは4.8.1です。何か解決策がありましたら、よろしくお願いいたします。

takiponetakipone

手元でもブリッジモードに切り替えるとtailscaleサービスが無効になっていることを確認しました。
サービスの設定ファイル /etc/config/tailscale をルーターモードと同じ以下のような内容に書き換えて、 /etc/init.d/tailscale start で開始すると tailscale コマンドが正常に実行できるようになりました。

/etc/config/tailscale
config settings 'settings'
        option log_stderr '1'
        option log_stdout '1'
        option port '41641'
        option state_file '/etc/tailscale/tailscaled.state'
        option enabled '1'
        option lan_enabled '0'
        option wan_enabled '0'

ネットワークモードを切り替えるときにサービスの設定ファイルを一括で書き換える挙動に見えました。参考になれば幸いです。

takiponetakipone

ちなみにこの起動方法だとWeb管理画面でTailscaleの項目が出てこないので、Tailscaleに参加するためのURLは /etc/init.d/tailscale status コマンド実行で取得できました。

じぇーじぇー

こちらの環境でも、ご教示の通りにconfigを変更し、tailscale update --yesでバイナリを更新すると、通常通り問題なく使えるようになりました。
調査・返信いただき、ありがとうございました。