【网络】route和 IP route的区别|route 和 IP route 添加路由
目錄
route和 IP route的區別
?route 和 IP route 顯示路由
route 和 IP route 添加路由
route 添加路由
IP route 添加路由
添加的路由持久化
linux下添加路由的方法
使用 route 命令
?使用ip route 命令
route和 IP route的區別
route是一個相當簡單的工具,非常適合創建靜態路由。為了兼容性,它仍然存在于許多發行版中。
ip route功能更強大,功能更多,并且可以創建更專業的規則。
route
并非所有路由規則條目都可以用route 顯示,route 只顯示主路由表中的信息,而NAT路由信息以及和主路由表以外的其他路由表信息必須使用 ip route 工具單獨管理和查看。
D.1.?route (linux-ip.net):http://linux-ip.net/html/tools-route.html
IP route
IP route是用于 IP 管理的 iproute2 工具套件的另一部分,ip route 提供了用于操作任何路由表的管理工具。操作包括顯示路由或路由緩存、添加路由、刪除路由、修改現有路由、獲取路由和清除整個路由表或路由緩存。使用 ip route 時要記住的一件事是,您可以使用此命令對 255 個路由表中的任何一個進行操作。在 route 命令僅在主路由表(表 254)上運行的情況下,ip route 命令默認情況下在主路由表上運行,但可以通過 table 參數輕松coaxed into使用其他表。
D.2.?ip route (linux-ip.net):http://linux-ip.net/html/tools-ip-route.html#tools-ip-route-show
ip命令與ifconfig命令類似,但比ifconfig命令更加強大,主要功能是用于顯示或設置網絡設備、路由和隧道的配置等,ip命令是Linux加強版的的網絡配置工具,用于代替ifconfig命令。
ip命令是Linux管理員非常方便的工具。此工具的唯一缺點是更改是非持久性的,這意味著重新啟動后將無法生存。
原文鏈接:https://blog.csdn.net/qq_35029061/article/details/125967340
ip link list 顯示ip鏈路狀態信息
ip address show 除顯示所有網絡地址
ip route show 顯示主路由表信息
ip neigh show 顯示鄰居表
?route 和 IP route 顯示路由
route -n顯示現在所有路由
root@Ubuntu:~# route
?結果是自上而下, 就是說, 哪條在前面, 哪條就有優先, 前面都沒有, 就用最后一條default,
1、第一行的意思就是去往所有目標地址數據包由網關192.168.124.1?通過網卡eth0來轉發,Flags那一列中有G時才會使用Gateway
2、第二行:表示去往節點1的eth0的數據由網關192.168.124.254通過本機的eth0來轉發
3、第三行:同樣是去往節點2的eth0的數據由網關192.168.1244.253通過本機的eth0來轉發
4、第四行:意思就是去往192.168.122.0地址的數據包通過virbr0網橋設備來轉發
5、第五行:就是說去往192.168.124.0?地址中的數據要通過eth0網卡來轉發
#route add -net 192.168.1.0/24 gw 192.168.124.254#圖第2行添加命令
#route add -net 192.168.2.0/24 gw 192.168.124.253#圖第3行添加命令
其中:
add :?添加一條路由規則
del :?刪除一條路由規則
-net :?目的地址是一個網絡
-host :?目的地址是一個主機
target :?目的網絡或主機
netmask :?目的地址的網絡掩碼
gw :?路由數據包通過的網關
dev :?為路由指定的網絡接口
列出項說明:
ip route解讀
default via 192.168.1.1 dev wlan0
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.100
https://diego.assencio.com/?index=d71346b8737ee449bb09496784c9b344
先解釋第二行,所有發往192.168.1.0/24網絡的報文必須通過wlan0這個網絡接口(wifi網卡)轉發,并且使用192.168.1.100作為其source ip. 該ip就是通過DHCP獲取的綁定于wlan0這個接口的ip地址
proto kernel的意思是這個路由項是在自動配置階段由kernel創建的,而scope link的意思是192.168.1.0/24這個子網內的目標ip僅僅在wlan0這個接口上valid.
第一行是默認路由。任何無路由報文都通過wlan0經由默認網關192.168.1.1來轉發。
路由表的查看可有以下二種方法:
????? ip route list table table_number
??????ip route list table table_name
路由表序號和表名的對應關系在/etc/iproute2/rt_tables中,可手動編輯
| 查看命令 | 解釋 |
|---|---|
|
ip route ip route list table? table_name |
顯示系統路由 |
| ip route list 192.168.1.0/24 | 查看指定網段的路由 |
| ip route show [exact] 169.254.0.0/16 | 精準查看具體某一條路由 |
| ip route show match 172.18 | 模糊匹配某一條路由 |
| ip route show src 172.18.16.0/20 | 僅列出源地址前綴為172.18.16.0/20的路由 |
| ip route show via 172.18.31.253 | 僅列出通過前綴選擇的為該ip的路由 |
| ip -s route show cache 192.168.100.17 | 顯示來自路由緩存的統計信息 |
| ip route show table local 或:ip route list table local |
查看本地路由表 |
ip route list table main
linux 系統中,可以自定義從 1-252個路由表,其中,linux系統維護了4個路由表:
0#表: 系統保留表
253#表: defult table 沒特別指定的默認路由都放在改表
254#表: main table 沒指明路由表的所有路由放在該表
255#表: local table 保存本地接口地址,廣播地址、NAT地址 由系統維護,用戶不得更改
( 路由表序號和表名的對應關系在 /etc/iproute2/rt_tables 文件中,可手動編輯。路由表序號和表名添加完畢后, ip rule add from all table 表名, 然后ip rule list查看 )
參考博客:
Linux Advanced Routing & Traffic Control HOWTO
https://lartc.org/howto/
https://blog.csdn.net/liuqun69/article/details/88888893
route 和 IP route 添加路由
(本章節轉自:https://blog.csdn.net/Answer_to_you/article/details/108997735)
進行路由時,根據路由規則來進行匹配,按優先級(pref)從低到高匹配,直到找到合適的規則.所以在應用中配置默認路由是必要的..?
路由規則的添加
ip rule add from 192.168.1.10/32 table 1 pref 100
如果pref值不指定,則將在已有規則最小序號前插入
route 添加路由
(注意使用route 命令添加的路由,機器重啟或者網卡重啟后路由就失效了,持久化方法見后面說明)
#添加一條路由(發往192.168.62這個網段的全部要經過網關192.168.1.1)
route?add?-net?192.168.62.0?netmask?255.255.255.0?gw?192.168.1.1#刪除一條路由?刪除的時候不用寫網關
route?del?-net?192.168.122.0?netmask?255.255.255.0
示例1:添加到主機路由 (指定一個主機-host 192.168.4.2)
route add –host 192.168.4.2 dev eth0:1
route add –host 192.168.4.1 gw 192.168.4.250示例2:添加到網絡的路由(指定一個網絡-net 192.168.2.0/24)
route add –net IP netmask MASK eth0
route add –net IP netmask MASK gw IP
route add –net IP/24 eth1routeadd -net 192.168.1.11 netmask 255.255.255.0 eth0
routeadd?-net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
routeadd -net 192.168.1.0/24 eth0
routeadd-net192.168.1.0/24gw192.168.1.1
route add -net 192.168.2.0/24 gw 192.168.1.1
route add -host 192.168.2.100/32 gw 192.168.1.1
示例3:添加默認網關
route add default gw IP
route add default gw 192.168.1.1
刪除路由
route del -net 192.168.2.0/24 gw 192.168.1.1
route del -host 192.168.2.100/32 gw 192.168.1.1
示例和說明:
有兩塊網卡if1和if2
eth0: 192.168.10.23/255.255.255.0
eth1: 192.168.20.22/255.255.255.0
添加路由命令如下
route add -net 192.168.10.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.20.0 netmask 255.255.255.0 dev eth1
通過上面兩個命令, 發往192.168.10.0網段的IP包會通過eth0發送, 發往192.168.20.0網段的IP包會通過eth1發送.?
如果其它網段的IP包如何發送? 需要設置一個默認網關, 命令如下
route add default gw 192.168.20.1
通過上面命令, 會將除了這兩個網絡的IP包都發往192.168.20.1網關, 如何轉發到192.168.20.1網關? 在上面的兩條路由項中已經定義了, 會通過eth1網口轉發,
route? 命令說明:
route? [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
簡化版
route? [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
注:雖然可指定網絡接口,但是不建議這么做。
參數解釋
add:添加一條路由規則
del:刪除一條路由規則
-net:目的地址是一個網絡
-host:目的地址是一個主機
target:目的網絡或主機
netmask:目的地址的網絡掩碼
gw:路由數據包通過的網關
dev:為路由指定的網絡接口
鏈接:https://www.jianshu.com/p/93392249ef24
IP route 添加路由
注:創建完路由規則若需立即生效須執行#ip route flush cache;刷新路由緩沖
??? 可參數解析如下:?? &n
??????? From -- 源地址
??????? To -- 目的地址(這里是選擇規則時使用,查找路由表時也使用)
? ?Tos -- IP包頭的TOS(type of sevice)域Linux高級路由-
??? Dev -- 物理接口
??? Fwmark -- iptables標簽
添加路由到table 100。
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.183 table 100
查看的時候也要指定table 100: ip route list table? 100
| 命令 | 解釋 |
|---|---|
| ip route add default via 192.168.1.1 | 設置系統默認路由 |
| ip route add 192.168.2.0/24 via 192.168.1.1 | 設置192.168.2.0網段的網關為192.168.1.1 |
| ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 | 設置192.168.4.0網段的網關為192.168.0.254,數據走eth0接口 |
| ip route add default via 192.168.0.254 dev eth0 | 設置默認網關為192.168.0.254 |
| ip route add default via 192.168.1.1 table 1 | 在一號表中添加默認路由為192.168.1.1 |
| ip route add 192.168.0.0/24 via 192.168.1.2 table 1 | 在一號表中添加一條到192.168.0.0網段的路由為192.168.1.2 |
| ip route add prohibit 209.10.26.51 | 設置請求的目的地不可達的路由 |
| ip route add prohibit 209.10.26.51 from 192.168.99.35 | 假設您不想阻止所有用戶訪問此特定主機,則可以使用該from選項,阻止了源IP 192.168.99.35到達209.10.26.51 |
| ip route change default via 192.168.99.113 dev eth0 | 更改默認路由。此操作等同于先刪除,后新增 |
ip route append 192.168.2.0/24 via 192.168.1.12 #追加一個指定網絡的路由,為了平滑切換網關使用
修改路由
ip route change 192.168.2.0/24 via 192.168.1.11
ip route replace 192.168.2.0/24 via 192.168.1.111刪除路由
ip route del 192.168.2.0/24 via 192.168.1.1清空指定網絡的路由
ip route flush 192.168.2.0/24 #這個是清理所有192.168.2.0/24相關的所有路由,有時候設置錯網關存在多條記錄,就需要一次性清空相關路由再進行添加
指定路由metirc
ip route add 192.168.2.0/24 via 192.168.1.15 metric 10添加默認路由
ip route add 192.168.2.0/24 via 192.168.1.1默認路由到table 100
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.183 table 100
/online/ip_route_ctrl.sh: ip route add default via 192.168.1.1 dev eth0
靜態路由
ip route add 192.168.2.0 via 192.168.3.7 dev eth1 table 101linux之路由知識之ip route 命令中的疑惑,這篇問準詳細介紹了IP route
https://blog.csdn.net/u011068702/article/details/53899537
| 查看命令 | 解釋 |
|---|---|
| ip route get 169.254.0.0/16 | 獲取到目標的單個路由,并按照內核所看到的方式打印其內容 |
ip route delete
| 命令 | 解釋 |
|---|---|
| ip route del 192.168.4.0/24 | 刪除192.168.4.0網段的網關 |
| ip route del default | 刪除默認路由 |
| ip route delete 192.168.1.0/24 dev eth0 | 刪除路由 |
ip route flush
該flush選項與ip route一起使用時,將清空路由表或刪除特定目標的路由
| 命令 | 解釋 |
|---|---|
| ip route flush 10.38.0.0/16 | 刪除特定路由 |
| ip route flush table main | 清空路由表 |
添加的路由持久化
我們剛剛添加的路由是臨時的,重啟后將無法生存。要使路由持久化,您需要手動添加它們。
永久添加靜態路由(RHEL,Fedora,CentOS)
我們剛剛添加的路由是臨時的,重啟后將無法生存。要使路由持久化,您需要手動添加它們。
在/etc/sysconfig/network-scripts/?目錄中,創建一個接口文件route-interface,其中interface屬性是您的網絡接口名稱。在我們的例子中,這將是route-enp0s3
$ vim /etc/sysconfig/network-scripts/route-enps03
接下來,我們將添加路線,如下所示:
10.0.2.0/32 via 192.168.43.1
10.0.2.15? via 192.168.43.1
保存文件并退出。然后重新啟動NetworkManager服務
$ sudo systemctl restart NetworkManager
永久添加靜態路由(Ubuntu / Debian)
對于Debian發行版,編輯文件?/etc/network/interfaces
$ sudo vim /etc/network/interfaces
追加以下行:
up route add -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.43.1 dev enp0s3
保存并退出文件。最后,要使更改生效,請運行以下命令
$ sudo ifdown enp0s3 && sudo ifup enp0s3
?route添加路由持久化:
Linux下配置永久路由的幾種方式
命令行添加或刪除,默認只在內存中生效。當重啟網絡或者重啟主機后就失效了。為了路由開機加載生效可以將路由信息寫到/etc/rc.local或者/etc/sysconfig/static-routes中;
其中寫到/etc/rc.local的命令格式原樣即可,寫到/etc/sysconfig/static-routes中的命令格式如下:
添加到主機的路由:
any host 192.168.101.200 gw 192.168.101.1
添加到網絡的路由:
any net 192.168.101.0/24 gw 192.168.101.1
1.在/etc/rc.local里添加路由信息
route?add?-net?192.168.3.0/24?dev?eth0
route?add?-net?192.168.2.0/24?gw?192.168.3.254
#或者
routeadd-net192.168.1.0netmask255.255.255.0gw192.168.1.1
2.在/etc/sysconfig/network里追加
GATEWAY=[網關IP或者網關網卡名稱]
?GATEWAY=gw-ip?或者?GATEWAY=gw-dev
3./etc/sysconfig 中添加文件
添加永久靜態路由(方法一):
??[root@localhost ~]# vi /etc/sysconfig/static-routes
??any??net 192.168.10.0/24 gw 172.16.15.254
??any??net 192.168.177.0/24 gw 172.16.15.254
??添加永久靜態路由(方法二):
??vi route-ens33 (ens33是centos7的接口形式)
??192.168.177.0/24 via 172.16.15.254 dev ens33
??192.168.10.0/24 via 172.16.15.254 dev ens33
static-routes文件為路由固化文件。
1./etc/sysconfig目錄下,系統一般不會自動生成static-routes文件,需要手工創建。
2.static-routes文件中路由固化的格式① 添加默認路由
any net 0.0.0.0 netmask 0.0.0.0 gw 10.92.2.1
或者
any net 0.0.0.0/0 gw 10.92.2.1
② 添加網絡路由
any net 1.1.1.0? netmask 255.255.255.0 gw 1.1.1.10
或者
any net 1.1.1.0/24 gw 1.1.1.10
/etc/sysconfig/static-router :
any?net?x.x.x.x/24?gw?y.y.y.y
4.開啟IP轉發
1.臨時開啟
echo"1">/proc/sys/net/ipv4/ip_forward
2.永久開啟
vim/etc/sysctl.conf
修改net.ipv4.ip_forward=1
不同方法的優劣
兩種方式添加靜態路由對比
寫/etc/rc.local
重啟服務器生效;
重啟網絡服務,則靜態路由失效;
/etc/rc.local是系統啟動后最后運行的一個腳本,因此如果有如NFS需要網絡才能掛載的服務需求,則該方式不適合;
寫/etc/sysconfig/static-routes
重啟服務器生效;
重啟網絡服務生效:
適合需要網絡需求的服務,如NFS;
總結:添加靜態路由最好是寫到/etc/sysconfig/static-routes中,避免重啟網絡或者重啟主機后路由不生效。
鏈接:https://www.jianshu.com/p/93392249ef24
ip rule 路由策略數據庫管理命令
?ip rule show – 列出路由規則 縮寫:show、list、sh、ls、l
示例1:?#?ip?ru?ls
0:?from?all?lookup?local
32762:?from?192.168.4.89?lookup?fddi153
32764:?from?192.168.4.88?lookup?fddi153
32766:?from?all?lookup?main
32767:?from?all?lookup?253
1.命令
ip rule 路由策略數據庫管理命令
2.對象
路由策略數據庫的規則用于控制選擇路由的算法。
Internet上采用的路由算法一般是基于數據包目的地址的。
而在某些情況下,我們不只是需要通過數據包的目的地址決定路由,可能還需要通過其他一些域:源地址、IP協議、傳輸層端口甚至數據包的負載。這就叫做:策略路由(policy routing)。
注意:策略路由(policy routing)不等于路由策略(rouing policy)。
在這種情況下,傳統的基于目的地址的路由表就無法滿足要求了,需要使用路由策略數據庫(routing policy database,RPDB)代替,通過它選擇執行某些路由。這些規則可以由很多不同的狀態,而且它們沒有天生的次序,要由系統管理員決定。
RPDB可以 匹配以下的域:?
數據包的源地址;?
數據包的目的地址;?
服務類型(Type of Service);?
進入的網絡接口;?
匹配IP協議和傳輸層端口也是可能的,不過這要依靠iptables或者ipchains通過fwmark為某些數據包做標記,并重定向。
每個路由策略由一個選擇符(selector)和一個操作(action)組成。系統按照順序搜索路由策略數據庫,把選擇符和{源地址、目的地址、進入接口、tos、fwmark}等關鍵詞進行匹配,如果匹配成功,就執行action定義的操作。操作或者成功返回,或者失敗并且中止路由策略。否則,系統繼續查詢路由策略數據庫。
操作如何定義?最原始的操作是選擇下一跳(nexthop)和輸出設備(output device)。Cisco IOS使用這種方式,我們姑且把這叫做匹配并設置(match & set)。而Linux的方式則更為靈活,Linux允許的操作包括:基于目的地址的路由表查詢以及按照最長匹配的原則從路由表中選擇路由。因此,匹配并 設置(match & set)的方式只是一個最簡單的特例而已。?
再系統啟動時,內核會為路由策略數據庫配置三條缺省的規則:?
優先級 選擇符 操作 解釋 ?
0 匹配任何條件 查詢路由表local(ID 255) 路由表local是一個特殊的路由表,包含對于本地和廣播地址的高優先級控制路由。rule 0非常特殊,不能被刪除或者覆蓋。 ?
32766 匹配任何條件 查詢路由表main(ID 254) 路由表main(ID 254)是一個通常的表,包含所有的無策略路由。系統管理員可以刪除或者使用
另外的規則覆蓋這條規則。
32767 匹配任何條件 查詢路由表default(ID 253) 路由表default(ID 253)是一個空表,它是為一些后續處理保留的。對于前面的缺省策略沒有匹配到的數據包,系統使用這個策略進行處理。這個規則也可以刪除。
不要混淆路由表和策略:規則指向路由表,多個規則可以引用一個路由表,而且某些路由表可以沒有策略指向它。如果系統管理員刪除了指向某個路由表的所有規則,這個表就沒有用了,但是仍然存在,直到里面的所有路由都被刪除,它才會消失。?
3.規則類型?
路由策略規則數據庫可以包括如下類型的規則:?
unicast 返回從被引用的路由表中發現的路由。
blackhole 丟棄數據包,不做任何反應。
unreachable 產生網絡不可達(Network is unreachable)的ICMP錯誤信息 。
prohibit 產生通訊被禁止(Communication is administratively prohibited)的ICMP錯誤信息。
nat 把數據報的源地址轉換為其它的值。
4.命令?
add、delete、show(或者list)?
5.ip rule add -- 插入新的規則
ip rule delete -- 刪除規則。
縮寫:add、a;delete、del、d?
參數
type TYPE(default): 這個規則的類型。有效的類型上一節已經介紹過了。
from PREFIX: 匹配的源地址
iif NAME: 選擇數據包進入的設備。如果接口是回環設備,這個規則就只匹配源于本機的數據包。這意味著,你可以為本機發出的數據包和要轉發的數據包分別建立路由表,使兩者完全隔離。
tos TOS或者dsfield TOS: 選擇匹配的TOS值 ?
fwmark MARK: 選擇要匹配的fwmark值 ?
priority PREFERENCE: 設置這個規則的優先級。每個規則的優先級都應該明確設置為一個唯一的數值。實際上,由于歷史的原因,ip roule add命令無需任何優先級的值,也不必是唯一的。如果用戶沒有在命令中提供優先級的值,內核會自動選擇。如果用戶提供的優先級值已經存在,內核也不會拒絕這次請求,而是在相同優先級的規則前面插入新的規則。 ?
table TABLEID: 如果規則選擇符匹配,就被查詢的路由表識別符。 ?
realms FROM/TO: 如果規則匹配和路由表查詢成功,選擇的realms值。 ?
nat ADDRESS: 設置要進行網絡地址轉換的IP地址段。ADDRESS或者是進行網絡地址轉換ip地址段,或者是一個本機地址,甚至可以是0。 ?
警告:使用上面兩個命令對路由策略數據庫進行的任何修改都不會馬上生效。只有使用ip route flush cach命令刷新路由緩存之后才會生效。?
示例
通過路由表inr.ruhep路由來自源地址為192.203.80/24的數據包?
ip ru add from 192.203.80/24 table inr.ruhep prio 220
把源地址為193.233.7.83的數據報的源地址轉換為192.203.80.144,并通過表1進行路由?
ip ru add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320
刪除無用的缺省規則?
ip ru del prio 32767
注:32767和32766都可以刪除,而0是不可以刪除的。
8.7.ip rule show -- 列出路由規則?
縮寫:show、list、sh、ls、l
# ip rule ls
0: from all lookup local?
200: from 192.203.80.0/24 to 193.233.7.0/24 lookup main
210: from 192.203.80.0/24 to 192.203.80.0/24 lookup main
220: from 192.203.80.0/24 lookup inr.ruhep realms inr.ruhep/radio-msu
300: from 193.233.7.83 to 193.233.7.0/24 lookup main
310: from 193.233.7.83 to 192.203.80.0/24 lookup main
320: from 193.233.7.83 lookup inr.ruhep map-to 192.203.80.144
32766: from all lookup main?
#
每行第一部分的數字是規則的優先級,接著是選擇符。
關鍵詞lookup后面接著路由表識別符。?
如果規則要進行網絡地址轉換,還需要一個關鍵詞map-to設置轉換以后的地址。?
上面的示例非常簡單,192.203.80.0/24和193.233.7.0/24組成內部網絡,但是它們向外發送數據包要通過不同的路由。主機193.233.7.83和外界會話時,地址需要轉換為192.203.80.144。
linux的路由表與路由策略
ip route 只是基于目的地址的路由選擇
ip rule 路由策略,控制路由選擇,可根據源地址,源IP等進行路由選擇
路由策略由選擇符合操作組成
ip rule add ? 添加策略
ip rule delete ?刪除策略
ip rule show ?顯示策略
使用路由策略可以更好的控制路由走向
下面一個例子顯示了使用路由策略的優點:
假設有一臺雙線服務器
有兩張網卡,有電信IP和網通IP地址,實現電信IP訪問服務器時,服務器響應使用電信網關,網通IP訪問服務器時,服務器響應使用網通網關。
假設電信IP為
222.73.121.100/24 網關 222.73.121..1
網通IP
112.80.1.100/24 網關 112.80.1.1
方法1(靜態路由方法):
A.使用電信網關做默認路由,并添加網通的路由條目,并將條目寫到/etc/rc.local或者/etc/sysconfig/network里面,以開機時可以加載
在network里面添加GATEWAY=222.73.121.1
添加路由條目如下
route add –net 58.16.0.0/13 gw 112.80.1.1
…
B.為每個網卡設置路由:假設eth0為222.73.121.100/24,eth1為112..80.1.100/24,新建以下文件
/etc/sysconfig/network-scripts/route-eth1
按如下格式添加路由條目
58.16.0.0/13 via 112.80.1.100
缺點是需要添加很多條目的路由條目,并且需要更新,如果有一個網通網段未添加,這個網段的IP就不能訪問服務器的。
方法2(根據用戶訪問的路徑設置靜態路由):
1. 先在/etc/sysconfig/network里面添加默認路由GATEWAY=222.73.121.1
2. 設置ip rule 策略
vi /etc/iproute2/rt_tables #添加路由表
[root@lamp iproute2]# cat rt_tables
#
# reserved values
#
255 ? ? local
254 ? ? main
253 ? ? default
0 ? ? ? unspec
252 dianxin ? #電信路由表
251 wangtong ? #網通路由表
#
# local
3. 添加原路返回路由
ip ?route ?flush ?table dianxin
ip ?route ?add ?default ?via 222.73.121.1 dev ?eth0 ?src 222.73.121.100 table dianxin
ip ?rule ?add ?from ?222.73.121.100 ?table ?dianxin
ip route flush table wangtong
ip ?route ?add ?default ?via 112.80.1.1 dev eth1 ?src 112.80.1.100 table wangtong
ip ?rule ?add ?from ?112.80.1.100 ?table ?wangtong
即讓從電信IP過來的請求按照電信路由返回,從網通IP過來的請求從網通路由返回
將上述命令添加至/etc/rc.local中,以便重啟可以生效
[root@lamp ~]# ip rule show
0: ? ? ?from all lookup 255
32764: from 112.80.1.100 lookup wangtong
32765: from 222.73.121.100 lookup dianxin
32766: from all lookup main
32767: from all lookup default
重啟網絡服務可以看到路由策略生效。
:https://blog.csdn.net/u013018618/article/details/80097584
linux下添加路由的方法
(本章節轉自:Linux下使用route添加路由-良許Linux教程網 -https://www.lxlinux.net/6753.html)
使用 route 命令
一:使用 route 命令添加
使用route 命令添加的路由,機器重啟或者網卡重啟后路由就失效了,方法:
#添加到主機的路由#?
route?add?–host?192.168.168.110?dev?eth0
#?route?add?–host?192.168.168.119?gw?192.168.168.1#添加到網絡的路由#?
route?add?–net?IP?netmask?MASK?eth0
#?route?add?–net?IP?netmask?MASK?gw?IP
#?route?add?–net?IP/24?eth1
#添加默認網關
#?route?add?default?gw?IP
#刪除路由#?
route?del?–host?192.168.168.110?dev?eth0
#添加一條路由(發往192.168.62這個網段的全部要經過網關192.168.1.1)
route?add?-net?192.168.62.0?netmask?255.255.255.0?gw?192.168.1.1
#刪除一條路由?刪除的時候不用寫網關 route?del?-net?192.168.122.0?netmask?255.255.255.0
二:在linux下設置永久路由的方法:
1.在/etc/rc.local里添加
route?add?-net?192.168.3.0/24?dev?eth0
route?add?-net?192.168.2.0/24?gw?192.168.3.254
2.在/etc/sysconfig/network里添加到末尾?GATEWAY=gw-ip?或者?GATEWAY=gw-dev
3./etc/sysconfig/static-router :
any?net?x.x.x.x/24?gw?y.y.y.y
Route命令的正確用法
使用 Route 命令行工具查看并編輯計算機的 IP 路由表。Route 命令和語法如下所示:
route?[-f]?[-p]?[Command?[Destination]?[mask?Netmask]?[Gateway]?[metric?Metric]]?[if?Interface]]
1
-f?清除所有網關入口的路由表。?-p?與?add?命令一起使用時使路由具有永久性。?Command?指定您想運行的命令 (Add/Change/Delete/Print)。?Destination?指定該路由的網絡目標。?mask Netmask?指定與網絡目標相關的網絡掩碼(也被稱作子網掩碼)。?Gateway?指定網絡目標定義的地址集和子網掩碼可以到達的前進或下一躍點 IP 地址。?metric Metric?為路由指定一個整數成本值標(從?1?至?9999),當在路由表(與轉發的數據包目標地址最匹配)的多個路由中進行選擇時可以使用。?if Interface?為可以訪問目標的接口指定接口索引。若要獲得一個接口列表和它們相應的接口索引,使用?route print?命令的顯示功能。可以使用十進制或十六進制值進行接口索引。???在命令提示符處顯示幫助。?示例?route print?顯示 IP 路由表的全部內容
route print 10.*?顯示以 10. 起始的 IP 路由表中的路由
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1?添加帶有?192.168.12.1?默認網關地址的默認路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1?向帶有?255.255.0.0?子網掩碼和?10.27.0.1?下一躍點地址的?10.41.0.0?目標中添加一個路由
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1?向帶有?255.255.0.0?子網掩碼和?10.27.0.1?下一躍點地址的?10.41.0.0?目標中添加一個永久路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7?向帶有?255.255.0.0?子網掩碼、10.27.0.1?下一躍點地址且其成本值標為?7?的?10.41.0.0?目標中添加一個路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3向帶有?255.255.0.0?子網掩碼、10.27.0.1?下一躍點地址且使用?0x3?接口索引的?10.41.0.0?目標中添加一個路由
route delete 10.41.0.0 mask 255.255.0.0?刪除到帶有?255.255.0.0?子網掩碼的?10.41.0.0?目標的路由
route delete 10.*?刪除以?10.?起始的 IP 路由表中的所有路由
route?change?10.41.0.0?mask?255.255.0.0?10.27.0.25`將帶有?`10.41.0.0`?目標和?`255.255.0.0`?子網掩碼的下一躍點地址從?`10.27.0.1`?修改為?`10.27.0.25
傳統的網絡配置命令
-
使用ifconfig命令配置并查看網絡接口情況
#示例1:?配置eth0的IP,同時激活設備:
ifconfig?eth0?192.168.4.1?netmask?255.255.255.0?up#示例2:?配置eth0別名設備?eth0:1?的IP,并添加路由
ifconfig?eth0:1?192.168.4.2
route?add?–host?192.168.4.2?dev?eth0:1#示例3:激活(禁用)設備
ifconfig?eth0:1?up(down)#示例4:查看所有(指定)網絡接口配置
ifconfig?(eth0)
\2. 使用route 命令配置路由表
示例1:添加到主機路由
route?add?–host?192.168.4.2?dev?eth0:1
route?add?–host?192.168.4.1?gw?192.168.4.250示例2:添加到網絡的路由
route?add?–net?IP?netmask?MASK?eth0
route?add?–net?IP?netmask?MASK?gw?IP
route?add?–net?IP/24?eth1示例3:添加默認網關
route?add?default?gw?IP示例4:刪除路由
route?del?–host?192.168.4.1?dev?eth0:1示例5:查看路由信息
route?或?route?-n?(-n?表示不解析名字,列出速度會比route?快)
3.ARP 管理命令
示例1:查看ARP緩存
arp示例2:?添加
arp?–s?IP?MAC示例3:?刪除
arp?–d?IP
\4.?ip是iproute2軟件包里面的一個強大的網絡配置工具,它能夠替代一些傳統的網絡管理工具。例如:ifconfig、route等, 上面的示例完全可以用下面的ip命令實現,而且ip命令可以實現更多的功能.下面介紹一些示例: 4.0 ip命令的語法
ip?[OPTIONS]?OBJECT?[COMMAND?[ARGUMENTS]]
4.1 ip link set–改變設備的屬性. 縮寫:set、s
示例1:up/down?起動/關閉設備。
#?ip?link?set?dev?eth0?up
這個等于傳統的?#?ifconfig?eth0?up(down)示例2:改變設備傳輸隊列的長度。
參數:txqueuelen?NUMBER或者txqlen?NUMBER
#?ip?link?set?dev?eth0?txqueuelen?100示例3:改變網絡設備MTU(最大傳輸單元)的值。
#?ip?link?set?dev?eth0?mtu?1500示例4:?修改網絡設備的MAC地址。
參數:?address?LLADDRESS
#?ip?link?set?dev?eth0?address?00:01:4f:00:15:f1
4.2?ip link show–顯示設備屬性. 縮寫:show、list、lst、sh、ls、l 、-s選項出現兩次或者更多次,ip會輸出更為詳細的錯誤信息統計。
示例:
#?ip?-s?-s?link?ls?eth0
eth0:?mtu?1500?qdisc?cbq?qlen?100
link/ether?00:a0:cc:66:18:78?brd?ff:ff:ff:ff:ff:ff
RX:?bytes?packets?errors?dropped?overrun?mcast
2449949362?2786187?0?0?0?0
RX?errors:?length?crc?fifo?missed
0?0?0?0?0
TX:?bytes?packets?errors?dropped?carrier?collsns
178558497?1783946?332?0?332?35172
TX?errors:?aborted?fifo?window?heartbeat
0?0?0?332
這個命令等于傳統的?ifconfig?eth0
5.1?ip address add--添加一個新的協議地址. 縮寫:add、a
示例1:為每個地址設置一個字符串作為標簽。為了和Linux-2.0的網絡別名兼容,這個字符串必須以設備名開頭,接著一個冒號,
#?ip?addr?add?local?192.168.4.1/28?brd?+?label?eth0:1?dev?eth0示例2:?在以太網接口eth0上增加一個地址192.168.20.0,掩碼長度為24位(155.155.155.0),標準廣播地址,標簽為eth0:Alias:
#?ip?addr?add?192.168.4.2/24?brd?+?dev?eth1?label?eth1:1
這個命令等于傳統的:?ifconfig?eth1:1?192.168.4.2
5.2?ip address delete–刪除一個協議地址. 縮寫:delete、del、d
#?ip?addr?del?192.168.4.1/24?brd?+?dev?eth0?label?eth0:Alias1
5.3?ip address show–顯示協議地址. 縮寫:show、list、lst、sh、ls、l
#?ip?addr?ls?eth0
5.4.ip address flush–清除協議地址. 縮寫:flush、f
示例1?:?刪除屬于私網10.0.0.0/8的所有地址:
#?ip?-s?-s?a?f?to?10/8示例2?:?取消所有以太網卡的IP地址
#?ip?-4?addr?flush?label?"eth0"
-
ip neighbour--neighbour/arp表管理命令 縮寫 neighbour、neighbor、neigh、n 命令 add、change、replace、delete、fulsh、show(或者list) 6.1?ip neighbour add?– 添加一個新的鄰接條目?ip neighbour change–修改一個現有的條目?ip neighbour replace–替換一個已有的條目 縮寫:add、a;change、chg;replace、repl
示例1:?在設備eth0上,為地址10.0.0.3添加一個permanent?ARP條目:
#?ip?neigh?add?10.0.0.3?lladdr?0:0:0:0:0:1?dev?eth0?nud?perm
示例2:把狀態改為reachable
#?ip?neigh?chg?10.0.0.3?dev?eth0?nud?reachable
6.2.ip neighbour delete–刪除一個鄰接條目 示例1:刪除設備eth0上的一個ARP條目10.0.0.3
#?ip?neigh?del?10.0.0.3?dev?eth0
6.3.ip neighbour show–顯示網絡鄰居的信息. 縮寫:show、list、sh、ls
#?ip?-s?n?ls?193.233.7.254?193.233.7.254.?dev?eth0?lladdr?00:00:0c:76:3f:85?ref?5?used?12/13/20?nud?reachable
6.4.ip neighbour flush–清除鄰接條目. 縮寫:flush、f 示例1: (-s 可以顯示詳細信息)
#?ip?-s?-s?n?f?193.233.7.254
?使用ip route 命令
-
路由表管理 7.1.縮寫 route、ro、r 7.2.路由表 從Linux-2.2開始,內核把路由歸納到許多路由表中,這些表都進行了編號,編號數字的范圍是1到255。另外,為了方便,還可以在/etc/iproute2/rt_tables中為路由表命名。 默認情況下,所有的路由都會被插入到表main(編號254)中。在進行路由查詢時,內核只使用路由表main。 7.3.
ip route add?– 添加新路由?ip route change?– 修改路由?ip route replace?– 替換已有的路由 縮寫:add、a;change、chg;replace、repl 示例1: 設置到網絡10.0.0/24的路由經過網關193.233.7.65
#?ip?route?add?10.0.0/24?via?193.233.7.65
示例2: 修改到網絡10.0.0/24的直接路由,使其經過設備dummy
#?ip?route?chg?10.0.0/24?dev?dummy
示例3: 實現鏈路負載平衡.加入缺省多路徑路由,讓ppp0和ppp1分擔負載(注意:scope值并非必需,它只不過是告訴內核, 這個路由要經過網關而不是直連的。實際上,如果你知道遠程端點的地址,使用via參數來設置就更好了)。
#?ip?route?add?default?scope?global?nexthop?dev?ppp0?nexthop?dev?ppp1#?ip?route?replace?default?scope?global?nexthop?dev?ppp0?nexthop?dev?ppp1
示例4: 設置NAT路由。在轉發來自192.203.80.144的數據包之前,先進行網絡地址轉換,把這個地址轉換為193.233.7.83
#?ip?route?add?nat?192.203.80.142?via?193.233.7.83
示例5: 實現數據包級負載平衡,允許把數據包隨機從多個路由發出。weight 可以設置權重.
#?ip?route?replace?default?equalize?nexthop?via?211.139.218.145?dev?eth0?weight?1?nexthop?via?211.139.218.145?dev?eth1?weight?1
7.4.ip route delete– 刪除路由 縮寫:delete、del、d 示例1:刪除上一節命令加入的多路徑路由
#?ip?route?del?default?scope?global?nexthop?dev?ppp0?nexthop?dev?ppp1
7.5.ip route show – 列出路由 縮寫:show、list、sh、ls、l 示例1: 計算使用gated/bgp協議的路由個數
#?ip?route?ls?proto?gated/bgp?|wc
1413?9891?79010
12
示例2: 計算路由緩存里面的條數,由于被緩存路由的屬性可能大于一行,以此需要使用-o選項
#?ip?-o?route?ls?cloned?|wc
159?2543?18707
示例3: 列出路由表TABLEID里面的路由。缺省設置是table main。TABLEID或者是一個真正的路由表ID或者是/etc/iproute2/rt_tables文件定義的字符串, 或者是以下的特殊值:?all?– 列出所有表的路由;?cache?– 列出路由緩存的內容。
ip?ro?ls?193.233.7.82?tab?cache
示例4: 列出某個路由表的內容
#?ip?route?ls?table?fddi153
示例5: 列出默認路由表的內容
#?ip?route?ls
這個命令等于傳統的: route 7.6.ip route flush – 擦除路由表 示例1: 刪除路由表main中的所有網關路由(示例:在路由監控程序掛掉之后):
#?ip?-4?ro?flush?scope?global?type?unicast
示例2:清除所有被克隆出來的IPv6路由:
#?ip?-6?-s?-s?ro?flush?cache
示例3: 在gated程序掛掉之后,清除所有的BGP路由:
#?ip?-s?ro?f?proto?gated/bgp
示例4: 清除所有ipv4路由cache
#?ip?route?flush?cache
***?IPv4?routing?cache?is?flushed.
7.7 ip route get – 獲得單個路由 .縮寫:get、g 使用這個命令可以獲得到達目的地址的一個路由以及它的確切內容。 ip route get命令和ip route show命令執行的操作是不同的。ip route show命令只是顯示現有的路由,而ip route get命令在必要時會派生出新的路由。 示例1: 搜索到193.233.7.82的路由
#?ip?route?get?193.233.7.82
193.233.7.82?dev?eth0?src?193.233.7.65?realms?inr.ac?cache?mtu?1500?rtt?300
示例2: 搜索目的地址是193.233.7.82,來自193.233.7.82,從eth0設備到達的路由(這條命令會產生一條非常有意思的路由,這是一條到193.233.7.82的回環路由)
#?ip?r?g?193.233.7.82?from?193.233.7.82?iif?eth0
193.233.7.82?from?193.233.7.82?dev?eth0?src?193.233.7.65?realms?inr.ac/inr.accachemtu?1500?rtt?300?iif?eth0
-
ip route?– 路由策略數據庫管理命令 命令 add、delete、show(或者list) 注意:策略路由(policy routing)不等于路由策略(rouing policy)。 在某些情況下,我們不只是需要通過數據包的目的地址決定路由,可能還需要通過其他一些域:源地址、IP協議、傳輸層端口甚至數據包的負載。 這就叫做:策略路由(policy routing)。 8.1. ip rule add – 插入新的規則 ip rule delete – 刪除規則 縮寫:add、a;delete、del、d
示例1:?通過路由表inr.ruhep路由來自源地址為192.203.80/24的數據包
ip?ru?add?from?192.203.80/24?table?inr.ruhep?prio?220示例2:把源地址為193.233.7.83的數據報的源地址轉換為192.203.80.144,并通過表1進行路由
ip?ru?add?from?193.233.7.83?nat?192.203.80.144?table?1?prio?320示例3:刪除無用的缺省規則
ip?ru?del?prio?32767
8.2. ip rule show – 列出路由規則 縮寫:show、list、sh、ls、l
示例1:?#?ip?ru?ls
0:?from?all?lookup?local
32762:?from?192.168.4.89?lookup?fddi153
32764:?from?192.168.4.88?lookup?fddi153
32766:?from?all?lookup?main
32767:?from?all?lookup?253
-
ip maddress – 多播地址管理 縮寫:show、list、sh、ls、l 9.1.ip maddress show – 列出多播地址 示例1: # ip maddr ls dummy 9.2. ip maddress add – 加入多播地址 ip maddress delete – 刪除多播地址 縮寫:add、a;delete、del、d 使用這兩個命令,我們可以添加/刪除在網絡接口上監聽的鏈路層多播地址。這個命令只能管理鏈路層地址。
示例1:?增加?#?ip?maddr?add?33:33:00:00:00:01?dev?dummy
示例2:?查看?#?ip?-O?maddr?ls?dummy
2:?dummy
link?33:33:00:00:00:01?users?2?static
link?01:00:5e:00:00:01
示例3:?刪除?#?ip?maddr?del?33:33:00:00:00:01?dev?dummy
10.ip mroute – 多播路由緩存管理 10.1. ip mroute show – 列出多播路由緩存條目 縮寫:show、list、sh、ls、l
示例1:查看?#?ip?mroute?ls
(193.232.127.6,?224.0.1.39)?Iif:?unresolved
(193.232.244.34,?224.0.1.40)?Iif:?unresolved
(193.233.7.65,?224.66.66.66)?Iif:?eth0?Oifs:?pimreg
示例2:查看?#?ip?-s?mr?ls?224.66/16
(193.233.7.65,?224.66.66.66)?Iif:?eth0?Oifs:?pimreg
9383?packets,?300256?bytes
-
ip tunnel – 通道配置 縮寫 tunnel、tunl 11.1.ip tunnel add – 添加新的通道 ip tunnel change – 修改現有的通道 ip tunnel delete – 刪除一個通道 縮寫:add、a;change、chg;delete、del、d 示例1:建立一個點對點通道,最大TTL是32
#?ip?tunnel?add?Cisco?mode?sit?remote?192.31.7.104?local?192.203.80.1?ttl?32
11.2.ip tunnel show – 列出現有的通道 縮寫:show、list、sh、ls、l
示例1:?#?ip?-s?tunl?ls?Cisco
-
ip monitor和rtmon?– 狀態監視 ip命令可以用于連續地監視設備、地址和路由的狀態。這個命令選項的格式有點不同,命令選項的名字叫做monitor,接著是操作對象: ip monitor [ file FILE ] [ all | OBJECT-LIST ]示例1: # rtmon file /var/log/rtmon.log 示例2: # ip monitor file /var/log/rtmon.log r
查看當前系統是否支持路由轉發功能
方式1:
# sysctl net.ipv4.ip_forward#查看
#sysctl -w net.ipv4.ip_forward=1?#立即生效,重啟網絡失效
# vi /etc/sysctl.conf ?
==>net.ipv4.ip_forward = 1 ?#1為開啟,0為關閉
#systemctl restart network#重啟網絡生效,永久
方式2:
#vim?/etc/sysconfig/network
==>FORWARD_IPV4=YES?#添加
#systemctl restart network#重啟網絡生效,永久
使用ip rule查看路由策略數據庫
ip rule list
在 Linux 系統啟動時,內核會為路由策略數據庫配置三條缺省的規則:
rule 0 匹配任何條件 查詢路由表local(ID 255) 路由表local是一個特殊的路由表,包含對于本地和廣播地址的高優先級控制路由。rule 0非常特殊,不能被刪除或者覆蓋。
rule 32766 匹配任何條件 查詢路由表main(ID 254) 路由表main(ID 254)是一個通常的表,包含所有的無策略路由。系統管理員可以刪除或者使用另外的規則覆蓋這條規則。
rule 32767 匹配任何條件 查詢路由表default(ID 253) 路由表default(ID 253)是一個空表,它是為一些后續處理保留的。對于前面的缺省策略沒有匹配到的數據包,系統使用這個策略進行處理。這個規則也可以刪除。
————————————————
https://blog.csdn.net/liuqun69/article/details/88888893
IP-route管理路由
?摘自:https://blog.csdn.net/chengxuyuanyonghu/article/details/39558643
一、高級路由的基礎IP ROUTE2
基本命令:
ip link list 顯示ip鏈路狀態信息
ip address show 除顯示所有網絡地址
ip route show 顯示主路由表信息
ip neigh show 顯示鄰居表
linux系統路由表
linux可以自定義從1-252個路由表,
linux系統維護了4個路由表:
0#表 系統保留表
253#表 defulte table 沒特別指定的默認路由都放在改表
254#表 main table 沒指明路由表的所有路由放在該表
255#表 locale table 保存本地接口地址,廣播地址、NAT地址 由系統維護,用戶不得更改
路由表的查看可有以下二種方法:
????? ip route list table table_number
??????ip route list table table_name
路由表序號和表名的對應關系在/etc/iproute2/rt_tables中,可手動編輯
路由表添加完畢即時生效,下面為實例
ip route add default via 192.168.1.1 table 1 在一號表中添加默認路由為192.168.1.1
ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一號表中添加一條到192.168.0.0網段的路由為192.168.1.2
注:各路由表中應當指明默認路由,盡量不回查路由表.路由添加完畢,即可在路由規則中應用..
二、高級路由重點之一路由規則 ip rule
進行路由時,根據路由規則來進行匹配,按優先級(pref)從低到高匹配,直到找到合適的規則.所以在應用中配置默認路由是必要的..?
?? ?
ip rule show 顯示路由規則
路由規則的添加
ip rule add from 192.168.1.10/32 table 1 pref 100
如果pref值不指定,則將在已有規則最小序號前插入
注:創建完路由規則若需立即生效須執行#ip route flush cache;刷新路由緩沖
??? 可參數解析如下:?? &n
??????? From -- 源地址
??????? To -- 目的地址(這里是選擇規則時使用,查找路由表時也使用)
??? Tos -- IP包頭的TOS(type of sevice)域Linux高級路由-
??? Dev -- 物理接口
??? Fwmark -- iptables標簽
??? 采取的動作除了指定路由表外,還可以指定下面的動作:
??????? Table 指明所使用的表
? ??? Nat 透明網關
??? Prohibit 丟棄該包,并發送 COMM.ADM.PROHIITED的ICMP信息?
??? Reject 單純丟棄該包
??? Unreachable丟棄該包, 并發送 NET UNREACHABLE的ICMP信息
??? 具體格式如下:更強大,使用更靈活,它使網絡管理員不僅能
??????? Usage: ip rule [ list | add | del ] SELECTOR ACTION
??????? SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ][ dev STRING ] [ pref NUMBER ]
??????? ACTION := [ table TABLE_ID ] [ nat ADDRESS ][ prohibit | reject | unreachable ]
????????????????? [ flowid CLASSID ]
??????? TABLE_ID := [ local | main | default | new | NUMBER ]
-
策略路由?
??? 基于策略的路由比傳統路由在功能上更強大,使用更靈活,它使網絡管理員不僅能夠根據目的地址而且能夠根據報文大小、應用或IP源地址來選擇轉發路徑...?????????
??? #/etc/iproute2/rt_tables 此文件存有linux 系統路由表默認表有255 254 253三張表?
????? 255? local 本地路由表存有本地接口地址,廣播地址,已及NAT地址.?
?????????? local表由系統自動維護..管理員不能操作此表...?
??????254? main 主路由表 傳統路由表,ip route若沒指定表亦操作表254.一般存所有的路由..?
???????????注:平時用ip ro sh查看的亦是此表設置的路由.? -
??????253? default? 默認路由表一般存放默認路由...?
-
?????????? 注:rt_tables文件中表以數字來區分表0保留最多支持255張表?
-
??? 路由表的查看可有以下二種方法:?
????? #ip route list table table_number
????? #ip route list table table_name
??? 路由表添加完畢,即可在策略路由表內添加路由例:
????? #ip route add 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4
??????? 注:發往子網192.168.1.0/24的數據包通過分類4轉發配合tc使用,后文有介紹講解...
????? #ip route add default via 192.168.1.1 table int1
????? #ip route add 192.168.1.0/24 via 192.168.1.1 table int2
????? #ip route add 172.16.0.2/16 via 172.16.0.1 table int3
??????? 注:各路由表中應當指明默認路由,盡量不回查路由表.路由添加完畢,即可在路由規則中應用..?
??? #ip rule show 顯示路由規則?
????? 0:????? from all lookup local?
????? 32766:? from all lookup main?
????? 32767:? from all lookup default?
????進行路由時,正是根據路由規則來進行匹配,按優先級(pref后數值)從高到低匹配,直到找到合適的規則.所以在應用中配置默認路由是必要的..?????
??? 策略路由一般手工添加路由表,路由表的添加只需編輯rt_tables文件,規定表序號,表名即可..?
??? ip rule規則添加示例:?
????? #ip rule add from 192.168.1.112/32 [tos 0x10] table test2 pref 999 prohibit?
????? #ip rule add to 192.168.1.2 pref 1000 table test1?
????? #ip rule add from 192.168.1.0/24 pref 1001 table test1?
????? #ip rule add [from 0/0] table test1 pref 1003?
????? #ip rule add fwmark 1 pref 1002 table test2? 此句型配合iptables -t mangle應用.如先對數據
? 包作標記:
????? #iptables -t mangle -A PREROUTING -p tcp -m multiport
???????????????????????????? --dports 80,8080,20,21 -s 192.168.1.0/24 -j MARK --set-mark?
? 2.網卡捆綁(網關linux+多網卡)
????#modprobe bonding mod=1 miimon=200 primary=eth1 創建bond0,模式為1,主網卡eth1..
??? #ip addr add dev bond$ 10.0.0.1/24 設置bond0的IP
??? #ifenslave bond0 eth1 eth2 添加綁定的dev
????? 注:mode=0 輪轉均衡(默認模式),此模式MAC頻繁切換導致交換機負載大..
???????? mode=1 主備模式 用primary指定網卡
???????? mode=4 常用 802.3ad模式,動態鏈路采集模式.此模式要求SWITCH捆綁..
???????? miimon=ms 每隔多少毫秒查詢鏈路是否有效.
????? 其它參數如:
???????? arp_interval=ms
???????? arp_ip_target=*.*.*.*
??? 另一種網卡捆綁固化方式:
????? #vi /etc/modules.conf 加入以下行
??? alias bond0 bonding
??????? 系統在啟動時加載bonding模塊,對外虛擬網絡接口設備為 bond0..
????? #cd /etc/sysconfig/network-scripts
????? #vi ifcfg-bond0
??????? DEVICE=bond0?
??????? IPADDR=11.0.0.1?
??????? NETMASK=255.0.0.0?
??????? NETWORK=192.168.1.0?
??????? BROADCAST=192.168.1.255?
??????? ONBOOT=yes?
??????? BOOTPROTO=none?
??????? USERCTL=no
????? #vi ifcfg-eth0??
??????? DEVICE=eth0?
??????? USERCTL=no?
??????? ONBOOT=yes?
??????? MASTER=bond0?
??????? SLAVE=yes?
??????? BOOTPROTO=none
????? #vi ifcfg-eth1?
??????? DEVICE=eth0?
??????? USERCTL=no?
??????? ONBOOT=yes?
??????? MASTER=bond0?
??????? SLAVE=yes?
??????? BOOTPROTO=none
?????#/etc/init.d/network restart 重啟網絡服務驗證網卡的配置信息備份網卡被加上了NOARP標記
???? #cat /proc/net/bond0/info 查看bond信息
? 3.網橋(Linux+多網卡)
??? 配置工具 brctl?http://bridge.sourceforge.net/? 源碼包名:bridge-utils-*形式
??? 安裝第一步:autoconf 后類同于源碼包安裝..
??? 例.linu+二網卡eth0 eth1 配置成網橋
????? 配置前去除加入網橋的eth0 eth1的IP
????? #ifconfig eth0/eth1 down
????? #ifconfig eth0/eth1 0.0.0.0 up
????? #brctl addbr br0
????? #brctl addif br0 eth0 eth1
????? #ip li set dev br0 up
????? #brctl showmacs br0 顯示網橋MAC?
??? 撤網橋:
????? #ip li set dev br0 down
????? #brctl delif br0 eth0 eth1
????? #brctl delbr br0
??? 網橋接口處亦可進行流量控制,無Ip的linux網橋可有效防御外界的功擊,對linux網橋機的總控安全性高...
??? 貼上一篇網橋應用實例,此實例是網橋的一種擴張應用...
????? 腳本名:start_bridge.sh
????? #!/bin/sh
????? brctl addbr net1?
????? brctl addif net1 eth0?
????? ifconfig eth0 down?
????? ifconfig eth0 0.0.0.0 up?
????? ifconfig net1 192.168.5.1 up?
????? #ip ro del 192.168.1.0/24 dev eth1? proto kernel? scope link? src 192.168.1.28
????? ip ro del 192.168.1.0/24?
????? #route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.5.2
????? ip route add default via 192.168.5.2?
????? echo "1" > /proc/sys/net/ipv4/ip_forward
? Linux高級路由需結合iptables才能充分體現其功能
查看路由表內容在查看路由表之前,首先使用ip rule show命令來查看目前使用了哪些路由表,接著,再使用ip route show
1.?[root@localhost /]#?ip rule show?
2.?0: from all lookup local?
3.?32766: from all lookup main?
4.?32767: from all lookup default?
5.?[root@localhost /]#?
6.?[root@localhost /]#?ip route show table main?
7.?10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46?
8.?192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10?
9.?default via 10.10.15.1 dev eth0?
10.?[root@localhost /]#
在默認情況下,系統有三個路由表,這三個路由表的功能如下:
local:路由表local包含本機路由及廣播信息。例如,在本機上執行ssh 127.0.0.1時,就會參考這份路由表的內容,在正常情況下,只要配置好網卡的網絡設置,就會自動生成local路由表的內容,我們應該也不必修改其內容。
main:使用傳統命令route -n所看到的路由表就是main的內容。Linux系統在默認情況下使用這份路由表的內容來傳輸數據包,因此,其內容極為重要,在正常情況下,只要配置好網卡的網絡設置,就會自動生成main路由表的內容。
default:最后是default路由表,這個路由表在默認情況下內容為空;除非有特別的要求,否則保持其內容為空即可。
在此使用路由表main的內容進行解釋,以下是圖10-10路由表main的內容,因為在主機上有eth0及eth1兩塊網卡,且為其設置的IP分別是10.10.15.46/25及192.168.1.10/24,因此,路由表內的第.行即是告訴系統,如果有數據包要送到10.10.15.0/25這個網段,就直接將數據包由eth0接口送出即可,而本機臨近這個網段的IP是10.10.15.46,第.行則是設置到192.168.1.0/24的路由,其含義與第.行完全相同;以上這兩行是只要將計算機網卡上的IP設置好,并在網絡服務重啟之后,默認就會生成的路由,無需特別的設置。最后一行.則指:如果數據包不是送往10.10.15.0/25及192.168.1.0/24網段,那么數據包將統一轉發給10.10.15.1主機去處理,而10.10.15.1就是我們在網絡配置中所設置的“默認網關”。
1.?[root@localhost /]#?ip route show table main?
2.?10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46
3.?192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10??
4.?default via 10.10.15.1 dev eth0?
5.?[root@localhost /]#
2. 添加路由
添加路由在此還是一樣采用ip命令而不是route命令,下例首先使用ip route show.命令顯示路由表main的內容,接著再使用ip route add命令將所需的路由添加到路由表main中.,最后再次使用ip route show命令將路由表main的內容打印出來,此時就可以在路由表main之中看到剛才添加的路由了。
1.?[root@localhost /]#?ip route show table main?
2.?10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46?
3.?192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10?
4.?default via 10.10.15.1 dev eth0?
5.?[root@localhost /]#?
6.?[root@localhost /]#?ip route add 192.168.2.0/24 via 10.10.15.50 table main?
7.?[root@localhost /]#?
8.?[root@localhost /]#?ip route show table main??
9.?10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46?
10.?192.168.2.0/24 via 10.10.15.50 dev eth0?
11.?192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10?
12.?default via 10.10.15.1 dev eth0?
13.?[root@localhost /]#
如果要添加的路由并未出現在現有的路由表中,又該如何處理呢?在此請先有一個概念,單純添加路由表并無意義,因為新增出來的路由表,系統默認是不會去使用的,如果要將路由添加到main以外的路由表,只有先添加“規則”才能確定新的路由表名稱(Table ID),有了新的路由表之后,才會把路由添加到新的路由表中。
我們使用下列示例來說明這個過程。首先使用ip rule show.來查詢RPDB的當前狀態,可以看到目前只有三條默認規則,接著,再使用ip rule add命令來添加一條規則.,此時系統內就多了一個有用的路由表,其路由表ID為10,我們可以立即使用ip route show命令來查看這個新的路由表.,其內容默認為空,接著可以在這個新路由表中添加路由,在此使用iproute add命令來添加路由,我們決定凡是來自于192.168.2.0/24網段的數據包,都從eth1接口將數據包送離本機,因此,必須完整編寫eth1接口的路由。首先將臨近eth1接口的路由填入.,告訴系統本機與192.168.1.0/24網段的通信都通過eth1接口來處理,接著填入這個路由表的默認路由.,最后使用ip route show命令顯示路由表10的內容。
1.?[root@localhost ~]#?ip rule show??
2.?0: from all lookup local?
3.?32766: from all lookup main?
4.?32767: from all lookup default?
5.?[root@localhost ~]#?
6.?[root@localhost ~]#?ip rule add from 192.168.2.0/24 table 10??
7.?[root@localhost ~]#?
8.?[root@localhost ~]#?ip route show table 10??
9.?[root@localhost ~]#?
10.?[root@localhost ~]#?ip route add 192.168.1.0/24 dev eth1 table 10??
11.?[root@localhost ~]#?ip route add default via 192.168.1.254 table 10??
12.?[root@localhost ~]#?
13.?[root@localhost ~]#?ip route show table 10??
14.?192.168.1.0/24 dev eth1 scope link?
15.?default via 192.168.1.254 dev eth1?
16.?[root@localhost ~]#
3. 刪除路由
可以使用ip命令來方便地刪除路由,我們使用以下示例來說明如何刪除路由。首先將路由表10的內容顯示出來.,可以看到路由表10中當前有兩條路由,接著使用ip route del命令刪除默認路由.,在此別忘了指定我們所要刪除的是路由表10,否則默認會刪除路由表main的默認路由,接著再使用ip route show 命令查看路由表10.,此時路由表10的默認路由已經不存在了,再次使用ip route del命令刪除192.168.122.0/24的路由.,最后可以看到路由表10中已經沒有任何路由了。
1.?[root@localhost ~]# ip route show table 10??
2.?192.168.1.0/24 dev virbr0 scope link?
3.?default via 192.168.1.254 dev eth1?
4.?[root@localhost ~]#?
5.?[root@localhost ~]#?ip route del default table 10??
6.?[root@localhost ~]#?
7.?[root@localhost ~]# ip route show table 10??
8.?192.168.1.0/24 dev virbr0 scope link?
9.?[root@localhost ~]#?
10.?[root@localhost ~]#?ip route del 192.168.1.0/24 table 10??
11.?[root@localhost ~]#?
12.?[root@localhost ~]# ip route show table 10??
13.?[root@localhost ~]#
1. 查看策略數據庫
要查看策略數據庫的內容,可以使用ip rule show命令,或者可以使用ip rule ls。如下是命令執行后所得到的輸出結果,在這些數據中,可以看到系統的三條默認規則,而這三條規則默認分別對應于local、mail及default三個路由表。
1.?[root@localhost /]# ip rule show?
2.?0: from all lookup local?
3.?32766: from all lookup main?
4.?32767: from all lookup default
2. 添加規則
在添加規則時,必須先確定好“條件”、“優先級別”及“路由表ID”,此后才可以執行添加規則的操作。關于這三個參數的含義,我們根據圖10-5再說明一次:
條件
條件是用來決定哪類數據包可以符合這項規則,而可用來匹配的字段為Source IP、Destination IP、Type of Service、fwmark及dev等,這些字段的使用方式如下:
Source IP:
根據來源端IP來決定數據包參考哪個路由表發送出去。以下兩個示例分別指出,如果數據包的來源端IP是192.168.1.10,就參考路由表10;如果來源端IP為192.168.2.0/24網段的IP,就參考路由表20。
1.?ip rule add from 192.168.1.10 table 10?
2.?ip rule add from 192.168.2.0/24 table 20
Destination IP:
根據目的端IP來決定數據包參考哪個路由表發送出去。以下兩個示例分別指出,如果數據包的目的端IP是168.95.1.1,就參考路由表10;如果目的端IP是168.95.0.0/24網段的IP,就參考路由表20。
1.?ip rule add to 168.95.1.1 table 10?
2.?ip rule add to 168.96.0.0/24 table 20
fwmark:
fwmark指第3章所提到過的nfmark,如果你已忘了nfmark的含義,不妨參考第2.2.6節。將fwmark作為匹配條件時,必須搭配Netfilter一起使用, 這看起來很麻煩, 卻是最靈活的匹配條件。如圖10-8所示,某公司對外有三條ADSL,我們希望所有HT T P 協議經由第一條ADS L ,SMTP及POP3經由第二條ADSL,其余流量則經由第三條ADSL。可以使用如下的命令組合來達到這樣的目的:
圖10-8 fwmark示例
1.?iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 80 -j MARK --set-mark 1?
2.?iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 25 -j MARK --set-mark 2?
3.?iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2?
4.?iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3?
5.?ip rule add fwmark 1 table 1?
6.?ip rule add fwmark 2 table 2?
7.?ip rule add fwmark 3 table 3
首先使用Netfilter的managle機制針對特定的數據包設置MARK值,在此將HTTP數據包的MARK值設置為1,SMTP及POP3數據包的MARK值設置為2,其余數據包則設置MARK值為3。接著,再根據fwmark條件來判斷數據包的MARK值,如果MARK值為1,則參考路由表1將數據包送出;MAKR值為2時,則參考路由表2將數據包送出;最后,MARK值為3的數據包則參考路由表3送出。
以上示例只是一個概念而已,如果真要完整體現出這個示例的所有功能,還需要注意許多細節,稍后將使用詳細的示例講解這部分內容,在此只要首先了解fwmark與Netfilter結合使用的概念即可。
dev:
最后,還可以使用數據包輸入的接口來作為判斷依據,如圖10-9所示,我們希望凡是由eth2接口送入的數據包都由eth0接口轉發出去,由eth3接口送入的數據包都由eth1接口轉發出去。以下命令組合將能滿足我們的要求:
1.?ip rule add dev eth2 table 1?
2.?ip rule add dev eth3 table 3
圖10-9 接口示例
3. 優先級別
前面介紹了規則中“條件”的使用方式,接下來要討論的是優先級別。優先級別用數字來表示,其范圍可由0~4億多,堪稱天文數字,我們實際上不可能在一臺PC上設置如此龐大的路由機制。
1.?[root@localhost ~]# ip rule show?
2.?0: from all lookup local?
3.?32766: from all lookup main?
4.?32767: from all lookup default?
5.?[root@localhost ~]#?
6.?[root@localhost ~]# ip rule add from 192.168.1.0/24 table 1?
7.?[root@localhost ~]# ip rule add from 192.168.2.0/24 table 2?
8.?[root@localhost ~]#?
9.?[root@localhost ~]# ip rule show?
10.?0: from all lookup local?
11.?32764: from 192.168.2.0/24 lookup 2?
12.?32765: from 192.168.1.0/24 lookup 1?
13.?32766: from all lookup main?
14.?32767: from all lookup default
如以上示例,我們執行ip rule show命令所顯示內容的第一個字段就是優先級別,數字越小,代表優先級別越高,也代表這條規則可以排得越靠前,如此數據包在進行條件匹配時,就會越早匹配到這條規則,從輸出的數據中,默認優先級別0、32766及32767已被占用,因此,在添加規則時,如果沒有特別設置優先級別,那么,優先級別默認會從32766開始遞減,如32765、32764……,如果我們需要特別設置優先級別,可以在ip rule add命令的最后加上prio XXX參數。如下例所示:
1.?[root@localhost ~]# ip rule show?
2.?0: from all lookup local?
3.?32766: from all lookup main?
4.?32767: from all lookup default?
5.?[root@localhost ~]#?
6.?[root@localhost ~]#?ip rule add from 192.168.1.0/24 table 1 prio 10?
7.?[root@localhost ~]# ip rule add from 192.168.2.0/24 table 2 prio 20?
8.?[root@localhost ~]#?
9.?[root@localhost ~]# ip rule show?
10.?0: from all lookup local?
11.?10: from 192.168.1.0/24 lookup 1?
12.?20: from 192.168.2.0/24 lookup 2?
13.?32766: from all lookup main?
14.?32767: from all lookup default
路由表ID
在Linux的基于策略的路由中,路由表用ID來表示,但如有必要,還可以用ID與名稱對照表將ID轉換成名稱,關于這部分請參考第10.2.1節。
4. 刪除規則
ip命令提供的刪除規則的方式十分靈活,例如,要刪除下列第2條規則,可以分別使用“優先級別”、“條件”及“路由表”當中任何一個唯一的值來設置所需刪除的規則,如下:
ip rule del prio 10
ip rule del from 192.168.1.0/24
ip rule del table 1
ip rule del from 192.168.1.0/24 table 1 prio 10
1.?[root@localhost ~]# ip rule show?
2.?0: from all lookup local?
3.?10: from 192.168.1.0/24 lookup 1?
4.?20: from 192.168.2.0/24 lookup 2?
5.?32766: from all lookup main?
6.?32767: from all lookup default?
7.?[root@localhost ~]#
總結
以上是生活随笔為你收集整理的【网络】route和 IP route的区别|route 和 IP route 添加路由的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入浅出 Java 中的包装类
- 下一篇: WeRateDog---分析推特数据