![两个接口连接到同一个子网,如何确定其中一个接口的优先级?](https://linux22.com/image/1519647/%E4%B8%A4%E4%B8%AA%E6%8E%A5%E5%8F%A3%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%90%8C%E4%B8%80%E4%B8%AA%E5%AD%90%E7%BD%91%EF%BC%8C%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E5%85%B6%E4%B8%AD%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%EF%BC%9F.png)
在以下系统上,我遇到了网络问题,但我并不是网络专家。
CentOS release 5.4 (Final) Linux localhost.localdomain
2.6.18-164.6.1.el5 #1 SMP Tue Nov 3 16:12:36 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
两个以太网接口都配置为连接到同一个子网,这对我来说似乎并不理想,我认为这是以前为解决故障而采取的解决方法。效果是 ifconfig 如下所示:
eth0 Link encap:Ethernet HWaddr 00:03:2D:10:76:B0
inet addr:192.168.168.3 Bcast:192.168.168.255 Mask:255.255.255.0
inet6 addr: fe80::203:2dff:fe10:76b0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3084 errors:0 dropped:0 overruns:0 frame:0
TX packets:3108 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1422781 (1.3 MiB) TX bytes:1695768 (1.6 MiB)
Memory:fdfc0000-fdfe0000
eth1 Link encap:Ethernet HWaddr 00:03:2D:10:76:B1
inet addr:192.168.168.122 Bcast:192.168.168.255 Mask:255.255.255.0
inet6 addr: fe80::203:2dff:fe10:76b1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4236 (4.1 KiB) TX bytes:12980 (12.6 KiB)
Memory:fdec0000-fdee0000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:252097 errors:0 dropped:0 overruns:0 frame:0
TX packets:252097 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:85617560 (81.6 MiB) TX bytes:85617560 (81.6 MiB)
以及路线列表:
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.3
192.168.168.0/24 dev eth1 proto kernel scope link src 192.168.168.122
169.254.0.0/16 dev eth1 scope link
default via 192.168.168.1 dev eth0
default via 192.168.168.1 dev eth1
通过 eth0 向 192.168.168.x 发送流量不起作用,但这条路由优先于通过 eth1 的路由,而 eth1 可以。我找到了纠正这种情况的方法,方法是运行
/sbin/ip route del 192.168.168.0/24 dev eth0
但是,当服务器重新启动时,此配置会被删除(以及其他时候……?)。
我知道我可能会收到很多评论和答案,大意是我应该解决底层的连接问题,例如接口不连接到同一个子网,或者只使用一个子网,我同意!但是,这台机器位于世界非常偏远的地方,实际上改变物理网络及其与网络其余部分的连接非常困难,因为当地 IT 人员无法提供帮助,这种情况的存在是因为网络中其他地方的故障超出了我的控制范围。
谢谢!
答案1
如果您通过删除 eth0 的默认路由获得可行的解决方案,我建议您将其从静态配置中删除。
最有可能的是在这个文件中配置的/etc/sysconfig/网络脚本/ifcfg-eth0. 使用编辑器打开它并注释掉或删除包含以下内容的行网关=192.168.168.1。
要应用配置,我建议您关闭接口然后再打开,这是为了避免重新加载所有网络设备。以下是执行该操作的命令。
ip link set dev eth0 down
ip link set dev eth0 up
关于 ifcfg 文件的更多文档可以在这里找到这里。