Centos
嘗試通過第二個網關設置埠重定向
我正在嘗試設置配置,其中到埠 161 的所有連接都將通過另一個網關(通過 openvpn),而其他網關則直接通過
$$ localhost $$->$$ gateway $$->$$ remote $$- 好的 $$ localhost $$<-$$ gateway $$<-$$ remote $$- 數據包在 vpn 隧道後消失。我可以在 tun0 iface 上聞到它,然後它就消失了。 我做了什麼:將 gw1 添加到 rt_tables 然後使用此規則
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)
- 在發送該數據包的本地主機上,我看到數據包如何到達 tshark 中的 10.8.0.2 (tun0),然後消失。本地主機進行 TCP 重傳或重新發送 UDP 數據包。
我檢查了wireshark中的數據包擷取並且所有埠都是正確的,因此它在所有傳輸過程中使用相同的隨機動態埠:來迴轉發。我還嘗試在 localhost 上使用 masquerade 而不是 SNAT,但沒有任何成功。嘗試使用 DNAT 將數據包重定向到 127.0.0.1 但沒有成功,但我不確定,也許我做錯了什麼。
為什麼這個數據包在 tun0 之後消失了?我的輸入鏈現在允許一切。也許我需要啟用或禁用 sysctl.conf 中我不關心的任何新“功能”?
謝謝
我的規則是正確的
解決方案:
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”無法正常工作。