轉自:http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html
?
查看 Linux 內核路由表
?
使用下面的 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 — 目標是一個主機
?N?— 目標時某個網段
?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.conf
net.ipv4.ip_forward = 1
?
? ? ? 用戶還可以使用如下的命令查看當前系統是否支持包轉發。?
# sysctl net.ipv4.ip_forward