CentOS7添加永久靜態路由(已測試通過)
轉載自:https://blog.51cto.com/8577921/2348053
一、ip route顯示和設定路由
1、顯示路由表
[root@centos7 ~]# ip route show default via 192.168.150.254 dev enp0s3 proto static metric 1024 192.168.150.0/24 dev enp0s3 proto kernel scope link src 192.168.150.110
太難看了,格式化一下(顯示的是默認網關和局域網路由,兩行的內容沒有共通性):
[root@centos7 tmp]# ip route show|column -t default via 192.168.150.254 dev enp0s3 proto static metric 1024 192.168.150.0/24 dev enp0s3 proto kernel scope link src 192.168.150.110
2、添加靜態路由
[root@centos7 ~]# ip route add 10.15.150.0/24 via 192.168.150.253 dev enp0s3 [root@centos7 ~]# [root@centos7 ~]# ip route show|column -t default via 192.168.150.254 dev enp0s3 proto static metric 1024 10.15.150.0/24 via 192.168.150.253 dev enp0s3 proto static metric 1 192.168.150.0/24 dev enp0s3 proto kernel scope link src 192.168.150.110 [root@centos7 ~]# [root@centos7 ~]# ping 10.15.150.1 PING 10.15.150.1 (10.15.150.1) 56(84) bytes of data. 64 bytes from 10.15.150.1: icmp_seq=1 ttl=63 time=1.77 ms 64 bytes from 10.15.150.1: icmp_seq=1 ttl=63 time=1.08 ms 64 bytes from 10.15.150.1: icmp_seq=1 ttl=63 time=1.57 ms ^C
3、刪除靜態路由
只需要把 add 替換成 del,或者更簡單的只寫目標網絡
[root@centos7 ~]# ip route del 10.15.150.0/24
備注;
ip route 指令對路由的修改不能保存,重啟就沒了。把 ip route 指令寫到 /etc/rc.local 也是徒勞的。
RHEL7官網文檔沒有提到 /etc/sysconfig/static-routes,經測試此文件已經無效;
/etc/sysconfig/network 配置文件僅僅可以提供全局默認網關,語法同 Centos6 一樣: GATEWAY=<ip address> ;
在 /etc/sysconfig/network-scripts/下,新建文件名為route-interfacename的文件
永久靜態路由需要寫到 /etc/sysconfig/network-scripts/route-interfacename 文件中
比如添加兩條靜態路由:(網卡的設備名叫em1)
[root@centos7 ~]# vi /etc/sysconfig/network-scripts/route-em1
10.15.150.0/24 via 192.168.11.2 dev em1
10.25.250.0/24 via 192.168.11.2 dev em1
173.241.113.99 via 192.168.1.1 dev em2
保存,然后service network restart重啟網絡服務后生效
二、設置永久的靜態路由
1、添加永久靜態路由
ip route 指令對路由的修改不能保存,重啟就沒了。把 ip route 指令寫到 /etc/rc.local 也是徒勞的。
RHEL7官網文檔沒有提到 /etc/sysconfig/static-routes,經測試此文件已經無效;
/etc/sysconfig/network 配置文件僅僅可以提供全局默認網關,語法同 Centos6 一樣: GATEWAY=<ip address> ;
永久靜態路由需要寫到 /etc/sysconfig/network-scripts/route-interface 文件中,比如添加兩條靜態路由:
[root@centos7 ~]# vi /etc/sysconfig/network-scripts/route-enp0s3
10.15.150.0/24 via 192.168.150.253 dev enp0s3
10.25.250.0/24 via 192.168.150.253 dev enp0s3
重啟計算機,或者重新啟用設備enp0s3才能生效。
[root@centos7 ~]# nmcli dev connect enp0s3
一般直接連接一次設備即可,如果不成功就先斷開設備再連接設備,注意必須兩個指令一起運行,否則,,,,,,你曉得。
[root@centos7 ~]# nmcli dev disconnect enp0s3 && nmcli dev connect enp0s3
2、清除永久靜態路由
可以刪除 ifcfg-enp0s3文件或者注釋掉文件里的相應靜態路由條目,重啟計算機。
想要讓修改后的靜態路由立即生效,只能用 ip route del 手工刪除靜態路由條目。
實驗的過程中出現兩個奇怪的現象:
1)有時候路由生效了但是在 ip route show 卻沒有顯示,重啟計算機后是肯定顯示的,原因暫時不明。
2)存在多個網卡時,默認路由似乎是隨機經由某個網卡設備。檢查了所有連接配置文件后發現,第一網卡的默認連接配置文件 ifcfg-eth0 設置了GATEWAY0(此設置會覆蓋/etc/sysconfig/network 定義的全局默認網關),第二網卡的連接配置文件 ifcfg-eth1 使用的是dhcp,會在啟動時也分配默認網關,兩個默認網關讓計算機糊塗了。這是在測試系統里經常發生的現象,生產系統一般不會讓網卡用dhcp,或者即使是用了也會仔細分配默認網關防止沖突。
其他需要注意的:
1)連接配置文件 ifcfg-* 里可以設置多個GATEWAY,一般第一個是 GATEWAY0,然后GATEWAY1, GATEWAY2... ,尾號最大的有效;
2)如果必須在/etc/sysconfig/network 文件定義全局網關,連接配置文件 ifcfg-* 就不要設置GATEWAY了,dhcp的連接要注意dhcp服務器不要定義默認網關。
3)ifcfg-enp0s3 文件改名為 ifcfg-eth0 后,route-enp0s3 文件也要改名為 route-eth0。