WSR-2533DHP2 を OpenWrt で汎用サーバーにしてみた (WireGuard編)


備忘録です。
ブリッジモードにして汎用サーバーとして運用できるようになった後の続きの話となります。

外出時にもローカルネットワークにアクセスしたいと思うことが多々あるため、VPN サーバーを本機で構築していこうと思います。
設定方法を考えていたところ、寝草須乃介氏に「今の時代にVPN構築するなら、WireGuard使った方が快適では?」と言われ、調べたところ良さそうに感じたので、今回はこちらで構築していきます。

1. WireGuard のインストール

言うまでもないことですが、順を追って説明していきます。
LuCI が使えるので、そちらでインストールしても構いませんが、コンソールでサクッと入れてしまう方が簡単でしょう。
設定自体は LuCI で行う方が簡単なので、そちらや日本語化も含めインストールしておきます。

opkg update
opkg install wireguard-tools luci-app-wireguard luci-i18n-wireguard-ja

2. サーバー側の設定

LuCI にて ネットワーク > インターフェース にアクセスします。
インターフェースを新規作成... から以下の設定で作成します。

項目    入力     
名前    WG0
プロトコル WireGuard VPN

続いて、一般設定 で以下の通りに設定。

項目 入力
リッスンポート 51820
IPアドレス 192.168.12.1(任意)

ここで、キーを生成ボタンをクリックして、秘密鍵や公開鍵を作ります。
公開鍵はクライアント側で利用するため、控えておきます。

3. クライアント側の設定

まず、空のトンネルを作成します。
インターフェースの設定は以下の通りです。

項目      入力
名前 WSR-2533DHP2(任意)
IPアドレス 192.168.12.2(サーバー側と被らなければOK)
DNS サーバ 8.8.8.8(任意)

こちらもキーを生成しておいてください。
こちらの公開鍵はサーバー側で利用するため、控えておきます。

4. ピアの設定

接続するために、サーバーとクライアントを認識しあわせるための設定です。

まずは、クライアント側から。
先ほどのインターフェース設定画面(wg0)から ピア のタブを開き、ピアを追加 から以下の設定で追加する。

項目      入力
説明 iPhone 13 mini(デバイス名などを入れて識別すると良い)
公開鍵 3. クライアント側の設定 で生成した公開鍵を入力
許可されたIP 192.168.12.2(3. クライアント側の設定 で入力したIPアドレス)
許可されたIPのルート 有効(チェック)
永続的なキープアライブ 25(任意)

続いて、クライアント側。
ピアを追加から、以下の通り設定する。

項目      入力
公開鍵 2. サーバー側の設定 で生成した公開鍵を入力
エンドポイント 外部IPアドレス:開放中のポート番号
Allowed IPs 192.168.0.0/16(トンネルを通すアドレス範囲を指定)

エンドポイントについて
例)123.456.789.012:50920
ポート番号は、7. ルーターの設定静的IPマスカレード設定公開対象ポート がそれに当たります。

5. トラフィックルールの作成

ネットワーク > Firewall ページの 一般設定 タブの下部にある Zones に以下の設定を追加。

項目 入力
名前 wgwan
Input reject
Output accept
Forward reject
Masquerading 有効(チェック)

WSR-2533DHP2 ではない機器で、この記事を参考にされている方へ
Input / Output / Forward については、wan の設定と同じにしてください。

続いて、Traffic Rules タブに移動し、以下の設定を追加。

一般設定 タブ

項目 入力
名前 Allow-WireGuard
プロトコル UDP
Source zone wgwan
宛先ゾーン デバイス(入力)
宛先ポート 51820

詳細設定 タブ

項目 入力
Restrict to address family IPv4のみ

6. NATインタフェースの作成

ネットワーク > インターフェース に戻り、インターフェースを新規作成... から以下の設定で作成。

項目 入力
名前 WGNAT
プロトコル 静的アドレス
デバイス br-lan

引き続き、以下の通り設定を行います。

一般設定 タブ

項目 入力
IPv4アドレス 192.168.12.1(wg0 の IP アドレス)
IPv4ネットマスク 255.255.255.0

DHCPサーバー タブ > 一般設定 タブ

項目 入力
開始 2
制限 16(1~254 の間で任意)

DHCPサーバー タブ > 詳細設定 タブ

項目 入力
動的DHCP 無効(チェックを外す)

7. ルーターの設定

サーバーとクライアントの設定はこれで完了したので、後はルーター側の設定となります。
前回紹介した通り、私の光回線の接続方式は MAP-E なので、それに合わせた設定をしていきます。

NTT PR-500MI での説明となりますので、機種によって表記に違いや設定方法が異なります。
また、利用可能ポートの選定等、ご利用の環境に合わせて設定してください。

LAN側静的ルーティング設定

項目 入力
宛先IPアドレス/マスク長 192.168.12.0/24(wg0 のネットワーク)
ゲートウェイ 192.168.1.4(サーバーの IP アドレス)

静的IPマスカレード設定

項目 入力
対象プロトコル UDP
公開対象ポート 50920(任意の利用可能ポート)
LAN側宛先IPアドレス 192.168.1.4(サーバーの IP アドレス)
LAN側宛先ポート 51820

8. おわりに

クライアント側でトンネルを有効化し、ローカルに問題なくアクセスできることが確認できたら完成です。

こういった設定は不慣れなものなので、しっかりと理解せずにやってる部分がいくつかあります。
間違っている箇所や、指摘すべき場所がございましたらコメントにてお伝えいただければ幸いです。(気づくのに時間がかかるとは思います)

参考文献

https://openwrt.org/docs/guide-user/services/vpn/wireguard/server
https://yassi.hatenablog.com/entry/2021/12/25/011106 (めちゃ参考になりました。ありがとうございました。)
https://www.infrastudy.com/?p=1065