我有一个运行Ubuntu 9.04的多链路多宿主服务器,其中eth0连接到外部网络,eth1连接到内部网络.外部网络呈现给“世界其他地方”,内部网络包含所有开发人员工作站和主力服务器.有一个防火墙阻止从“世界其他地方”到内部网络的流量,但不阻止传出请求.
$/sbin/ifconfigeth0 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 tableDestination Gateway Genmask Flags Metric Ref Use Ifacexxx.yyy.159.32 0.0.0.0 255.255.255.240 U 0 0 0 eth0xxx.zzz.109.0 0.0.0.0 255.255.255.0 U 0 0 0 eth10.0.0.0 xxx.yyy.159.33 0.0.0.0 UG 100 0 0 eth0
Apache正在侦听端口80,sshd正在侦听22:
$netstat --tcp -aActive 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
您也可以使用特定的接口名称而不是全部,并且还有一个默认值,这将影响新创建的接口.
从:
总结reverse path filter; it is a check to see if,for a packet arriving on an interface,a packet sent to the original packet’s source address would be sent out on that interface; if not,the arriving packet is dropped. it can be consIDered an attempt at detecting packets with spoofed source addresses.
以上是内存溢出为你收集整理的linux – 使用多宿主服务器丢弃IP流量全部内容,希望文章能够帮你解决linux – 使用多宿主服务器丢弃IP流量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)