路由和数据包修改

路由和数据包修改

我希望将数据包从一个子网传输到另一个子网,距离不止一跳;例如:

[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;因此又回到了基本要求,即两个网络必须在一台机器上连接才能路由到它们。

相关内容