linux – 使用多宿主服务器丢弃IP流量
(在详细介绍之前,我以Apache和SSH为例说明了这个问题,但这并不是特定于TCP流量,而是基于TCP和UDP协议的问题.)
我有一个运行Ubuntu 9.04的多链路多宿主服务器,其中eth0连接到外部网络,eth1连接到内部网络.外部网络呈现给“世界其他地方”,内部网络包含所有开发人员工作站和主力服务器.有一个防火墙阻止从“世界其他地方”到内部网络的流量,但不阻止传出请求. $/sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:30:18:a5:62:63 inet addr:xxx.yyy.159.36 Bcast:xxx.yyy.159.47 Mask:255.255.255.240 [snip] eth1 Link encap:Ethernet HWaddr 00:02:b3:bd:03:29 inet addr:xxx.zzz.109.65 Bcast:xxx.zzz.109.255 Mask:255.255.255.0 [snip] $route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface xxx.yyy.159.32 0.0.0.0 255.255.255.240 U 0 0 0 eth0 xxx.zzz.109.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 0.0.0.0 xxx.yyy.159.33 0.0.0.0 UG 100 0 0 eth0 Apache正在侦听端口80,sshd正在侦听22: $netstat --tcp -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:www *:* LISTEN tcp 0 0 *:ssh *:* LISTEN [snip] 从我在内部的开发机器xxx.zzz.109.40,我可以连接到内部地址,一切都很好.从外面我可以连接到外部地址,一切都像它应该的那样. 但是对于某些类型的测试,我想从我的开发机器连接到外部地址,但服务器拒绝连接请求.我猜它正在寻找它的路由表,因为传入的数据来自一个应该在eth1上的地址,但是它正在到达eth0,它正在丢弃它,可能是作为安全预防措施. 有没有办法可以放宽这个限制? 奇怪的是,这曾经在8.04上工作,但在8.10或9.04上不起作用,所以在去年的某个时候内核正在做一些额外的检查.为了使连接正常工作,返回路径需要与源路径相同,这意味着来自我的开发机器的消息到达eth0将不得不返回到eth0以便路由回我的机器. 这是一个图表,任何地方都没有NAT. Diagram http://i25.tinypic.com/ff37yx.png 解决方法
假设您没有任何阻止此操作的iptables规则,则需要禁用返回路径过滤.你可以这样做:
# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 您也可以使用特定的接口名称而不是全部,并且还有一个默认值,这将影响新创建的接口. 从:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |