Linux 內(nèi)核的路由表
通過 route
命令查看 Linux 內(nèi)核的路由表:
[root@VM_139_74_centos ~]# routeKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth010.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth010.139.128.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-0ab63c131848172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-bccbfb788da0172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7485db25f958
[root@VM_139_74_centos ~]# route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.139.128.1 0.0.0.0 UG 0 0 0 eth010.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth010.139.128.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-0ab63c131848172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-bccbfb788da0172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7485db25f95812345678910111213141516171819202122
各列字段說明:
列 | 含義 |
---|
Destination | 目標(biāo)網(wǎng)絡(luò)或目標(biāo)主機。Destination 為 default(0.0.0.0 )時,表示這個是默認(rèn)網(wǎng)關(guān),所有數(shù)據(jù)都發(fā)到這個網(wǎng)關(guān)(這里是 10.139.128.1 ) |
Gateway | 網(wǎng)關(guān)地址,0.0.0.0 表示當(dāng)前記錄對應(yīng)的 Destination 跟本機在同一個網(wǎng)段,通信時不需要經(jīng)過網(wǎng)關(guān) |
Genmask | Destination 字段的網(wǎng)絡(luò)掩碼,Destination 是主機時需要設(shè)置為 255.255.255.255 ,是默認(rèn)路由時會設(shè)置為 0.0.0.0 |
Flags | 標(biāo)記,含義參考表格后面的解釋 |
Metric | 路由距離,到達(dá)指定網(wǎng)絡(luò)所需的中轉(zhuǎn)數(shù),是大型局域網(wǎng)和廣域網(wǎng)設(shè)置所必需的 (不在Linux內(nèi)核中使用。) |
Ref | 路由項引用次數(shù) (不在Linux內(nèi)核中使用。) |
Use | 此路由項被路由軟件查找的次數(shù) |
Iface | 網(wǎng)卡名字,例如 eth0 |
Flags 含義:
Linux 內(nèi)核的路由種類
主機路由
路由表中指向單個 IP 地址或主機名的路由記錄,其 Flags 字段為 H。下面示例中,對于 10.0.0.10
這個主機,通過網(wǎng)關(guān) 10.139.128.1
網(wǎng)關(guān)路由:
[root@VM_139_74_centos ~]# route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
...12345
網(wǎng)絡(luò)路由
主機可以到達(dá)的網(wǎng)絡(luò)。下面示例中,對于 10.0.0.0/24
這個網(wǎng)絡(luò),通過網(wǎng)關(guān) 10.139.128.1
網(wǎng)關(guān)路由:
[root@VM_139_74_centos ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.0.0.0 10.139.128.1 255.255.255.0 UG 0 0 0 eth01234
默認(rèn)路由
當(dāng)目標(biāo)主機的 IP 地址或網(wǎng)絡(luò)不在路由表中時,數(shù)據(jù)包就被發(fā)送到默認(rèn)路由(默認(rèn)網(wǎng)關(guān))上。默認(rèn)路由的 Destination
是 default 或 0.0.0.0
。
[root@VM_139_74_centos ~]# routeKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth01234
route 命令
route 命令可以顯示或設(shè)置 Linux 內(nèi)核中的路由表,主要是靜態(tài)路由。
對于局域網(wǎng)中的 Linux 主機,要想訪問 Internet,需要將局域網(wǎng)的網(wǎng)關(guān) IP 地址設(shè)置為這個主機的默認(rèn)路由。在命令行中通過 route
命令添加的路由在網(wǎng)卡重啟或機器重啟后失效。可以在 /etc/rc.local
中添加 route 命令來保證路由設(shè)置永久有效。
選項:
參數(shù):
add:增加路由記錄
del:刪除路由記錄
target:目的網(wǎng)絡(luò)或目的主機
gw:設(shè)置默認(rèn)網(wǎng)關(guān)
mss:設(shè)置TCP的最大區(qū)塊長度(MSS),單位MB
window:指定通過路由表的TCP連接的TCP窗口大小
dev:路由記錄所表示的網(wǎng)絡(luò)接口
添加路由 add
可以添加一條可用路由,或添加一條要屏蔽的路由。
添加路由
添加主機路由
添加主機路由時,需要指定網(wǎng)絡(luò) ID 和主機 ID,此時需要設(shè)置 netmask 255.255.255.255
:
[root@VM_139_74_centos ~]# route add -net 10.0.0.10 netmask 255.255.255.255 gw 10.139.128.1 dev eth0[root@VM_139_74_centos ~]# route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
...123456
添加網(wǎng)絡(luò)路由
添加網(wǎng)絡(luò)路由時,只需指定網(wǎng)絡(luò) ID,通過 netmask
設(shè)置掩碼長度:
[root@VM_139_74_centos ~]# route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.139.128.1 dev eth0[root@VM_139_74_centos ~]# route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface10.0.0.0 10.139.128.1 255.255.255.0 UG 0 0 0 eth0
...123456
添加添加同一個局域網(wǎng)的主機
不指定 gw 選項時,添加的路由記錄不使用網(wǎng)關(guān):
[root@VM_139_74_centos ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0[root@VM_139_74_centos ~]# route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0
...123456
屏蔽路由
[root@VM_139_74_centos ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject[root@VM_139_74_centos ~]# route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface224.0.0.0 - 240.0.0.0 ! 0 - 0 -...123456
刪除路由記錄
跟添加路由類似,可以刪除一條可用路由,或刪除一條屏蔽的路由。
刪除可用路由
route del -net 224.0.0.0 netmask 240.0.0.01
刪除屏蔽的路由
route del -net 224.0.0.0 netmask 240.0.0.0 reject1
刪除和添加設(shè)置默認(rèn)網(wǎng)關(guān)
添加或刪除默認(rèn)網(wǎng)關(guān)時,Linux 會自動檢查網(wǎng)關(guān)的可用性:
[root@VM_139_74_centos ~]# route add default gw 192.168.1.1SIOCADDRT: Network is unreachable
[root@VM_139_74_centos ~]# route del default gw 192.168.1.1SIOCDELRT: No such process