linux – 同一主机上的多个GRE隧道,只有一个路由传入的数据包
我在CentOS 6.2上遇到路由问题(内核2.6.32-220)
这是设置:一台主机在我的本地网络上.它在说话 我从本地主机设置了两个GRE隧道,每个隧道一个 ip tunnel add name tunnel1 mode gre local 10.2.1.2 remote 10.2.1.1 ip link set dev tunnel1 up ip route add 172.16.1.0/24 dev tunnel1 metric 101 ip tunnel add name tunnel2 mode gre local 10.2.1.4 remote 10.2.1.3 ip link set dev tunnel2 up ip route add 172.16.1.0/24 dev tunnel2 metric 102 传出的数据包路由正常,没问题.传入的数据包 这是“按设计工作吗?”我想发生什么, 快速更新:一个人建议(我不知道为什么)在’ip tunnel’命令中添加’key’参数.我试过这个,每个隧道都有不同的密钥,两个隧道都有相同的密钥,但两个试验都没有效果. 解决方法
感谢netdev邮件列表,我有一个答案.有一个我从未听说过的功能,称为“反向路径过滤”.打开时,如果传入的数据包到达除了将由传出数据包用于源地址的接口以外的接口,则此内核路由功能将静默地丢弃传入的数据包.它旨在作为安全功能,在大多数情况下是一个很好的默认设置,特别是当您没有仔细设置iptables时.
CentOS(可能是RHEL)默认在/etc/sysctl.conf(net.ipv4.conf.default.rp_filter = 1)中打开反向路径过滤.我在设置脚本中添加了以下命令: echo 0 > /proc/sys/net/ipv4/conf/tunnel1/rp_filter echo 0 > /proc/sys/net/ipv4/conf/tunnel2/rp_filter 这将关闭两个伪接口的反向路径过滤,现在一切正常. 请注意,为我的特定接口添加到sysctl.conf对我来说不起作用,因为这些接口是“动态”创建的,并且sysctl.conf仅在引导时读取.当然,我可以更改sysctl.conf中的默认值,但我不想为其他接口禁用该功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |