这是设置:一台主机在我的本地网络上.它在说话
到远程位置的两个几乎相同的主机.两个遥控器
主机位于所有相同的网络上,充当冗余备份
对于彼此.
我从本地主机设置了两个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
传出的数据包路由正常,没问题.传入的数据包
很奇怪.似乎无论哪条隧道都有这条路线
具有更高的度量(上例中的tunnel2)将
忽略传入的数据包他们没事,也可以
用’tcpdump -i tunnel2’在本地机器上看到,但是他们
没有正确路由到本地网络.他们很简单
下降.我可以切换两个指标,然后是tunnel1
丢弃所有传入的数据包隧道路线较低
metric将正确地路由数据包,包括传入和传出.
这是“按设计工作吗?”我想发生什么,
当然,两个隧道上的所有数据包都是正确的
转发.这可能吗?
快速更新:一个人建议(我不知道为什么)在’ip tunnel’命令中添加’key’参数.我试过这个,每个隧道都有不同的密钥,两个隧道都有相同的密钥,但两个试验都没有效果.
解决方法
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中的默认值,但我不想为其他接口禁用该功能.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。