Centos默認路由添加不上的問題

問題

centos出現一個問題,默認路由添加不上。使用

ip route add default via 10.1.1.1

這條命令添加默認路由時,不報錯,但是使用ip route命令 查看路由時,剛纔添加的那一條不見了。 先說結論,原因是NetworkManager的一個BUG導致的。查看NetworkManager版本,1.8版本存在這個BUG。在1.10版本修復,可以升級NetworkManager來解決這個問題。
在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
NetworkManager-libnm-1.8.0-9.el7.x86_64

也可以修改網絡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,添加一行NM_CONTROLLED=“no” 來解決。這裏的配置文件中ifcfg-eth0要改成你的環境對應的接口的文件。

調試過程

監測路由變化

使用ip monitor命令監控路由變化,終端輸入這個命令監測,然後從另一端添加路由。可以看到在添加默認路由時,ip monitor監測到路由的添加,並且發現路由又被刪除了。
企業微信截圖_15441653854204.png

查看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 

我們使用下面的命令調成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 

然後開啓Debug之後,再添加默認路由然後,執行journalctl -u NetworkManager來查看NetworkManager的日誌。此時會看到是NetworkManager把路由刪掉了。
企業微信截圖_15441653982783.png

原因

這是因爲NetworkManager的一個BUG導致的。1.8版本的NetworkManager中默認路由是NMDefaultRouteManager來處理的。如果手動刪除默認路由的話,會強制修改回配置文件中的默認路由,來阻止外部的修改。如果這時候配置文件中默認路由爲空的話,表現出來的形式就是默認路由添加不上了。在NetworkManager1.10版本中NMDefaultRouteManager被廢棄了,默認路由和普通路由一樣的處理,手動添加的路由不會丟失了。
如果想要了解詳細的信息,可以查看 https://bugzilla.redhat.com/show_bug.cgi?id=1503769

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章