ポート161へのすべての接続が別のゲートウェイ(openvpnを介して)を通過し、他の接続が直接接続する構成を設定しようとします。
[ローカルホスト] -> [ゲートウェイ] -> [リモート] - 確認
[localhost] <- [ゲートウェイ] <- [リモート] - VPN トンネルの背後からパケットが消えます。 tun0 ifaceから臭いがすると消えます。
私がしたこと:rt_tablesにgw1を追加してから、このルールを使用しました。
ip route add default via 10.8.0.1 dev tun0 table gw1
ip rule add fwmark 0x1 table gw1
iptables -A OUTPUT -t mangle -o eth0 -p tcp --dport 443 -j MARK --set-mark 1
iptables -A POSTROUTING -t nat -o tun0 -p tcp --dport 443 -j SNAT --to 10.8.0.2
iptables -A OUTPUT -t mangle -o eth0 -p udp --dport 161 -j MARK --set-mark 1
iptables -A POSTROUTING -t nat -o tun0 -p udp --dport 161 -j SNAT --to 10.8.0.2
だから私はtcpとudp接続をテストしており、次のように表示されます。
- リモート側では、すべてがうまく機能し、パケットはゲートウェイeth0に送り返されます。
- ゲートウェイでは、パケットはVPNトンネル(tun0)に戻されます。
- パケットが送信されるlocalhostで、パケットがtsharkの10.8.0.2(tun0)に到着した後に消える様子を表示します。ローカルホストはTCP再送信を実行するか、UDPパケットを再送信します。
Wiresharkはパケットキャプチャを確認しましたが、すべてのポートが正しいため、すべてのトランスポートに同じランダムなダイナミックポートを使用します。私も成功していないままlocalhostでSNATの代わりに仮面舞踏会を試しました。 DNATを使用して成功しないままパケットを127.0.0.1にリダイレクトしようとしましたが、わかりません。おそらく何かが間違っているようです。
このパケットが tun0 の後に消えるのはなぜですか?私の入力チェーンは現在すべてを許可します。 sysctl.confで興味のない新しい「機能」を有効または無効にする必要がありますか?
ありがとう
ベストアンサー1
私のルールが正しい
解決策:
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done
echo 1 > /proc/sys/net/ipv4/route/flush
今、すべてがうまくいきます。各ifaceでこの機能を無効にする必要があります。 「all」オプションは正しく機能しません。