![不同站点的不同外部 IP 地址](https://linux22.com/image/599515/%E4%B8%8D%E5%90%8C%E7%AB%99%E7%82%B9%E7%9A%84%E4%B8%8D%E5%90%8C%E5%A4%96%E9%83%A8%20IP%20%E5%9C%B0%E5%9D%80.png)
我的路由器ClearOS 6(Centos 6)。在我的路由器中,我有两个来自两个 ISP 的外部(互联网)网络连接。
主连接是连接到电缆调制解调器的 eth2,第二个连接是连接到 dsl 调制解调器的 ppp0。我已将 eth2 指定为主连接(具有较高的度量值)。实际上,这是通过 clearos 的 multiwan web 界面完成的。我在我的 Nagios 中进行了测试,以监控主连接是否正常。此连接是根据
curl ifconfig.me
但似乎 ifconfig.me 总是提供我的辅助连接的 IP 地址。我通过浏览器测试了它。是的,ifconfig.me 提供了辅助互联网 (ppp0) 的 IP 地址。但 whatismyipaddress.[com|org] 给出了我的主要 IP 地址 (eth2)。我通过
ip route list 0/0
<secondary network> dev ppp0 proto kernel scope link src <secondary ip address>
<primary network> dev eth2 proto kernel scope link src <primary ip address>
<lan> dev eth0 proto kernel scope link src <lan interface address>
default via <primary gateway address> dev eth2
它还显示主连接(eth2)作为默认路由。
这
traceroute www.google.com
和
traceroute ifconfig.me
两者似乎都通过主连接(eth2)进行追踪。
由于我们的辅助互联网连接仅具有有限的下载量,我不想在月底支付一大笔费用。
有人知道为什么 ifconfig.me 显示我的辅助地址吗?
确保我的路由器(以及局域网)使用正确的互联网连接的最佳方法是什么。
答案1
乍一看,您的路线配置似乎正确。
我建议您使用 Wireshark/T-Shark 分别查看离开每个外部接口 (eth2、ppp0) 的数据包,并查看运行命令时会发生什么curl ifconfig.me
。这可能会让您了解为什么使用不同的工具会得到不同的结果。
您是否尝试过查找其他 IP 地址工具看看你是否得到了相同的结果?同样,这可能会有所启发。
确保我的路由器(以及局域网)使用正确的互联网连接的最佳方法是什么。
但听起来你真正想要的是故障转移而不是负载平衡。也就是说,你希望所有流量都离开主连接,而辅助连接只是为了在主连接发生故障时继续使用。
来自ClearOS 文档:
多 WAN 权重用于平衡出站互联网流量。默认情况下,所有 WAN 接口的权重均为 1。此默认配置意味着网络流量将在不同的 WAN 连接之间大致均匀分配。
在典型的多 WAN 配置中,第二个宽带连接用于备份。第二个连接通常是低成本和低带宽的连接。在这种情况下,您需要将高带宽连接的权重设置为 3 或 4,同时将低成本/低端连接的权重设置为 1。
答案2
正如 kce 指出的那样,您的路由表看起来是正确的。既然如此,我怀疑您可能在不知情的情况下配置了某种 SNAT。
首先,尝试一下这个:
lsmod | grep conntrack
这是为了查看 conntrack 模块是否已加载。如果没有,请不要运行下一个命令,这是不必要的,列出空的 conntrack 表的简单操作将加载模块,而不会在之后自动卸载它。对于网络负载较高的服务器来说,这可能是一个定时炸弹,这些服务器的运行速度超过了内核连接跟踪表的默认大小。
如果您得到类似这样的信息...
nf_conntrack_ipv4 7597 3 iptable_nat,nf_nat
nf_conntrack 38083 4 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4
nf_defrag_ipv4 779 1 nf_conntrack_ipv4
...然后尝试使用以下命令列出 conntrack 表:
iptables -vn --line-numbers -t nat -L POSTROUTING
您要查找目标列中显示“SNAT”的一行,最右侧是辅助接口的 IP 地址。删除该行,一切就绪。
但愿如此。