測試作業系統 CentOS 8 x86_64 (虛擬機)
如果需要再開機後新增加 Routing Table ,以前會寫在 /etc/rc.d/rc.local ,不過自從系統改成 systemd – https://benjr.tw/94315 之後,這個方式需要修改設定,請參考 – https://benjr.tw/102545 ).
要新增/移除/修改 Routing Table 可以使用 route 或是 ip 這兩個指令.
route
# route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
檢視當前路由表 Routing table
[root@localhost ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default _gateway 0.0.0.0 UG 100 0 0 ens33 192.168.111.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.111.2 0.0.0.0 UG 100 0 0 ens33 192.168.111.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
新增一條路由+閘道
[root@localhost ~]# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.111.2 [root@localhost ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default _gateway 0.0.0.0 UG 100 0 0 ens33 10.0.0.0 _gateway 255.0.0.0 UG 0 0 0 ens33 192.168.111.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.111.2 0.0.0.0 UG 100 0 0 ens33 10.0.0.0 192.168.111.2 255.0.0.0 UG 0 0 0 ens33 192.168.111.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
更多關於 route 指令的用法請參考 – https://benjr.tw/22387
ip
ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics | token | macsec } OPTIONS := { -V[ersion] | -h[uman-readable] | -s[tatistics] | -d[etails] | -r[esolve] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maxi-mum-addr-flush-attempts } | -o[neline] | -rc[vbuf] [size] | -t[imestamp] | -ts[hort] | -n[etns] name | -a[ll] | -c[olor] | -br[ief] | -j[son] | -p[retty] }
檢視 Routing Table
[root@localhost ~]# ip route show default via 192.168.111.2 dev ens33 proto dhcp metric 100 192.168.111.0/24 dev ens33 proto kernel scope link src 192.168.111.167 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
新增 Routing Table
[root@localhost ~]# ip route add 10.0.0.0/8 via 192.168.111.2 dev ens33 [root@localhost ~]# ip route show default via 192.168.111.2 dev ens33 proto dhcp metric 100 10.0.0.0/8 via 192.168.111.2 dev ens33 192.168.111.0/24 dev ens33 proto kernel scope link src 192.168.111.167 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
更多關於 ip 指令的用法請參考 – https://benjr.tw/94155
開機後自動生效
如果需要再開機後自動新增加 Routing Table ,可以新增檔案 /etc/sysconfig/network-scripts/route-ens33 ( 命名方式 route-ifname )並編輯需要的 Routing Table ,語法同 ip 指令.
下面增加 Default Route ( /etc/sysconfig/network-scripts/ifcfg-devname 裡面有一個 DEFROUTE 設定 , yes – default route 無需求就改成 no )與 一筆 Routing Table (當 ip 目的為 10.0.0.0 時經由 ens33 並且透過 192.168.111.2 這 IP 的機器幫忙轉送)
[root@localhost ~]# vi /etc/sysconfig/network-scripts/route-ens33 default via 192.168.111.2 dev ens33 10.0.0.0/8 via 192.168.111.2 dev ens33
要立即生效可以使用 nmcli , 更多關於 nmcli (NetworkManager tools) 請參考 – https://benjr.tw/95702
[root@localhost ~]# nmcli dev connect ens33 Device 'ens33' successfully activated with '3e37b8c5-91c3-4889-97fd-71db846c7978'. [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.111.2 0.0.0.0 UG 100 0 0 ens33 10.0.0.0 192.168.111.2 255.0.0.0 UG 100 0 0 ens33 192.168.111.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0