メインルータの下にいるAPモードのOpenWRTをWireguardゲートウェイに

公開 | 更新 

OpenWRT の Wireguard によるサイト間VPNを確立させる前に、今回はまずメインルータの下にいる APモード のOpenWRT を Wireguard ゲートウェイに仕立て、Androidクライアントから接続できるようにします。

APモード(Dumb AP Mode)とは

WiFiのないNTT光ルータPR-S300SEを補完するために、GL-iNet社トラベルルータGL-AR750S SlateをいわゆるAPモード(Dumb AP Mode)で使用しています。

OpenWRT上のネットワークインターフェイスは実質LANのみ、GL-AR750S上の物理ポートはWANを含め全てブリッジLANに属しています。

図01.APモード インターフェイス

図01.APモード インターフェイス

図02.APモード ポートとVLAN

図02.APモード ポートとVLAN

図03.APモード ブリッジLAN

図03.APモード ブリッジLAN



 

OpenWRT公式に解説のある「Dumb APの作り方」では、DNSやDHCP、Firewallも全て無効にしましょうとありますが、サービスは止めずにFirewallはLANゾーンのみ、DHCPはメインルータとは配布レンジを違えてひっそり残していました。

 

ルータではなくAPをVPNゲートウェイに

このネットワークへ外部からVPNアクセスする環境を構築するに当たり、光ルータにはそうした機能は一切ないことから、OpenWRTベースのこのWiFi APにVPNゲートウェイの役割を果たしてもらおうと思うのですが、

図04.ネットワーク構成図

図04.ネットワーク構成図

存外そうした構築例は少ないためか、公式フォーラムでも「できる」「いや、できない」が平行線を辿っていました。

 

Wireguardパッケージの導入

いずれはサイト間VPNを構築したいことから、以前から興味のあったWireguardベースのメッシュ型VPN、tailscaleを導入しようと思い、あらためて調べてみると無料版で接続できるサブネットは1つまで、という制限があり導入を断念しました(結局その後のプラン改定で、無料版でも無制限のサブネットを扱えるようになりましたが…)。

そこで今回は構築のしやすさと速度に定評のあるWireguardを採用したいと思います。

このGL-AR750Sは、OpenWRTをベースにGL-iNetがカスタマイズしたメーカー謹製ファームウェアで動いているので、

元々ある程度のWireguard関連パッケージは既にインストール済。さらにLuCIから利用できるように、以下の2つのパッケージをインストールします。

  • luci-app-wireguard
  • luci-proto-wireguard
図05.Wireguard関連パッケージ

図05.Wireguard関連パッケージ

鍵の生成

ターミナルから次のコマンドで、Wireguardサーバの鍵ペアを生成します。

クライアントであるPeer用の鍵ペアもここで作りたい場合は、次の要領で。

いずれにおいても秘密鍵、公開鍵のペアを生成したら秘密鍵は各自が大切に保管し、公開鍵を接続相手と交換し合うのがこのVPNの基本です。

 

インターフェイスの作成

再びWebGUIのLuCIに戻り、 Network >> Interfaces ページでWireguard VPNをプロトコルとするインターフェイスを新規作成します。

図06.Wireguardインターフェイス作成

図06.Wireguardインターフェイス作成

インターフェイスの一般設定では、先ほどターミナルで生成した秘密鍵の中身をPrivate Key欄へ貼付け、待ち受けUDPポートと、トンネル端のIPアドレスを設定します。

図07.インターフェイス一般設定

図07.インターフェイス一般設定

インターフェイスの詳細では、 Bring up on boot にチェックが入っていることを確認するのみ。

図08.インターフェイス詳細設定

図08.インターフェイス詳細設定

インターフェイスが属するファイアウォールゾーンは、新たに wgvpn と言うゾーンを当てました。

図09.インターフェイスのFWゾーン指定

図09.インターフェイスのFWゾーン指定

ここまで、インターフェイス関連の設定を抜粋すると、次の通りです。

 

ファイアウォールゾーンの設定

Network >> Firewall ページで作成した wgvpn ゾーンの設定は以下の通りで、基本全て accept とし、マスカレードにはチェックを入れずにおきました。

図10.ファイアウォールゾーン一般設定

図10.ファイアウォールゾーン一般設定

図11.ファイアウォールゾーン詳細設定

図11.ファイアウォールゾーン詳細設定

設定ファイルの追記部は以下の通り。

 

メインルータの静的NATとルーティング設定

ここでGL-AR750Sの設定は一時中断してメインルータに移り、Wireguardが利用する 51820/UDP の静的NATを開けます。

図12.PR-S300SE静的NAT設定

図12.PR-S300SE静的NAT設定

そして、Wireguardのトンネルサブネット 192.168.99.0/24 へのトラフィックが迷子にならないよう、VPNゲートウェイであるGL-AR750Sへの静的ルーティングを設定します。

図13.PR-S300SE静的ルーティング設定

図13.PR-S300SE静的ルーティング設定

Androidクライアント

VPNクライアントにするAndroidスマートフォン ASUS Zenfone 8 Flip ZS672KSにWireguardクライアントをインストールしたら、接続プロファイルを 空白の状態から作成 します。

設定画面の上側は自身のWireguardインターフェイスに関するもの。適当な名前をつけ、生成された鍵ペアの公海鍵はOpenWRT側に渡す必要があるので、なんとかしてコピーします。

図14.Wireguardクライアントのインターフェイス

図14.Wireguardクライアントのインターフェイス

同じ画面の下半分はクライアント側から見たピア、つまりWireguardサーバの設定です。上述で生成したGL-AR750Sの公開鍵を貼付け、キープアライブを25秒に設定、エンドポイントはサーバ側のDDNSドメイン名の後ろにポート番号を入力します。

図15.Wireguardクライアントのピア設定

図15.Wireguardクライアントのピア設定

Allowed IPs 項は、全トラフィックをトンネル経由にするのであれば 0.0.0.0/0 を、接続先のLANのみにトンネルを利用するのであれば、LANサブネット 192.168.1.0/24 を入れます。

 

ゲートウェイにピアを登録

最後にクライアント情報をGL-AR750SのWireguardインターフェイスへ、ピアとして登録すれば完成です。

図16.Wireguardサーバのピア設定

図16.Wireguardサーバのピア設定



 

疎通の確認

Wireguardクライアントから接続してみます(うまく繋がらない場合はデバッグログを確認しましょう)。

図17.Wireguardクライアント接続中

図17.Wireguardクライアント接続中

OpenWRT側は、LuCIの Status >> Wireguard ページで簡単な接続状態を確認することができます。

図18.Wireguardサーバステータス

図18.Wireguardサーバステータス

ターミナルからCLIベースなら wg コマンドから。

 

こうしてWireguardゲートウェイは完成したので、次回は別拠点とのサイト間VPNを確立へプロジェクトを進めます。

 

 

created by Rinker
¥6,299 (2024/05/01 03:13:47時点 Amazon調べ-詳細)
created by Rinker
¥550 (2024/05/01 16:35:19時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA