出于某种原因,我的Centos 5.9 Linux 2.6.18 x86_64希望我有两个默认路由。
每当我重新启动服务器,我的路由表如下所示:
[root@server1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 255.255.255.255 0.0.0.0 255.255.255.255 UH 0 0 0 bond0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 bond1 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 bond1 0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 bond0 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 bond1
bond1是本地networking,因此具有指向此networking的最后一条默认路由会使所有的互联网请求都失败。
这很容易通过执行route del default gw 192.168.0.254来修复,我可能会把这个命令添加到一些启动脚本中。 然而,我想了解发生了什么事情并find问题的根源。
我希望任何人都可以告诉我,为什么会这样。 我的研究证实,应该总是只有一个默认网关,但我无法find答案,为什么会自动地有两个。
这里是一些configuration文件:
[root@server1 ~]# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=myhostname.com [root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.10.11 NETMASK=255.255.255.0 NETWORK=192.168.10.0 BROADCAST=192.168.10.255 GATEWAY=192.168.10.1 ONBOOT=yes BOOTPROTO=none USERCTL=no [root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond1 DEVICE=bond1 IPADDR=192.168.0.15 NETMASK=255.255.255.0 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 GATEWAY=192.168.0.254 ONBOOT=yes BOOTPROTO=none USERCTL=no
我知道,交换bond0和bond1会使两个默认路由切换的地方,有效地给我开机上网。 但我仍然认为这不是一个好的解决scheme。
在互联网上,人们正在讨论/etc/sysconfig/network-scripts/route-X ,但是我没有这些文件。
谢谢你的时间。
“默认”路由根据ifcfg-<interface>文件中的GATEWAY行设置。 正如Dom在他的评论中提到的那样,如果你删除了不正确的GATEWAY行,你的路由表就会如你所愿。
GW和默认GW之间有区别。 根据您的configuration,看起来您希望两个接口都能够访问外部networking。 您可以按照build议删除GATEWAY线路,但这样做会阻止来自任何外部通信的bond1。
一旦你去多宿主,我觉得使用基于策略的路由是一个好主意。 也称为分割访问路由。 这是一个很好的习惯,当你想把多个接口放在同一个子网上时,这是一个很好的习惯。
为了您的具体情况,我会:
/etc/iproute2/rt_tables 100 bond0tbl 101 bond1tbl 现在您已经分别定义了名为bond0tbl和bond1tbl的内部表。 现在您需要为这些表创build规则
/etc/sysconfig/network-scripts/rule-bond0 from 192.168.10.11 table bond0tbl /etc/sysconfig/network-scripts/rule-bond1 from 192.168.0.15 table bond1tbl 现在您已经定义了规则,现在是时候定义路线了。
/etc/sysconfig/network-scripts/route-bond0 /etc/sysconfig/network-scripts/rule-bond1 最后,我将从两个ifcfg-devX文件中删除GATEWAY行,并将其添加到/etc/syconfig/network 。
对于一个特定的接口应该用于路由的GW,以及每个人都应该使用的默认GW,在所希望的路由不存在的情况下,容易混淆。 在/etc/sysconfig/network设置它对我来说总是感觉更“全球化”。
当你的鸭子都连续service network restart或ifup/ifdown或reboot以获得创build的一切。 要看它是否有效,你可以这样做:
ip route show table bond0tbl ip route show table bond1tbl ip route show table main ip rule show 回顾一下,
如果你想把bond0作为你的默认网关,把这些行放在/ etc / sysconfig / network文件中。 如果你想bond1作为你的默认网关,把GATEWAYDEV = bond1。
NETWORKING=yes HOSTNAME=mydbserver GATEWAYDEV=bond0 GATEWAY=192.168.xxx.xxx