Centos默认路由添加不上

问题:

centos出现一个问题,默认路由添加不上。使用

route add default gw 192.168.13.1

这条命令添加默认路由时,不报错,但是使用ip route命令 查看路由时,刚才添加的那一条不见了。 先说结论,原因是NetworkManager的一个BUG导致的。查看NetworkManager版本,1.8版本存在这个BUG。在1.10版本修复,可以升级NetworkManager来解决这个问题。
在centos里面可以通过下面的命令查看NetworkManager的版本号,如果版本号低于1.10的话,可以通过升级NetworkManager来解决。

[root@localhost ~]# rpm -qa | grep Network
NetworkManager-team-1.8.0-9.el7.x86_64
NetworkManager-libnm-1.8.0-9.el7.x86_64
NetworkManager-tui-1.8.0-9.el7.x86_64
NetworkManager-wifi-1.8.0-9.el7.x86_64
NetworkManager-1.8.0-9.el7.x86_64

也可以修改网络配置文件/etc/sysconfig/network-scripts/ifcfg-ens33,添加一行NM_CONTROLLED=”no” 来解决。这里的配置文件中ifcfg-ens33要改成你的环境对应的接口的文件。

如果能够ping通公网ip无法ping域名,请在 /etc/resolv.conf  中添加DNS  例如:

nameserver   114.114.114.114

调试过程

监测路由变化

使用ip monitor命令监控路由变化,终端输入这个命令监测,然后从另一端添加路由。可以看到在添加默认路由时,ip monitor监测到路由的添加,并且发现路由又被删除了。

images

查看NetworkManager日志

首先需要打开NetworkManager的debug级别调试开关。
默认是INFO级别的

[root@localhost ~]# nmcli general logging
级别  域
INFO  PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY

我们使用下面的命令调成DEBUG级别

[root@localhost ~]# sudo nmcli general logging level debug
[root@localhost ~]# nmcli general logging
级别   域
DEBUG  PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY

然后开启Debug之后,再添加默认路由然后,执行journalctl -u NetworkManager来查看NetworkManager的日志。此时会看到是NetworkManager把路由删掉了。

images

原因

这是因为NetworkManager的一个BUG导致的。1.8版本的NetworkManager中默认路由是NMDefaultRouteManager来处理的。如果手动删除默认路由的话,会强制修改回配置文件中的默认路由,来阻止外部的修改。如果这时候配置文件中默认路由为空的话,表现出来的形式就是默认路由添加不上了。在NetworkManager1.10版本中NMDefaultRouteManager被废弃了,默认路由和普通路由一样的处理,手动添加的路由不会丢失了。
如果想要了解详细的信息,可以查看 https://bugzilla.redhat.com/show_bug.cgi?id=1503769

转载自:原文链接

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 抢沙发