
我希望將資料包從一個子網路傳送到另一個子網,距離超過一跳;舉個例子:
[ 192.168.0.4 ] - - - > [ 192.168.10.11 ] - - - > [ 172.23.100.13 ]
我想讓 192.168.0.4 連接到 172.23.100.13,但問題是:
# ip route add 172.23.100.13/32 via 192.168.10.11
Error: Nexthop has invalid gateway.
據我了解,Error: Nexthop has invalid gateway.
意思是“你不能這樣做,因為 192.168.10.11 不在 192.168.0.0/24 網路上,而這正是你所在的網路。”
我的問題是 iptables 規則是否可以實現這一點?我認為這是可能的,但我還無法讓事情正常運作。經過一番閱讀後,我嘗試設定 PREROUTING nat 規則,將前往 172.23.100.13 的封包發送到 192.168.10.11:
# iptables -t nat -A PREROUTING -d 172.23.100.13 -j DNAT --to-destination 192.168.10.11
不幸的是,什麼事也沒發生。我什至不知道如何進行調試。我努力了:
# iptables -t nat -A PREROUTING -d 172.23.100.13 -j LOG
但日誌中沒有顯示任何內容
我也嘗試過 tcpdump:
tcpdump -i <interface> -vv | egrep '(172.23.109.13|192.168.10.11)’ &
但只得到以下重複行:
192.168.0.4.43898 > 172.23.100.13.8000: Flags [S], cksum 0x2374 (incorrect -> 0xa00f), seq 573960788, win 62727, options [mss 8961,sackOK,TS val 1537225626 ecr 0,nop,wscale 7], length 0
這是正確的方法嗎?關於要檢查什麼的任何線索?
謝謝你!
答案1
我發現了這個拼圖中缺少的一塊。機器192.168.10.11
能夠發送資料包,172.23.100.13
因為網路似乎有一個 VXLAN 介面172.23.100.0/24
;因此回到基本要求,兩個網路必須在一台機器上連接才能路由到它們。