ネットワーク名前空間からルート名前空間へのLANトラフィックのみを転送する

ネットワーク名前空間からルート名前空間へのLANトラフィックのみを転送する

チュートリアルに従ってマシンをセットアップしましたここWireguard インターフェースを唯一のインターフェースにします (そのため、すべてのアプリケーションはインターネットにアクセスするためにそれのみを使用できます)。

これは意図したとおりに動作しますが、今度は LAN (192.168.0.0/16) を除外して、SSH でアクセスしたり、HTTP(S) リバース プロキシを使用したりできるようにしたいと考えています。

IP 初心者なので、veth(vethVPN/vethPhys) ペアを設定して、vethPhys IP 経由で 192.168.0.0/16 のルートを設定してみました。

ip link add name vethVPN type veth peer name vethPhys
ip link set vethPhys netns physical
ip -n physical addr add 10.0.0.1/32 dev vethPhys
ip -n physical link set vethPhys up
ip link set vethVPN up
ip -n physical route 192.168.0.0/16 via 10.0.0.1

何が間違っているのでしょうか? これを達成する正しい方法は何ですか?

答え1

簡単に言うと:

メイン ネットワーク名前空間を LAN から切断すると、その名前空間を LAN の「一部」にすることができなくなります。

メインの名前空間を LAN とは異なるセグメントとして扱い、「物理」名前空間を使用してメインの名前空間と LAN 間をルーティングすることもできますが、これには LAN に接続されている他のすべてのマシン上で正しいルートが必要になります (DHCP サーバーが実行されるデバイスがそれを実行できる場合は、たとえば DHCP によって配布できます)。

または、別の設定を使用することもできます。メインの名前空間をLANに接続したまま、macvlanとwireguardプロセスを含む「wireguard」名前空間を作成し、wg0そのメインスペースからメインの名前空間にインターフェースを移動し、wg0デフォルトゲートウェイ

これにより、LAN を除くすべての宛先アドレスが Wireguard インターフェイスを通過するようになります。

関連情報