问题

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

ip route add default via 10.1.1.1

这条命令添加默认路由时,不报错,并且使用iproute命令查看路由时,刚刚添加的那一条不见了。先说推论,缘由是NetworkManager的一个BUG造成的。查看NetworkManager版本,1.8版本存在这个BUG。在1.10版本修补,可以升级NetworkManager来解决这个问题。

centos route add命令_命令英文_命令提示符

在centos上面可以通过下边的命令查看NetworkManager的版本号,假如版本号高于1.10的话,可以通过升级NetworkManager来解决。

Develop>rpm -qa | grep Network
NetworkManager-team-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

centos route add命令_命令英文_命令提示符

NetworkManager-libnm-1.8.0-9.el7.x86_64

也可以更改网路配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,添加一行NM_CONTROLLED=“no”来解决。这儿的配置文件中ifcfg-eth0要改成你的环境对应的插口的文件。

调试过程检测路由变化

使用ipmonitor命令监控路由变化,终端输入这个命令检测centos route add命令,之后从另一端添加路由。可以看见在添加默认路由时,ipmonitor检测到路由的添加,但是发觉路由又被删掉了。

企业微信截图_15441653854204.png

命令提示符_命令英文_centos route add命令

查看NetworkManager日志

首先须要打开NetworkManager的debug级别调试开关。

默认是INFO级别的。

bingfengfeifei@bingfengfeifei-PC:~$nmcli general logging 
LEVEL  DOMAINS                                                                                                                                                                                                                   
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 

centos route add命令_命令提示符_命令英文

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

bingfengfeifei@bingfengfeifei-PC:~$sudo nmcli general logging level debug
bingfengfeifei@bingfengfeifei-PC:~$sudo nmcli general logging            
LEVEL  DOMAINS                                                                                                                                                                                                                       
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 

命令英文_命令提示符_centos route add命令

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

企业微信截图_15441653982783.png

缘由

这是由于NetworkManager的一个BUG造成的。1.8版本的NetworkManager中默认路由是NMDefaultRouteManager来处理的。假如自动删掉默认路由的话,会强制更改回配置文件中的默认路由linux vi命令,来制止外部的更改。假如这时侯配置文件中默认路由为空的话,表现下来的方式就是默认路由添加不上了。在NetworkManager1.10版本中NMDefaultRouteManager被废弃了,默认路由和普通路由一样的处理centos route add命令,自动添加的路由不会遗失了。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复