tailscale(テイルスケイル)というVPNサービスが人気急上昇中です。
「速くて軽い」という人気のVPNプロトコル「WireGuard」を使ったサービスで、あっという間にノード(端末)とサブネット(ネットワーク)を自由自在にVPN接続ができるサービスです。
Googleアカウントでサービス登録してアプリをインストールするだけで本当に「あっ!」という間にVPN接続ができてしまいます。
この記事はこの「tailscale」というサービスを使って外出先でも自宅のネットワーク環境が丸ごと使えるVPN環境をOpenWrtルーターを使って構築してみよう、という記事になります。
「ノード to サブネット」型のVPN環境になります。
外出先から自宅ネットワークへVPN接続したい!
最初にこの記事の目的を記しておきます。
外出先からでも自宅にいるときと同じ使い勝手で自宅ネットワークに接続したい、という要件の実現です。
通常の外出や学生の進学・仕事での単身赴任などの場合でも、自宅(実家)にいるときと同じ感覚で自宅のネットワークに参加できる、というのが目標です。
この環境構築にtailscale VPNというVPNサービスを使います。
tailscale VPNとは?
tailscaleとはメッシュ型(相互接続型)のVPNネットワークを簡単に作れるサービスです。
VPNのプロトコル自体は「速くて軽い」と人気のVPN「WireGuard」を利用しています。
Googleアカウントで簡単にユーザー登録ができ、最大100台までのノード(パソコンやスマホ)をVPN接続することができます(無料プランの場合)。
本当に簡単にVPN環境が構築できて、おすすめのサービスです。
tailscale VPNで何ができる?
tailscaleはメッシュ型のVPN接続を提供してくれます。
tailscaleのアプリをインストールしたデバイスを登録するだけで、Googleアカウントに登録したデバイスがすべてVPN(WireGuard)でVPN接続されます。
無料から使えるプラン「Freeプラン」に加えて「Starter($6/月)」「Premium($18/月)」「Enterprise(Custom)」があります。
個人で使う分には無料プラン「Freeプラン」で十分であり、最大100台のデバイスを登録することができます。
Peer-to-Peer型のVPN接続を管理してくれる
先述のようにtailscaleはVPNプロトコルではなくVPN(WireGuard)の相互接続を行う仕組みを提供してくれるサービスです。
つまりtailscaleを使えばクライアント・サーバー型ではないVPN接続ができるため、自宅の回線(サーバー側)がプライベートアドレスであったりポート開放できない、などで外部から接続できないという問題を回避することができます。
自宅側が「IPv4 over IPv6」の光回線やプライベートIPが付与されるホームルーターサービスであっても外部(外出先)のデバイスと相互にVPN接続ができます。
サブネット(ネットワーク単位)の登録も可能
tailscaleの使い方の基本はパソコンやスマホのtailscaleアプリをインストールして相互VPN接続する使い方です。外出先から使いたい自宅のデバイスをすべてtailscaleに登録すれば、外出先からそれらのデバイスへアクセスできます。
ただしすべてのデバイスにアプリインストールするのは面倒ですし、NAS/プリンター/IoT家電などでtailscaleアプリに対応していないデバイスもあるでしょう。
そんな時に便利なのが自宅ネットワークを丸ごとサブネットとして登録する、という使い方です。
サブネットをtailscale登録すればそれだけで外出先から自宅サブネット内のデバイスをネットワーク利用できます。
つまり自宅のルーターをtailscale登録し、ここに(ルーターに)外出先からtailscale接続すれば外出先でも自宅ネットワークが丸ごと使える、という使い方です。
OpenWrtルーターにtailscaleVPNを導入する
この記事では、この「自宅ネットワークを丸ごとサブネットとして登録する」という使い方を、OpenWrtルターを使って構築していきます。
自宅ルーターをOpenWrtルーターで構築しこれをtailscaleへ登録、外出先のパソコンでもtailscale登録し自宅のOpenWrtルーターへVPN接続、という環境の構築です。
これにより外出先でも自宅にいるときと同じネットワーク環境を実現できます。
なぜOpenWrtルーターを使うのか?
tailscaleを利用するにはVPN相互接続したいデバイスをtailscaleアプリを使って登録する必要があります。
OpenWrtならOpenWrt向けのtailscaleモジュールが提供されているので、簡単にtailscaleへ登録することができます(たぶん)。
OpenWrtルーターって何?
そもそも「OpenWrtルーターって何?」という人はこちらの記事を見てください。
また、「OpenWrtルーターに興味があるけどどうやって作るの?」という方はこちらの記事を見てください。
自宅ルーターでなければサブネット登録できない?
ルーターをtailscale登録しなくても、ルーター配下のデバイスでサブネット登録することは可能です。
ルーター配下のパソコンをtailscaleへ登録し、このパソコンの所属するネットワーク(自宅ネットワーク)をサブネット登録することができます。
ただしこの場合にはパソコンを常時起動しておく必要があります。
Raspberry Piなどの低消費電力シングルボードコンピューターを使って常時起動しておくことも可能ですが、それなら常時稼働のルーターでやるほうがよいですよね。
完全に自宅ネットワークに参加できるの?
外出先からサブネット登録したルーターへtailscale接続することで、そのサブネットのメンバーになることができます。
サブネットとはたとえば「192.168.1.0/24」というネットワークのことです。
OpenWrtルーターにtailscaleをインストールして自宅ネットワーク(サブネット)を利用する場合、OpenWrtルーターのLAN側サブネットおよびWAN側サブネットを利用可能にすることができます。
一般的にはOpenWrtルーターの上位(WAN側)にはプロバイダー接続のためのONU(またはVDSLモデム)が接続されているはずなので、この場合はOpenWrtルータのLAN側をtailscaleへサブネット登録することになります。
一方で上位ルーターとしてWiMAX+5GやNTTドコモのhome5G、またはNURO光などの専用ルーター(サブネット)が存在する場合にはOpenWrtルーターはそのサブネット配下となるため、WAN側(およびLAN側)のサブネットを登録することで上位(WAN側)のサブネットへ接続することができます。
tailscaleの基本「ノードtoノード」の設定
tailscaleを使って外出先から自宅のネットワーク(サブネット)へVPN接続、という環境を構築する前に、tailscaleの基本形(?)である外出先から自宅のPCに接続するという「ノードtoノード」のVPN接続を経験してみましょう。
本当に簡単にVPN接続できてしまいます。
tailscaleのサービスを利用する大きな流れは以下のようになります。
- STEP1tailscaleサービスへログイン
まずはGoogleアカウントなどでtailscaleサービスへログインします。ログインするとデバイス用のアプリがインストールできます。
- STEP2アプリのインストール
tailscale接続アプリをダウンロード(スマホの場合はQRコード)し、インストールします。
- STEP3アプリの認証
インストールしたアプリからtailscaleへログインします。これによりデバイスがtailscaleへVPNノードとして登録されます。
※この「STEP3」をVPN相互接続したいすべてのデバイスで行います(登録・認証)
ではやってみましょう。
STEP① tailscaleサービスへログイン
まずtailscaleサービスへログインします。
tailscaleは以下のアカウントで利用することができます。
- Googleアカウント
- Microsoftアカウント
- GitHubアカウント
「Zero Trust」というやつであり、tailscaleでは利用者の個人情報を一切保持しません。
STEP② tailscaleアプリのインストール
アカウント登録したら次は登録するデバイス用のアプリをダウンロードしインストールします。
以下のデバイスに対応しています。
- macOS
- iOS(iPhone/iPad)
- Windows
- Linux
- Android
スマホアプリ(Android/iOS)はQRコード読み取りでインストールできます。
macOS/Windowsはアプリをダウンロード後にインストールします。
Linuxはさらにディストリビューションごとに細かく分かれており、主要なディストリビューションに加えて「Raspberry Pi」でも使うことができます。
ここではWindows版をダウンロードしインストールします。
STEP③ アプリの認証
インストールが終了するとタスクトレイにtailscaleアプリのアイコンが現れます。
アイコンを右クリックしてメニューから「Connect」をクリックします。
登録時アカウントでログインするとWindowsパソコンがtailscaleサービスに登録されます。
登録されたデバイスはtailscale管理画面で参照することができます。
「LAST SEEN」が「Connected」の状態であるデバイスはすでに相互VPNの登録されているので、「Connected」のデバイス同士はVPN接続されている状態です。
この場合、相手デバイスのIPアドレスは自宅ネットワークのアドレスではなくtailscaleが割り振った「100.*.*.*」のIPアドレスとなります。
※サブネット登録すれば自宅ネットワークのIPアドレス(「192.168.1.*」など)でアクセスできます。
OpenWrtルーターでtailscaleを使う(サブネット登録)
では、本題であるOpenWrtルーターを使って自宅ネットワークをサブネット登録していきます。
ここからはOpenWrtルーターがインストール済の状態を前提としています。
tailscaleには「サブネット登録」という機能があります。
自宅のネットワーク(192.168.1.0/24など)をまるごとTailscaleに登録してしまおう!という機能です。
外出先からアクセスしたいデバイスにTailscaleを登録することで自由にアクセスできるのですが、この「サブネット登録」機能を使うことで以下のようなメリットが生まれます。
- デバイスごとにtailscaleインストールする必要がない
- Tailscaleが対応していないデバイスへのアクセス
⇒ ウェブカメラ・ビデオレコーダーなどのIoT機器など - 自宅で使っている同じ環境(IPアドレス環境)でVPN利用できる
自宅のネットワーク(サブネット)環境
本記事でtailscaleへ登録するネットワーク(サブネット)環境は以下の環境を前提とします。
具体的には楽天ひかりのVDSL回線(VDSLモデム)直下にOpenWrtルータを配置し、自宅内ネットワーク(サブネット)は「192.168.1.0/24」を前提とします。
OpenWrtルーターのIPアドレスは「192.168.1.1」です。
この「192.168.1.0/24」のサブネットをtailscaleへサブネット登録し、外出先から自宅ネットワークへアクセスできることを目標とします。
OpenWrtルーターでサブネット登録
ではOpenWrtルーターにtailscaleをインストールし、自宅ネットワークをまるごとtailscaleに登録していきます。
これにより、外出先のパソコン・スマホからOpenWrtルーターにVPN接続することで外出先でも自宅にいるときと同じネットワーク環境になります。
OpenWrtルーターへtailscaleをインストールする手順の概要は以下のようになります。
- STEP1tailscaleインストール
OpenWrtルーターにtailscaleモジュールをインストールしていきます。OpenWrt管理画面(LuCI)でインストールします。
- STEP2インターフェース定義
tailscaleデバイスを利用したインターフェースを定義していきます。OpenWrt管理画面(LuCI)で定義します。
- STEP3tailscaleへサブネット(自宅ネットワーク)の登録
tailscaleに自宅サブネット(IPアドレス)を登録します。OpenWrtルーターにSSH接続してサブネット登録します。
- STEP4tailscaleでサブネット登録を許可
登録されたOpenWrtのサブネットをtailscale管理画面で「許可」します。tailscaleサービス管理画面で設定します。
STEP① tailscaleモジュールのインストール
OpenWrt管理画面(LuCI)からtailscaleモジュールをインストールしていきます。
- STEP1モジュールのインストール
メニュー「システム > Software」からtailscaleモジュールをインストールします。
- tailscale
- tailscaled
- iptables-nft(OpenWrt23.03~の場合)
モジュールのインストールが完了したらメニュー「システム > 再起動」からOpenWrtルーターを再起動します。
- STEP2作成されたデバイスを確認
OpenWrtルーターが再起動したらメニュー「ネットワーク > インターフェース」の「デバイス」タブ画面を確認します。
モジュールインストールにより「デバイス」に「tailscale0」というデバイスが作成されていることを確認しておきましょう。
もし「tailscale0」デバイスが表示されない場合はルーターを再起動してみましょう。
必須モジュール |
|
---|
以上でtailscaleモジュールのインストールが完了です。
OpenWrt22.03以降の場合の追加モジュール
OpenWrtはバージョン22.03からnftablesに対応しました。
現時点ではTailscaleはnftablesに対応していないため暫定的な対応として追加モジュール「iptables-nft」をインストールする必要があります。
必須モジュール |
|
---|---|
OpenWrt(23.03~)の 追加モジュール |
|
よって、お使いの環境がOpenWrt22.03以降の場合には「iptables-nft」モジュールを追加インストールします。
STEP② OpenWrtインターフェース定義
OpenWrtルーターにtailscale用のインターフェースを定義していきます。
- STEP1インターフェース新規作成
メニュー「ネットワーク > インターフェース」から「インターフェースを新規作成」していきます。
名前 ご自由に
※「tscale」とかプロトコル アンマネージド デバイス 「イーサネットアダプタ”tailscale0″」を選択 - STEP2ファイアウォール・ゾーンの設定
作成したインターフェースをファイアウォールゾーン「LAN」に追加します。
- STEP3OpenWrtルーターの再起動
OpenWrtルーターを再起動しておきましょう。
以上でtailscale用インターフェースの定義が完了です。
STEP③ tailscaleにアカウント登録(認証)
OpenWrtのtailscale環境は構築完了したので、tailscaleに登録・認証していきます。
- STEP1tailscaleのリンクアップ
OpenWrt再起動後にOpenWrtルーターにSSH接続して「tailscale up」コマンドを入力します。
画面のように認証用URLが表示されるのでURLをブラウザに入力してログインすることでOpenWrtルーターをtailscaleノードとして認証されます。
※ターミナル画面のリンクをクリックしてもブラウザは開きません。URLをブラウザへコピペします。
- STEP2tailscaleへログインして認証
認証用リンク(URL)からtailscaleにログインします。
ログインすると認証され上記の画面が表示されるのを確認してください。
以上でOpenWrtルーターがあなたのtailscale VPNグループに登録されます。
この時点ではOpenWrtルーターはデバイスとしてtailscaleに登録されましたが、サブネット(自宅ネットワーク)としては登録・認証が行われていない状態です。
※つまり外出先から自宅ネットワークのOpenWrtルーターへログインできるけど、自宅のサーバー機器等にはアクセスできません。
OpenWrt22.03以降の場合の追加パラメータ
OpenWrt22.03以降の場合には”tailscale up”コマンドで必須のパラメーターがあります。
# tailscale up --netfilter-mode=off
“tailscale up”コマンドに必ず”–netfilter-mode=off”スイッチを追加します。
STEP④ tailscaleにサブネット(自宅ネットワーク)情報を登録
最後にOpenWrtルーターから自宅ネットワークをサブネットとして登録していきます。
サブネットとして登録・認証されることで外出先から自宅ネットワークへログインできるようになります。
- STEP1サブネットの登録
# tailscale up --advertise-routes=192.168.1.0/24
登録する自宅のネットワークを「tailscale up –advertise-routes=192.168.1.0/24」で登録します。
※IPアドレスは自宅ネットワークに合わせる
- STEP2tailscaleで確認
tailscale管理画面でOpenWrtルーターがサブネットとして登録されていることを確認します。
※ルータ名の下に「Subnets」と表示されている
ここから右端の「…」メニューから「Edit route settings…」を選びます。
- STEP3tailscaleでサブネット許可
SSHでコマンド発行したしたサブネットが登録されているはずなので、確認してスライドスイッチを「オン」にします。
以上でtailscaleへサブネット(自宅ネットワーク)を登録完了となります。
OpenWrt22.03以降の場合の追加パラメータ
OpenWrt22.03以降の場合には”tailscale up”コマンドで必須のパラメーターがあります。
# tailscale up --advertise-routes=192.168.1.0/24 --netfilter-mode=off
“tailscale up”コマンドに必ず”–netfilter-mode=off”スイッチを追加します。
ノード(PC)からサブネット(自宅)のNASを使ってみる
我が家では「192.168.1.101」のIPアドレスでNASサーバー(OpenmediaVault)を構築しています。
外出先(今回は自宅からWiMAXで接続)のWindowsから自宅(OpenWrtルーター)を経由して自宅のNASにアクセスしてみます。
自宅ネットワーク接続時と同じように「192.168.1.101」のIPアドレスでNAS(OpenmediaVault)の管理画面にアクセスできました。
NASの共有フォルダへの接続と読み込み・書き込みもできました。
もし自宅サブネットを利用できない場合
外出先のスマホやパソコンからtailscaleを使って自宅のOpenWrtルーターには接続できるけどNASサーバーなどへアクセスできない、という場合があるかもしれません。
この場合はOpenWrtルーターのマスカレード設定を見直してみます。
メニュー「ネットワーク > ファイアウォール」の「一般設定」タブ画面を開きます。
ファイアウォール・ゾーン「LAN」の「マスカレード」がチェックされていない場合はチェックします。
チェックを確認後、「保存&適用」でシステム反映させます。
これで接続できるようになる・・・と思います。
すべてが揃った「GL.iNetトラベルルーター」
本記事は自宅でtailscaleを常時稼働させる仕組みとしてOpenWrtを利用しました。
ちょっと古めの中古ルーターにOpenWrtをインストールし自宅ルーターとして使う、そのうえでOpenWrtルーター上でtailscaleのアプリを常時稼働させておくことで、外出先からいつでも自宅ネットワークが利用可能となります。
この「市販ルーターをOpenWrt化する」というのが面倒な方、ちょっと自信がない方は最初からすべてが揃った「GL.iNetトラベルルーター」を購入するとよいでしょう。
手のひらサイズの小型・高性能ルーターながら、OpenWrtを標準搭載したうえでtailscaleの利用も「tailsclae有効化」するだけで本記事内容と同じことができてしまいます。
GL.iNetトラベルルーター(GL-AXT1800 Slate AX)を使って外出先からtailscaleを利用した自宅アクセスについてはこちらの記事も参考にしてみてください。
応用編!WAN側サブネットもtailscaleへ登録
本記事ではここまでOpenWrtルーターのLAN側ネットワークをtailscaleへサブネット登録する手順を説明してきました。
通常、自宅ルーターとしてOpenWrtルーターを利用する場合には自宅ネットワークはすべてOpenWrt配下のサブネットとなるため、OpenWrtルーターのLAN側サブネットをtailscaleへサブネット登録することで外出先からいつでも自宅ネットワーク(LAN側)へ参加することができるようになります。
一方で、インターネット回線としてWiMAX+5Gやhome5Gなどのホームルーターを使っている場合にはOpenWrtルーターをそのホームルーター直下に配置している場合もあります。
我が家でもNTTドコモのホームルーター「home5G」回線があり、この回線を利用する場合のネットワーク構成は以下のようになっています。
つまり、tailscaleを稼働させるOpenWrtルーターから見てLAN側ネットワークに加えて上位(WAN側)にもhome5Gのネットワークが存在します。
このように、tailscaleを動かすOpenWrtルーターの上位(WAN側)に別のルーター(別のネットワーク)が存在する場合、LAN側のサブネットに加えてWAN側サブネットをtailscale登録することで外出先からどちらのネットワークへもアクセス可能となります。
WAN側サブネットの確認
まず、メニュー「ネットワーク > インターフェース」からLAN側サブネットとWAN側サブネットを確認します。
我が家の環境では上記のようになっています。
インターフェース | インターフェースIPアドレス | 登録すべきサブネット |
---|---|---|
LAN | 192.168.1.1/24 | 192.168.1.0/24 |
WAN | 192.168.128.152/24 | 192.168.128.0/24 |
よって、我が家の環境ではLAN側サブネットとして「192.168.1.0/24」、WAN側サブネットとして「192.168.128.0/24」をtailscaleへ登録します。
WAN側サブネットのtailscale登録
LAN側サブネットに加えてWAN側サブネットをtailscaleへ登録するのは簡単です。
OpenWrtのtailscaleコマンドパラメーターでWAN側サブネットを追加登録するだけです。
# tailscale up --advertise-routes=192.168.1.0/24,192.168.128.0/24
上記のようにLAN側サブネットとWAN側サブネットを「,(カンマ)」で区切って両方のサブネットを登録します。
※OpenWrt22.3~の場合は追加パラメーターが必要です。
# tailscale up --advertise-routes=192.168.1.0/24,192.168.128.0/24 --netfilter-mode=off
WAN側サブネットの有効化(tailscale管理画面)
tailscaleの管理画面へログインします。
すでに登録されているOpenWrtルーターの「Edit route settings…」ではLAN側とWAN側のサブネットが登録されています。
上記のようにLAN側とWAN側のサブネットを有効化(右へスライド)します。
以上で、外出先からOpenWrtルーターのLAN側ネットワークおよびWAN側(上位)ネットワークへも参加できるようになりました。
自宅サブネットをVPNゲートウェイ(EXIT NODE)にしてセキュリティ向上
ここまでで、tailscaleを使って自宅ネットワークをサブネット登録するだけで、簡単に外出先から自宅ネットワークへ接続することができるようになりました。
この状態では、外出先から自宅ネットワークへはtailscale VPNによる接続、それ以外(インターネット)へは直接インターネット接続しています。
自宅ネットワークをVPNゲートウェイとして使う
せっかく自宅ネットワークへtailscale VPN接続しているのですから、自宅ネットワークだけでなくすべてのインターネット接続も自宅ネットワークを経由して接続できるとセキュリティが向上しますね。
インターネットへの出口(Exit Node)を現在接続中の信頼できない(?)ネット回線(ホテル回線・カフェなどの街中Wi-Fiなど)を使うと盗聴などの心配があります。
せっかく自宅ネットワークへVPN接続しているのだから、インターネットへも自宅ネットワークを経由で接続できるとセキュリティが向上します。
VPNゲートウェイ(Exit Node)の設定手順
自宅ネットワークがすでにtailscaleサブネットとして登録されている状態であれば、追加の設定は簡単です。
- 自宅ネットワークをゲートウェイとして利用できるように設定する(Exit Node設定)
- tailscale管理画面で自宅ネットワークの「Exit Node」を許可する
- クライアント(外出先)のtailscaleアプリからExit Nodeを自宅ネットワークへ切り替える
では、実際にやってみましょう。
- STEP1自宅ネットワーク側の設定
自宅ネットワーク側のTailscaleをVPNゲートウェイ(Exit Node)として利用できるように設定します。自宅ネットワークのOpenWrtルーターにSSHログインして以下の「tailscaleコマンド」を発行します。
# tailscale up --advertise-exit-node --advertise-routes=192.168.1.0/24
IPアドレスは自宅ネットワークに合わせてください。
この時点でTailscaleに自宅ネットワークがExit Nodeとして動作するための仮登録が行われます。
※お使いの環境がOpenWrt22.03以降の場合は”–netfilter-mode=off”を付けます。
# tailscale up --netfilter-mode=off --advertise-exit-node --advertise-routes=192.168.1.0/24
- STEP2TailScale管理画面でのExit Node承認
tailscale管理画面からOpenWrtルーターの「Edit Route Settings…」を選びます。
「Use as exit node」のスライドスイッチをオン(右へスライド)します。
これで自宅ネットワーク側はtailscale VPNゲートウェイ(Exit Node)として動作することができるようになりました。
- STEP3クライアントのExit Nodeを切り替える
Tailscaleクライアントアプリから「Exit Node」を自宅ネットワークへ切り替えます。タスクトレイからtailscaleアイコンを右クリックしてメニューを表示させます。
「Exit Node」を「None」から「自宅サブネットルーター(ここではOpenWrt)」に切り替えます。
これで自宅ネットワーク経由でインターネット接続するように設定完了です。
なお、「Exit Node」で「None」を選択することで解除になります。
自宅ネットへ接続するパソコンはいつでもExit Nodeの設定を変更することができます。
外出先のネットワークが信頼できる場合は「Exit Node = None」とすれば直接高速にネット通信できます。
外出先のネットワークが信頼できない場合は「Exit Node = 自宅ネット」とすればtailscale VPNで自宅回線をVPNゲートウェイとして利用できるのでセキュリティが向上します(その代わり暗号化により速度は落ちる)。
クライアント側ではいつでも切り替え可能なので、自宅ネットワーク側もExit Nodeの設定をしておくとよいでしょう。
Magic DNSを使って名前アクセス
tailscaleでつながったVPNデバイスにはそれぞれtailscaleのIPアドレスが付与されており、通常のアクセスはこのIPアドレスを用いたアクセスを行います。
tailscaleでは「MagicDNS」という名前解決の仕組みが提供されており、「MagicDNS」を有効化することでtailscaleの登録マシン名でデバイスアクセスすることができるようになります。
MagicDNSの有効化
tailscaleへログインすると以下のようなトップメニューが表示されるので、メニュー「DNS」をクリックします。
DNSメニュー画面が表示されるので「Enable MagicDNS」をクリックします。
以上でMagic DNSの有効化は終了です。
Magic DNSを無効化する場合は再度「Disable MagicDNS」をクリックします。
Magic DNSが有効化されると、tailscaleから付与されたIPアドレスでのアクセスに加えて、tailscaleへの登録マシン名での名前アクセスが可能となります。
tailscaleへの登録マシン名を変更したい場合は「***」マークより「Edit machine name…」で変更することができます。
我が家のOpenWrtルーターはtailscaleへは「openwrt」というマシン名で登録されています。
外出先から接続しているWindowsパソコンからマシン名でpingを打つと以下のようになります(Maigc DNS無効状態)。
C:\ping openwrt
ping 要求ではホスト openwrt が見つかりませんでした。ホスト名を確認してもう一度実行してください。
C:\
Magic DNSを有効化すると以下のように名前アクセスが可能となります。
C:\ping openwrt
openwrt.tail*****.ts.net [100.***.***.***]]に ping を送信しています 32 バイトのデータ:
100.***.***.*** からの応答: バイト数 =32 時間 =197ms TTL =64
100.***.***.*** からの応答: バイト数 =32 時間 =53ms TTL =64
100.***.***.*** からの応答: バイト数 =32 時間 =55ms TTL =64
100.***.***.*** からの応答: バイト数 =32 時間 =54ms TTL =64
100.***.***.*** の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間(ミリ秒):
最小 = 53ms、最大 = 197ms、平均 = 89ms
C:\
ドメイン名(tailnet name)の変更
Magic DNSを有効化することで自分が所有するtailscaleネットワーク内ではtailscale登録マシン名による名前アクセスが可能となります。
また、この時の名前はtailscaleから付与されるドメイン名での修飾も可能です。
自分のtailscaleネットワークだけで使う場合はマシン名でアクセスで十分ですが、複数のネットワーク(所有者)が相互に接続しあってチームで作業する場合などはチーム(ネットワーク)ごとにドメイン名が異なるため、ドメイン名修飾が必要です。
ドメイン名(tailnet name)の初期値はtailscaleから提供されています(tail****.ts.net)が、これを変更することもできます。
複数のtailscaleネットワークをまたがって作業する場合にはドメイン名修飾により以下のようなアクセスとなります。
C:\ping openwrt.tail*****.ts.net
openwrt.tail*****.ts.net [100.***.***.***]]に ping を送信しています 32 バイトのデータ:
100.***.***.*** からの応答: バイト数 =32 時間 =197ms TTL =64
100.***.***.*** からの応答: バイト数 =32 時間 =53ms TTL =64
100.***.***.*** からの応答: バイト数 =32 時間 =55ms TTL =64
100.***.***.*** からの応答: バイト数 =32 時間 =54ms TTL =64
100.***.***.*** の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間(ミリ秒):
最小 = 53ms、最大 = 197ms、平均 = 89ms
C:\
tailscale VPNを便利に使う「WOL(Wake On Lan)」モジュール
私は自宅内でも必要な時にWOLでサーバーを起動(電源投入)しているのですが、同じことを外部からもやりたい、ということです。
WOL(Wake On Lan)を使えば使いたいサーバーから離れた場所(外出先)からサーバーの電源をオンにすることができます。
外出先から自宅ネットワークへ接続するにあたり、OpenWrtルーターに「WOL(Wake On Lan)」のモジュールをインストールしてみました。
WOL(Wake On Lan)で必要なモジュール
WOL(Wake On Lan)に必要なモジュールは以下の2つです。
メニュー「システム > Software」からインストールしてください。
- etherwake
- luc-app-wol
WOL(Wake On Lan)モジュールの使い方
モジュールをインストールするとメニュー「サービス > Wake On Lan」からWOL機能が使えるようになります。
外出先から自宅OpenWrtルーターにログインし、WOLメニューから接続ホストが一覧表示されるので選択してマジックパケットを投げる、という仕組みです。
もし電源オンにしたサーバーが一覧に表示されない場合には「カスタム」の欄にサーバーのMACアドレスを入力してください。
一度入力したMACアドレスはサーバーの電源がオフの状態であってもOpenWrtルーターから「WOL(Wake On Lan)」機能を利用できるようになります。
どんな自宅の回線環境で使える?
OpenWrtルーターとtailscale VPNを使い、外出先から自宅ネットワークへ参加できる環境ができあがりました。
気になるのは自宅側の回線環境です。
フレッツ光の「IPv4 over IPv6」環境が普及したり、WiMAXやNTTドコモ「home5G」などが普及して自宅の固定回線として利用されたりと、外出先から自宅への接続が困難または不可能な回線環境も普及してきています。
ここからは今回構築したOpenWrtルーターを複数の(私が利用できる範囲で)回線に接続し、その回線に対して「自宅ネットワークへVPN接続」をやってみました。
電力系光回線で外出先からVPN接続できる
まず我が家のメインの回線は電力系の光回線です。
通信方式は従来からの「IPv4/PPPoE」接続でありIPv6アドレスは付与されていません。
※もうどの業者かわかっちゃいますよね・・・
この環境においてOpenWrtルーターを使った自宅ネットワークVPN接続は正常に利用することができました。
回線事業者 | 電力系通信事業者 |
---|---|
回線プロバイダ | 電力系通信事業者 |
接続方式 | IPv4/PPPoE接続方式 |
IPv4アドレス | IPv4グローバル(変動) |
IPv6アドレス | なし |
フレッツ光回線(クロスパス接続)で外出先からVPN接続できる
楽天ひかり契約のフレッツ光回線クロスパス(Xpass)接続でも同様に自宅ネットワークに参加することができました。
「IPv4 over IPv6」サービスである「クロスパス(Xpass)」で接続しているため自宅ルーター側にはプライベートIPv4アドレスが付与されています(PPPoEの併用なし)。
一般的にクロスパス(Xpass)などのDS-Lite方式の通信では外部から自宅側へのVPN接続ができませんが、tailscaleVPNを利用すれば問題なく外出先から自宅ネットワークへ参加できることがわかりました。
回線事業者 | NTTフレッツ光ネクスト |
---|---|
回線プロバイダ | 楽天ひかり |
接続方式 | DS-Lite/クロスパス(Xpass) |
IPv4アドレス | IPv4プライベート |
IPv6アドレス | IPv6グローバル |
NTTドコモ「home5G」で外出先からVPN接続できる
人気のホームルーターNTTドコモ「home5G」の配下にOpenWrtルーターを接続してみました。
home5Gはspモード通信を利用しておりIPv4プライベートアドレスが付与されます。
また、spモードの「IPv6シングルスタック通信」への移行もアナウンスされておりhome5Gでも検証環境として公開されています。
home5Gを自宅回線として場合でも問題なく外出先からVPN接続で自宅ネットワークへ参加することができました。
・通常のspモード(IPv4プライベートアドレス付与)でも利用可能
・spモード「IPv6シングルスタック通信」環境でも利用可能
・専用ルーター「HR01」の設定も初期値で利用可能
・NATタイプ「Symmetric/Cone」どちらでも利用可能
回線事業者 | NTTドコモ(home5G) |
---|---|
回線プロバイダ | spモード |
接続方式 | spモード接続(IPv4) spモード接続(IPv6シングルスタック) |
IPv4アドレス | IPv4プライベート |
IPv6アドレス | IPv6グローバル |
WiMAX +5Gでも外出先からVPN接続できる
ドコモ「home5G」が使えるのであればライバルであるWiMAX +5Gも当然使えるだろう、と思ったら当然使えました。
WiMAX +5GルーターをOpenWrtルーターにUSB接続し、外出先から自宅ネットワーク(OpenWrtルーター)へVPN接続することができました。
ただ、home5GとWiMAX +5Gの通信速度の関係か、home5Gより体感できる程度に遅く感じました。
回線事業者 | UQコミュニケーションズ |
---|---|
回線プロバイダ | GMOとくとくBB |
接続方式 | WiMAX +5G(4G接続) |
IPv4アドレス | IPv4プライベート |
IPv6アドレス | IPv6グローバル |
楽天モバイル(USBテザリング)でも外出先からVPN接続できる
実用的か?という疑問はありますが、OpenWrtルーターを楽天モバイル回線のAndroidスマホとUSB接続してUSBテザリングで環境構築してみました。
楽天モバイル回線を利用(USBテザリング)しても外出先から自宅(楽天モバイル回線)のネットワークへ参加することができました。
通信速度もあまり遅くなく、結構つかえるんじゃないかな?という感想です。
ただし常時接続の場合に安定稼働できるのか?はちょっと検証必要でしょうか・・・
回線事業者 | 楽天モバイル |
---|---|
回線プロバイダ | 楽天モバイル |
接続方式 | 楽天モバイル4G |
IPv4アドレス | IPv4プライベート |
IPv6アドレス | IPv6グローバル |
なんでもつながるtailscale VPN
このように自宅側の回線環境を光回線・ホームルーターさらにはモバイル回線といろいろやってみましたが「つながる?つながらない?」だけで言えばどの回線もすんなりVPN接続できました。
最近の通信環境は外部からの接続がむつかしい環境が多いのですが、tailscaleVPNは「外部→自宅」の接続ではなく「相互接続(すべてが内側から)」なのでこの仕組みのおかげで回線環境に依存せずVPN接続が確立できるのでしょう。
※なお、長時間の安定稼働については継続検証が必要
発展形!OpenWrtルーターとtailscaleで拠点間VPN
今回は「外出先から自宅ネットワークへ参加できる」という要件に対して「tailscale VPNとOpenWrtルーター」という環境で実現することができました。
非常に簡単にVPN接続ができるサービスであることと、一般的には困難・不可能とされているような自宅側回線環境(IPv6環境やホームルーター環境)でも、何も設備設定することなくVPN接続することができました。
「仕事先で自宅のNASにアクセスしたい」というような一般的な使い方に加えて、大学などの進学や単身赴任などの場合に新居(アパート等)から自宅・実家のネットワークへ接続できればいつでも慣れた環境を使うことができます。
tailscaleで簡単に拠点間VPN構築(サブネット間通信)
今回は「外出先パソコンから自宅ネットワークへ参加」という接続形態でしたが、tailscaleの仕組みを使えばサブネット(ネットワーク)を複数登録することで簡単に拠点間VPNを構築することができます。
たとえば自営業の方などで自宅ネットワークと仕事場ネットワークを相互ネットワーク接続する、などの使い方ができます。
ただしtailscaleの無料プラン「Personalプラン」では登録できるサブネットは1個までという制限があります。
tailscaleの料金プランは度々変更され、現在最新のプラン(2023年11月時点)では無料プラン(Freeプラン)でも複数台のルーターでサブネット登録ができるようになっています。
上記のように、無料プランでも2台のOpenWrtルーターをtailscaleへ登録し、それぞれのOpenWrtルーターでサブネット登録ができています。
これにより、たとえば「自宅と仕事場」「自宅と実家(帰省先)」など、複数のネットワークを接続(拠点間接続)する仕組みができてしまいます。
tailscale有料プランなら複数のサブネット登録が可能
現在の最新プランでは無料プラン(Freeプラン)でも複数台のルーターでサブネット登録ができます。
有料プランでは複数のサブネットが登録でき、最安では年額48ドルの「Personal Proプラン」で2つのサブネット登録ができるようになっています。
各プランにおける「登録デバイス数」「登録サブネット数」は以下のようになっています。
プラン | 料金 | デバイス数 | サブネット数 |
---|---|---|---|
Personal | Free | 20デバイス | 1サブネット |
Personal Pro | $48/年払い $5/月払い |
100デバイス | 2サブネット |
Team | $60/年払い $6/月払い |
5デバイス×ユーザー数 | 5サブネット |
Business | $180/年払い $18/月払い |
10デバイス×ユーザー数 | 10サブネット |
「年間$48のPersonal Proプラン」で100デバイス/2サブネット登録、「年間$60のTeamプラン」で5デバイス×ユーザー数/5サブネット登録が可能です。
個人や個人事業等での利用なら「Personal Proプラン($5/月、$48/年)で拠点間接続(2サブネット)ができますね。
tailscaleのプラン仕様は以下のリンクで確認してみてください。
まとめ、OpenWrtルーターとtailscaleでどこでも自宅ネット
この記事では「速くて軽い!」と評判のVPNプロトコル「WireGuard」を使ったVPN相互接続サービス「tailscale」とオープンソースのルーターファームウェア「OpenWrt」を使って「外出先から自宅ネットワークに参加する」環境を構築してみました。
あっ!という間にVPN接続が完了する
tailscaleの基本はデバイスとデバイス(パソコン・スマホ同士)を直接VPN接続する接続形態です。
tailscaleに登録したデバイスはすべてが相互にWireGuardでVPN接続され相互に通信可能となります。
そんな仕組みが「あっ!」という間に構築できるのがtailscaleです。
どこにいても自宅のネット環境が使える
そしてデバイス(パソコン・スマホ)ではなくネットワーク自体をサブネットとして登録することで、外出先からサブネットのメンバーとしてVPN接続することができます。
デバイス(外出先のパソコン・スマホ)からサブネット(自宅のネットワーク)に接続することで、どこからでも自宅ネットワークがいつもと同じように利用できる環境が構築できます。
そしてサブネット登録に便利なデバイスがオープンソースファームウェア「OpenWrt」です。
1,000円程度の中古ルーターで環境構築することができ、tailscale用モジュールも提供されています。
どんな回線環境でも自宅ネットにVPN接続できる
ネットワーク環境が進化する反面、最近の回線環境では外部からの接続が困難・不可能な回線サービスが増えてきました。
昔の「IPv4/PPPoE通信」のように簡単に外部から自宅に接続できなくなりました。
tailscaleを使えば(おそらく)どんな回線環境であっても簡単に外出先から自宅へ接続することができます。
そして「すべての環境」ではありませんが複数の回線環境で簡単に「VPN接続可能な自宅ネットワーク」が構築できました。
確認した回線環境は以下の環境です。
- 電力系光回線(IPv4/PPPoE接続)
- 楽天ひかり(Xpass接続)
- NTTドコモ・home5G(spモード接続)
- WiMAX +5G
- 楽天モバイル(スマホUSBテザリング接続)
無料プラン(Freeプラン)でも拠点間VPN接続ができる
tailscaleの料金プランはたびたび変更されるのですが、現時点(2023年11月)でのプラン体系では無料プラン「Freeプラン」でも複数台のルーターでサブネット登録ができるようになっています。
※かつてはサブネット登録できるルーターは1台まで、の制限がありました。
これにより、現在は無料プランでも2台以上のOpenWrtルーターを使って「拠点間VPN接続」ができるサービスになっています。
たとえば「自宅と仕事場」「自宅と実家(帰省先)」など複数のネットワークを丸ごとサブネット登録し、どこにいても複数のネットワーク利用が可能です。
tailscaleとセットでOpenWrtルーターおすすめ
そしてtailscaleのサブネット登録の仕組みを利用する場合におすすめのルーター環境が「OpenWrtルーター」です。
OpenWrtはフリーのルーター向けファームウェアで主に中古のルーターにインストールしてOpenWrtルーターを構築します。
OpenWrtルーターがあれば簡単に自宅のネットワークをtailscaleにサブネットとして登録することができます。
※最安1,000円程度のルーターでOpenWrtルーターが作れます。
市販のOpenWrtルーター
市販されているOpenWrtルーターがあります。
本記事紹介の「OpenWrt対応ルーター」ではなく「OpenWrtルーター」であり、最初から製品にOpenWrtが組み込まれているルーターになります。
GL.iNetという会社が「GL.iNetトラベルルーター」というジャンルの小型ルーターを販売しおり、これがOpenWrtを採用したルーターになります。
高機能なOpenWrtをGL.iNet独自のインターフェース操作により簡単に操作設定できるよう工夫されており、OpenWrtの入門用として最適です。
GL.iNetトラベルルーターのおすすめ機種
GL.iNetトラベルルーターはどれも同じような大きさと同じようなデザインで価格以外の違いがあまりわかりません。
購入検討するなら「高性能・高機能だけとお値段それなり」の「GL.iNet GL-AXT1800(Slate AX)」がおすすめです。
また、GL.iNetトラベルルーターの独自インターフェースを使って本記事記載手順よりもっと簡単にtailscaleを利用することもできます。
ちょっと安くて高機能「GL-A1300(Slate Plus)」
GL-AXT1800(Slate AX)よりかなり安いけど同じ機能が使えるコスパの良いルーターが「GL-A1300(Slate Plus)」です。
ハードウェア性能はお値段なりに下がりますが、GL-AXT1800(Slate AX)と同じファームウェアを搭載した最新機能が使える高コスパのGL.iNetトラベルルーターです。
予算とのご相談で「GL-AXT1800(Slate AX)はちょっと・・・」という方へおすすめのルーターです。