私のシステムには3つのネットワークカードがあります:eth0(192.168.1.54)、eth1(192.168.1.55)、wg0(VPN、192.168.99.1)
すべてのeth1トラフィック(tcpとudp)をwg0(Wireguard VPN)経由でルーティングする方法を探しています。
私が達成したいのは、携帯電話/タブレット/ Apple TVなどでeth1アドレスをルーターに設定して、すべてのトラフィックがVPN経由でリダイレクトされるようにすることです。
リモート側(VPS)にはeth0(基本インターネット)とwg0(192.168.99.2)があります。
これまでに私がしたことは、両側にWireguardインターフェイスを正常に設定したことです(互いにpingできます)。
ルーティングテーブル:
default via 192.168.1.1 dev eth0 onlink
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.54
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.55
192.168.99.0/24 dev wg0 proto kernel scope link src 192.168.99.1
答え1
2 つのイーサネットインターフェイスは必要ありません。 VPNサーバーのパブリックIPへのホストパスを定義192.168.1.1
し、デフォルトパスがトンネルのリモートエンドを指すようにします(192.168.99.2
)。 LAN内の他のデバイスのデフォルトパスをとして指定します192.168.1.54
。sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
PCでパケット転送()を有効にすることを忘れないでください。
編集:クラシックルーティングは、パケットが受信されたインターフェイスやソースアドレスなどの履歴ではなく、パケットが移動する場所にのみ興味があるため、IPv4クラシックルーティングを使用して目的のソリューションを得ることはできません。パケットが受信されたインターフェイスに基づいてパケットを分類するには、ポリシールーティングを使用する必要があります。この分類によって、VPN トンネルを介してデフォルトルートを定義するなど、ルーティングに代替ルートテーブルを使用できます。
ポリシールーティングを使用するには、次にエントリ(VPN)を追加する必要があります/etc/iproute2/rt_tables
。
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
1 vpn
vpn
これは、ルーティングテーブル番号1の名前を提供します。
次に、次のポリシールールを追加します。
ip rule add unicast iif eth1 table vpn
このルールは、「パケットがインターフェイスに入ったら、eth1
ルーティングテーブルを使用してくださいvpn
」と効果的に言います。
次の手順でルールを確認できますip rule show
。
ip rule show
0: from all lookup local
32765: from all iif eth1 lookup vpn
32766: from all lookup main
32767: from all lookup default
ルールは一致するまで昇順で適用されます。パケットがインターフェーブで受信されると、eth1
ルール 32765 が一致し、そうでない場合、次のルールが試行されます。
vpn
これで、ルーティングテーブルにルートを追加できます。たとえば、トンネルにデフォルトルートを追加するには、次の手順を実行します。
ip route add default dev wg0 via 192.168.99.2 table vpn
vpn
ルーティングテーブルを印刷するには、次を使用します。
ip route show table vpn
まだ実際にテストしていないため、バグや一部欠落している可能性があります。ポリシールーティングの詳細については、次を参照してください。https://www.policyrouting.orgまたはhttps://linux-ip.net。