route 命令 Linux 內核路由表維護

版主: stnet253

回覆文章
tony
文章: 585
註冊時間: 2012-02-26, 07:04
聯繫:

route 命令 Linux 內核路由表維護

未閱讀文章 tony »

使用下面的 route 命令可以查看 Linux 內核路由表。
# route
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
route 命令的輸出項說明
輸出項
說明
Destination
目標網段或者主機
Gateway
閘道位址,”*” 表示目標是本主機所屬的網路,不需要路由
Genmask
網路遮罩
Flags
標記。一些可能的標記如下:

U — 路由是活動的

H — 目標是一個主機

G — 路由指向閘道

R — 恢復動態路由產生的表項

D — 由路由的幕後程式動態地安裝

M — 由路由的幕後程式修改

! — 拒絕路由
Metric
路由距離,到達指定網路所需的中轉數(linux 內核中沒有使用)
Ref
路由項引用次數(linux 內核中沒有使用)
Use
此路由項被路由軟體查找的次數
Iface
該路由表項對應的輸出介面
3 種路由類型
主機路由
主機路由是路由選擇表中指向單個IP位址或主機名稱的路由記錄。主機路由的Flags欄位為H。例如,在下面的示例中,本地主機通過IP位址192.168.1.1的路由器到達IP位址為10.0.0.10的主機。
Destination Gateway Genmask Flags Metric Ref Use Iface----------- ------- ------- ----- ------ --- --- -----10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0 網路路由
網路路由是代表主機可以到達的網路。網路路由的Flags欄位為N。例如,在下面的示例中,本地主機將發送到網路192.19.12的資料包轉發到IP位址為192.168.1.1的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface----------- ------- ------- ----- ----- --- --- -----192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0 默認路由
當主機不能在路由表中查找到目標主機的IP位址或網路路由時,資料包就被發送到默認路由(預設閘道器)上。默認路由的Flags欄位為G。例如,在下麵的示例中,默認路由是IP地址為192.168.1.1的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface----------- ------- ------- ----- ------ --- --- -----default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
配置靜態路由
route 命令
設置和查看路由表都可以用 route 命令,設置內核路由表的命令格式是:
# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 其中:
add : 添加一條路由規則
del : 刪除一條路由規則
-net : 目的地址是一個網路
-host : 目的地址是一個主機
target : 目的網路或主機
netmask : 目的地址的網路遮罩
gw : 路由資料包通過的閘道
dev : 為路由指定的網路介面
route 命令使用舉例
添加到主機的路由
# route add -host 192.168.1.2 dev eth0:0# route add -host 10.20.30.148 gw 10.20.30.40
添加到網路的路由
# route add -net 10.20.30.40 netmask 255.255.255.248 eth0
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41# route add -net 192.168.1.0/24 eth1 添加默認路由
# route add default gw 192.168.1.1
刪除路由
# route del -host 192.168.1.2 dev eth0:0
# route del -host 10.20.30.148 gw 10.20.30.40
# route del -net 10.20.30.40 netmask 255.255.255.248 eth0
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route del -net 192.168.1.0/24 eth1# route del default gw 192.168.1.1
設置包轉發
在 CentOS 中預設的內核配置已經包含了路由功能,但預設並沒有在系統啟動時啟用此功能。開啟 Linux 的路由功能可以通過調整內核的網路參數來實現。要配置和調整內核參數可以使用 sysctl 命令。例如:要開啟 Linux 內核的資料包轉發功能可以使用如下的命令。
# sysctl -w net.ipv4.ip_forward=1 這樣設置之後,當前系統就能實現包轉發,但下次啟動電腦時將失效。為了使在下次啟動電腦時仍然有效,需要將下面的行寫入設定檔/etc/sysctl.conf。
# vi /etc/sysctl.confnet.ipv4.ip_forward = 1 用戶還可以使用如下的命令查看當前系統是否支援包轉發。
# sysctl net.ipv4.ip_forward
回覆文章

誰在線上

正在瀏覽這個版面的使用者:Semrush [Bot] 和 1 位訪客