WireGuardのClient越しネットワークへ疎通できるようにする
最初に
WireGuardは設定がコンパクトかつ高速なVPNですが、Client越しネットワークに疎通を行いたい場合があると思います。これが少し特殊だったので...
そこで成功した解決法を書きました。(1年前なのでエラー内容とか忘れました、、、覚えてるやつだけ書いときます、、、)
動作環境
Debian11(12でも動作済み)
状況・説明
サーバ10.0.7.1からクライアント10.0.7.100越しの192.168.20.0/24へ疎通したいのが目的です。
WireGuard
|WG_Server|(10.0.7.1)===========(10.0.7.100)|WG_Client|(192.168.20.0/24)------
WireGuardはクライアント→サーバ越しネットワークへは特段ややこしい設定をしなくてもAllowedIPsに書けば疎通します。
一方でサーバ→クライアント越しネットワークへは別途ルーティングを行う必要があります。
10.0.7.1から192.168.20.0/24へは10.0.7.100を通る必要があり、WireGuardに別途ルーティングを追加する必要があります。
設定
(基本的な設定は省略)
まず、10.0.7.100と192.168.20.0/24へ疎通許可をするために、[Peer]に
AllowedIPs = 10.0.7.100, 192.168.20.0/24
と書いておきます。しかしこれだけでは、192.168.20.0/24へは10.0.7.100しか知らないので、192.168.20.0/24宛へは10.0.7.100を通るようにルーティングする必要があります。 そしてWireGuadが立ち上がった後にそれに関わるネットワークへのルーティングを設定・変更することができませんでした。
そこで、[interface]に
PostUp = ip route change 192.168.20.0/24 via 10.0.7.100
PreDown = ip route delete 192.168.20.0/24
と書き加えます。ip route changeを使うことで先に宣言された192.168.20.0/24へのルートを10.0.7.100を通るようにconfigから直接書き換えます。これで設定は完了です。
WireGuardを再起動してからpingで疎通確認をしてください。
またこれで192.168.20.0/24から10.0.7.100に向けてIPマスカレードをしなくても、192.168.20.0/24からサーバ10.0.7.1(越しネットワーク)へ疎通できるようになります。
Discussion