我肯定做错了什么事。
网络设置如下:
ST1 eth0
192.168.254.253
255.255.255.0
no gate
ST1 eth1
10.10.10.6
255.255.255.252
no gate
ST2 eth0
172.16.200.254
255.255.255.0
no gate
ST2 eth1
10.10.10.5
255.255.255.252
no gate
CLIENT
172.16.200.100
255.255.255.0
172.16.200.254
KENTUCKY
192.168.254.254
255.255.255.0
no gate
ST1:
ST2:
有人能指出我做错了什么吗?已经尝试了很多配置...
答案1
是否已告知路由器通过将 /proc/sys/net/ipv4/ip_forward 设置为 1 进行路由? http://www.linuxdocs.org/HOWTOs/Adv-Routing-HOWTO-12.html
如果这是问题所在,则进行如下设置将使其在重启后继续存在。
File:/etc/sysctl.conf:
net.ipv4.ip_forward = 1
http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/是我的 systcl 设置的来源
答案2
(哇,这花了一段时间——我不得不画两次。)
首先,我没有看到 Kentucky 上有将数据包发送到 172.16.200.0/24 的路由规则。并且 no-gate 意味着(对我来说,因为我以前从未处理过这种特定语法)它上面没有默认网关。
路由 101:网络可以将数据包发送给您,并不意味着它可以将数据包发送回其来源地。因此,即使您可以向肯塔基州发送 ping 命令,也无法返回答案。
ST1 指定了两次相同的路线:
up route add -net 172.16.200.0 netmask 255.255.255.0 gw 10.10.10.5 dev eth1
...这是无害的,因为它说的是同样的事情。
另外,我认为 ST2 上的这一行是错误的:
up route add -net 192.168.254.0 netmask 255.255.255.0 gw 10.10.10.5 dev eth0
...我认为这意味着你告诉它 192.168.254.0/24 网络可以通过其自身在错误的接口上访问。它还与正确的路由相矛盾,该路由位于 ST2 上的第一个集群中:
up route add -net 192.168.254.0 netmask 255.255.255.0 gw 10.10.10.6 dev eth1
因此。删除up route add -net 192.168.254.0 netmask 255.255.255.0 gw 10.10.10.5 dev eth0
ST2 上的规则,在 Kentucky 上添加一条规则,通过 ST1 进行默认路由(或仅发送 172.16.200/24 的数据包),这样就应该可以正常工作了。
如果这不起作用,请netstat -rn
对 ST1 和 ST2 执行操作并发布其输出。