VPN経由ですべてのeth1トラフィックをルーティング

VPN経由ですべてのeth1トラフィックをルーティング

私のシステムには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.54sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1PCでパケット転送()を有効にすることを忘れないでください。

編集:クラシックルーティングは、パケットが受信されたインターフェイスやソースアドレスなどの履歴ではなく、パケットが移動する場所にのみ興味があるため、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

関連情報