linux路由表命令
轉(zhuǎn)自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html
留在好查閱
?
?
linux 路由表維護(hù)
查看 Linux 內(nèi)核路由表使用下面的 route 命令可以查看 Linux 內(nèi)核路由表。
# route Destination Gateway Genmask Flags Metric Ref Use Iface192.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 命令的輸出項(xiàng)說明
| Destination | 目標(biāo)網(wǎng)段或者主機(jī) |
| Gateway | 網(wǎng)關(guān)地址,”*” 表示目標(biāo)是本主機(jī)所屬的網(wǎng)絡(luò),不需要路由 |
| Genmask | 網(wǎng)絡(luò)掩碼 |
| Flags | 標(biāo)記。一些可能的標(biāo)記如下: |
| ? | U — 路由是活動的 |
| ? | H — 目標(biāo)是一個(gè)主機(jī) |
| ? | G — 路由指向網(wǎng)關(guān) |
| ? | R — 恢復(fù)動態(tài)路由產(chǎn)生的表項(xiàng) |
| ? | D — 由路由的后臺程序動態(tài)地安裝 |
| ? | M — 由路由的后臺程序修改 |
| ? | ! — 拒絕路由 |
| Metric | 路由距離,到達(dá)指定網(wǎng)絡(luò)所需的中轉(zhuǎn)數(shù)(linux 內(nèi)核中沒有使用) |
| Ref | 路由項(xiàng)引用次數(shù)(linux 內(nèi)核中沒有使用) |
| Use | 此路由項(xiàng)被路由軟件查找的次數(shù) |
| Iface | 該路由表項(xiàng)對應(yīng)的輸出接口 |
3 種路由類型
主機(jī)路由
主機(jī)路由是路由選擇表中指向單個(gè)IP地址或主機(jī)名的路由記錄。主機(jī)路由的Flags字段為H。例如,在下面的示例中,本地主機(jī)通過IP地址192.168.1.1的路由器到達(dá)IP地址為10.0.0.10的主機(jī)。
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
網(wǎng)絡(luò)路由
網(wǎng)絡(luò)路由是代表主機(jī)可以到達(dá)的網(wǎng)絡(luò)。網(wǎng)絡(luò)路由的Flags字段為N。例如,在下面的示例中,本地主機(jī)將發(fā)送到網(wǎng)絡(luò)192.19.12的數(shù)據(jù)包轉(zhuǎn)發(fā)到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
默認(rèn)路由
當(dāng)主機(jī)不能在路由表中查找到目標(biāo)主機(jī)的IP地址或網(wǎng)絡(luò)路由時(shí),數(shù)據(jù)包就被發(fā)送到默認(rèn)路由(默認(rèn)網(wǎng)關(guān))上。默認(rèn)路由的Flags字段為G。例如,在下面的示例中,默認(rèn)路由是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
配置靜態(tài)路由
route 命令
設(shè)置和查看路由表都可以用 route 命令,設(shè)置內(nèi)核路由表的命令格式是:
# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]其中:
- add : 添加一條路由規(guī)則
- del : 刪除一條路由規(guī)則
- -net : 目的地址是一個(gè)網(wǎng)絡(luò)
- -host : 目的地址是一個(gè)主機(jī)
- target : 目的網(wǎng)絡(luò)或主機(jī)
- netmask : 目的地址的網(wǎng)絡(luò)掩碼
- gw : 路由數(shù)據(jù)包通過的網(wǎng)關(guān)
- dev : 為路由指定的網(wǎng)絡(luò)接口
route 命令使用舉例
添加到主機(jī)的路由
# route add -host 192.168.1.2 dev eth0:0# route add -host 10.20.30.148 gw 10.20.30.40
添加到網(wǎng)絡(luò)的路由
# 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
添加默認(rèn)路由
# 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
設(shè)置包轉(zhuǎn)發(fā)
在 CentOS 中默認(rèn)的內(nèi)核配置已經(jīng)包含了路由功能,但默認(rèn)并沒有在系統(tǒng)啟動時(shí)啟用此功能。開啟 Linux的路由功能可以通過調(diào)整內(nèi)核的網(wǎng)絡(luò)參數(shù)來實(shí)現(xiàn)。要配置和調(diào)整內(nèi)核參數(shù)可以使用 sysctl 命令。例如:要開啟 Linux內(nèi)核的數(shù)據(jù)包轉(zhuǎn)發(fā)功能可以使用如下的命令。
# sysctl -w net.ipv4.ip_forward=1這樣設(shè)置之后,當(dāng)前系統(tǒng)就能實(shí)現(xiàn)包轉(zhuǎn)發(fā),但下次啟動計(jì)算機(jī)時(shí)將失效。為了使在下次啟動計(jì)算機(jī)時(shí)仍然有效,需要將下面的行寫入配置文件/etc/sysctl.conf。
# vi /etc/sysctl.conf net.ipv4.ip_forward = 1用戶還可以使用如下的命令查看當(dāng)前系統(tǒng)是否支持包轉(zhuǎn)發(fā)。
# sysctl net.ipv4.ip_forward?
===============================================================================
?
Linux路由表的結(jié)構(gòu)與算法分析 黃一文 路由是網(wǎng)絡(luò)棧的核心部分。路由表本身的設(shè)計(jì)很大情度上影響著路由的性能,并且好的設(shè)計(jì)能減少系統(tǒng)資源的消耗,這兩方面尤其體現(xiàn)在路由表的查找上。目前的內(nèi)核路由存在兩種查找算法,一種為HASH算法,另一種為LC-trie算法,前者是目前內(nèi)核使用的缺省算法,而后者更適用在超大路由表的情況,它在這種情況提高查找效率的同時(shí),大大地增加了算法本身的復(fù)雜性和內(nèi)存的消耗。綜上,這兩種算法各有其適用的場合,本文分析了基于2.6.18內(nèi)核路由部分的代碼在HASH算法上路由表結(jié)構(gòu)的實(shí)現(xiàn),并且在文章最后給出了一個(gè)簡單的策略路由的應(yīng)用。 一、路由表的結(jié)構(gòu) 為了支持策略路由,Linux使用了多個(gè)路由表而不是一個(gè),即使不使用策略路由,Linux也使用了兩個(gè)路由表,一個(gè)用于上傳給本地上層協(xié)議,另一個(gè)則用于轉(zhuǎn)發(fā)。Linux使用多個(gè)路由表而不是一個(gè),使不同策略的路由存放在不同的表中,有效地被免了查找龐大的路由表,在一定情度上提高了查找了效率。 路由表本身不是由一個(gè)結(jié)構(gòu)表示,而是由多個(gè)結(jié)構(gòu)組合而成。路由表可以說是一個(gè)分層的結(jié)構(gòu)組合。在第一層,它先將所有的路由根據(jù)子網(wǎng)掩碼(netmask)的長度(0~32)分成33個(gè)部分(structfn_zone),然后在同一子網(wǎng)掩碼(同一層)中,再根據(jù)子網(wǎng)的不同(如10.1.1.0/24和10.1.2.0/24),劃分為第二層(struct fib_node),在同一子網(wǎng)中,有可能由于TOS等屬性的不同而使用不同的路由,這就是第三層(structfib_alias),第三層結(jié)構(gòu)表示一個(gè)路由表項(xiàng),而每個(gè)路由表項(xiàng)又包括一個(gè)相應(yīng)的參數(shù),如協(xié)議,下一跳路由地址等等,這就是第四層(structfib_info)。分層的好處是顯而易見的,它使路由表的更加優(yōu)化,邏輯上也更加清淅,并且使數(shù)據(jù)可以共享(如structfib_info),從而減少了數(shù)據(jù)的冗余。?
| struct fib_table *fib_tables[RT_TABLE_MAX+1];?// RT_TABLE_MAX 為255 |
???????圖1為一個(gè)路由表的總體結(jié)構(gòu)。自上而下由左向右看,它首先為一個(gè)fib_table結(jié)構(gòu)指針的數(shù)組,它被定義為:
?
| struct fib_table { unsigned char tb_id; unsigned?tb_stamp; int?????????? (*tb_lookup)(struct fib_table *tb, const struct flowi *flp, struct fib_result *res); int?????????? (*tb_insert)(struct fib_table *table, struct rtmsg *r, …… void??????? (*tb_select_default)(struct fib_table *table, const struct flowi *flp, struct fib_result *res); unsigned char tb_data[0]; }; |
???????每個(gè)fib_table結(jié)構(gòu)在內(nèi)核中表示一個(gè)路由表:
+ 圖1(引自[1]) 這個(gè)結(jié)構(gòu)中包括這個(gè)表的ID,以及主要的一些用于操作路由表的函數(shù)指針,這里我們只關(guān)心最后一個(gè)域――tb_data[0],這是一個(gè)零長的數(shù)組,它在內(nèi)核中也較為常見,它表示?
| struct fn_hash { struct fn_zone?*fn_zones[33]; struct fn_zone?*fn_zone_list; }; |
指向這個(gè)結(jié)構(gòu)的末尾。由圖1可以看到,這個(gè)結(jié)構(gòu)的末尾接著便是一個(gè)struct fn_hash結(jié)構(gòu),這個(gè)結(jié)構(gòu)是隨著fib_table結(jié)構(gòu)一起分配的,所以fib_table->tb_data就是fn_hash。
?
| struct fn_zone { struct fn_zone???? ???? *fz_next; /* Next not empty zone?*/ struct hlist_head???? *fz_hash;?????? /* Hash table pointer????? */ int???????????????????????? ?????? fz_nent;?? /* Number of entries????? */ int??????????????????????????????? fz_divisor;????? /* Hash divisor?????? ?????? */ u32???????????????????????????? fz_hashmask;?/* (fz_divisor - 1)?? */ #define FZ_HASHMASK(fz)???????? ((fz)->fz_hashmask) int????????????????????????????? ? fz_order; /* Zone order???????? */ u32?????????????????????? ????? fz_mask; #define FZ_MASK(fz)????????? ((fz)->fz_mask) }; |
???????這個(gè)fn_zone域就是我們上面提前的結(jié)構(gòu),用于將路由根據(jù)子網(wǎng)掩碼的長度分開成33個(gè)部分,其中fn_zones[0]用于默認(rèn)網(wǎng)關(guān)。而fn_zone_list域就是將正在使用的fn_zone鏈成一個(gè)鏈表。接著再深入到struct fn_zone結(jié)構(gòu)中:
這個(gè)結(jié)構(gòu)中有兩個(gè)域比較重要,一個(gè)為fz_hash域,它指向一個(gè)HASH表的表頭,這個(gè)HASH的長度是fz_divisor。并且這個(gè)HASH表的長度是可變的,當(dāng)表長達(dá)到一個(gè)限定值時(shí),將重建這個(gè)HASH表,被免出現(xiàn)HASH沖突表過長造成查找效率降低。 為了提高查找的效率,內(nèi)核使用了大量的HASH表,而路由表就是一個(gè)例子。在圖1中可以看到,等長子網(wǎng)掩碼的路由存放在同一個(gè)fn_zone中,而根據(jù)到不同子網(wǎng)(fib_node)的路由鍵值(fn_key),將它HASH到相應(yīng)的鏈表中。?
| struct fib_node { struct hlist_node???? fn_hash; struct list_head?????? fn_alias; u32??????????????? fn_key; }; |
?
| struct fib_alias { struct list_head?????? fa_list; struct rcu_head????? rcu; struct fib_info??????? *fa_info; u8????????????????? fa_tos; u8????????????????? fa_type; u8????????????????? fa_scope; u8????????????????? fa_state; }; |
?
| struct fib_info { struct hlist_node???? fib_hash; struct hlist_node???? fib_lhash; …… int????????????????? fib_dead; unsigned???????? fib_flags; int????????????????? fib_protocol; u32??????????????? fib_prefsrc; u32??????????????? fib_priority; …… int????????????????? ?????? fib_nhs; struct fib_nh????????? fib_nh[0]; #define fib_dev???????????? fib_nh[0].nh_dev }; |
?
| struct fib_nh { struct net_device??? *nh_dev; struct hlist_node???? nh_hash; struct fib_info??????? *nh_parent; unsigned???????? ?????? nh_flags; unsigned char??????? nh_scope; #ifdef CONFIG_IP_ROUTE_MULTIPATH int????????????????? nh_weight; int????????????????? nh_power; #endif #ifdef CONFIG_NET_CLS_ROUTE __u32?????????????????? nh_tclassid; #endif int????????????????? nh_oif; u32??????????????? nh_gw; }; |
?
| ip rule add from 10.1.1.0/24 table TR1 ip rule add iff eth0 table RT2 |
?
| dst???????????????? nexthop?????????????? dev 10.1.0.0/16?????? 10.1.1.1???????????????????? eth0 10.1.0.0/24????????? 10.1.0.1?????????????? eth1 |
?
| dst???????????????? nexthop?????????????? dev 10.1.0.0/24?????? 10.1.0.1???????????????????? eth1 10.1.0.0/24????????? 10.1.0.2?????????????? eth1 |
?
| ip route add 10.0.1.0/24 nexthop via 10.0.1.1 ?weight 1 nexthop via 10.0.1.2 ?weight 2 table RT3 |
?
| ip addr add 172.16.100.1/24 dev eth1 ip route add default via a.b.c.d dev eth1 |
?
| ?????? ip route add 172.16.10.0/24 via e.f.g.h dev eth2 |
??????
步驟三:添加一個(gè)路由表??
| ?????? echo?? “250?HS_RT”?>>?/etc/iproute2/rt_tables |
?
| ip rule add from 192.168.1.0/24 dev eth0 table HS_RT pref 32765 ip route add default via e.f.g.h dev eth2 iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE |
?
| ip route flush cache? |
===============================================================================
linux雙網(wǎng)卡怎么設(shè)置我就不說了,我這里說的是linux雙網(wǎng)卡的流量問題...
可能這個(gè)問題很偏們..你們也許用不上..我還是要說..
問題描述,一個(gè)linux主機(jī),上面兩個(gè)網(wǎng)卡..:)
route -n的輸出是這樣的.
Destination Gateway Genmask Flags Metric Ref Use Iface
?
61.132.43.128 0.0.0.0 255.255.255.192 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 61.132.43.134 0.0.0.0 UG 0 0 0 eth0
?
這里解釋一下...第一行是說,你要訪問61.132.43.128這個(gè)網(wǎng)段,掩碼是255.255.255.192的話..從e
th1這個(gè)網(wǎng)卡出去..
第二行是關(guān)于本機(jī)的,訪問自己從lo這個(gè)虛擬的本地網(wǎng)卡走..
第三行是說你要去任何地方的話..從網(wǎng)關(guān)61.132.43.134出去.并且網(wǎng)卡是eth0
?
到這里我們看到了..我們除了去61.132.43.128這個(gè)網(wǎng)絡(luò)是從eth1走以外..去其他地方都是從eth0�
�...
這樣是不是很浪費(fèi)了雙網(wǎng)卡??沒錯(cuò)..是很浪費(fèi)..因?yàn)椴徽撃阌媚欠N監(jiān)測工具查看流量..都是eth0有
..而其他網(wǎng)卡沒有...天哪...為此我是煞費(fèi)苦心..甚至懷疑網(wǎng)卡是不是壞了..因?yàn)樵趙in2k上這種�
慮槭遣豢贍芊⑸�..:)
那我們怎么解決這個(gè)問題呢?有人也許會說給個(gè)不同網(wǎng)關(guān)讓另一塊網(wǎng)卡用其他網(wǎng)關(guān)不就可以..是這�
鍪強(qiáng)梢�..但是問題是我的ip都是在同一個(gè)網(wǎng)段..那來的不同網(wǎng)關(guān).?網(wǎng)關(guān)就一個(gè)61.132.43.134...
還好linux系統(tǒng)給我們提供了一個(gè)很好的路由套件---iproute2
我們來熟悉一下..iproute2由幾個(gè)常見的命令..
ip ro ls ip就是ip命令啦,ro就是route的所寫,ls是list的縮寫...
整個(gè)命令就是列出系統(tǒng)的路由表..這個(gè)可和route
-n的效果差不多..但是更為清楚系統(tǒng)的route是如何的..
我們來看看吧:
[root@localhost root]# ip ro ls
?
61.132.43.128/26 dev eth1 proto kernel scope link src 61.132.43.136
127.0.0.0/8 dev lo scope link
default via 61.132.43.134 dev eth0
?
?
是不是一樣呢?由幾個(gè)地方不同..第一條多了一個(gè)src,增加了對源數(shù)據(jù)包的選擇,而且子網(wǎng)掩碼也變
成/26的形式..(參考ip地址的書籍)
最后一個(gè)仍然是網(wǎng)關(guān)...
現(xiàn)在我們只要稍稍動手把從61.132.43.136出來的流量讓他不要從eth0出去..然他走eth1
我們加一條自定義的路由表
ip ro add default via 61.132.43.134 table 200
?
?
這里只是加了一條默認(rèn)路由到一個(gè)自定義的路由表200中,最大數(shù)值是255,但是你不要用255,因?yàn)槟?br />是系統(tǒng)默認(rèn)用了..你用200以下就可以.
具體的路由表在/etc/iproute2/rt_tables中
?
查看剛才建立的路由表可以用ip ro ls table 200
[root@localhost root]# ip ro ls table 200
?
default via 61.132.43.134 dev eth1
?
?
看到了嗎?雖然我沒有指定dev是什么.但是系統(tǒng)自動分配了一個(gè)eth1給這個(gè)路由表,因?yàn)閑th0已經(jīng)用
在主路由表中了..
這也說明了,的確不能在同一個(gè)路由表中由相同的網(wǎng)關(guān)..雖然可以設(shè)置,但是具體沒什么作用.
然后我們要用一個(gè)規(guī)則把,匹配的數(shù)據(jù)包引導(dǎo)到剛剛建立的路由表中..:)
ip ru add from 61.132.43.136 table 200
?
?
這里ru是rule的縮寫.from是一個(gè)匹配的動作.就是所源地址是61.132.43.136的包..請走自定義路�
殺�的設(shè)置..:)
?
查看一下
[root@localhost root]# ip ru ls
?
0: from all lookup local
32765: from 61.132.43.136 lookup 200
32766: from all lookup main
32767: from all lookup 253
?
?
ip ro flush cache
linux 下 雙網(wǎng)卡 同網(wǎng)段,可以把IP_FORWARD 打開,這樣一個(gè)網(wǎng)卡down掉數(shù)據(jù)會從另外一個(gè)網(wǎng)卡出去
===============================================================================
linux路由表 2010年08月18日 星期三 17:44
宏CONFIG_IP_MULTIPLE_TABLES表示路由策略,當(dāng)定義了該宏,也即意味著內(nèi)核配置了“路由策略”。產(chǎn)生的最大的不同就是內(nèi)核可以使用多達(dá)256張F(tuán)IB。其實(shí),這256張F(tuán)IB在內(nèi)核中的表示是一個(gè)全局?jǐn)?shù)組:
??????? struct fib_table *myfib_tables[RT_TABLE_MAX+1];
而宏RT_TABLE_MAX定義如下:
??????? enum rt_class_t
??????? {
??????????? RT_TABLE_UNSPEC=0,
??????????? RT_TABLE_DEFAULT=253,
??????????? RT_TABLE_MAIN=254,
??????????? RT_TABLE_LOCAL=255,
??????????? __RT_TABLE_MAX
??????? };
??????? #define RT_TABLE_MAX (__RT_TABLE_MAX - 1)
??? 我們可以看到,雖然這張表多達(dá)256項(xiàng),但枚舉類型rt_class_t給出的表示最常用的也就三項(xiàng),在系統(tǒng)初始化時(shí),由內(nèi)核配置生成的路由表只有RT_TABLE_MAIN,RT_TABLE_LOCAL兩張。
???main表中存放的是路由類型為RTN_UNICAST的所有路由項(xiàng),即網(wǎng)關(guān)或直接連接的路由。在myfib_add_ifaddr函數(shù)中是這樣添加main表項(xiàng)的:對于某個(gè)網(wǎng)絡(luò)設(shè)備接口的一個(gè)IP地址,如果目的地址的網(wǎng)絡(luò)號不是零網(wǎng)絡(luò)(網(wǎng)絡(luò)號與子網(wǎng)號全為零),并且它是primary地址,同時(shí),它不是D類地址(網(wǎng)絡(luò)號與子網(wǎng)號占32位)。最后一個(gè)條件是:它不是一個(gè)環(huán)回地址(device上有flagIFF_LOOPBACK)。那么,就添加為main表項(xiàng),如果是環(huán)回地址,則添加為local表的一個(gè)表項(xiàng)。
??? 在我們的系統(tǒng)中,有兩個(gè)已開啟的網(wǎng)絡(luò)設(shè)備接口eth0和lo,eth0上配置的primaryIP地址是172.16.48.2,所以,相應(yīng)的,main表中就只有一項(xiàng)。為main表添加路由項(xiàng)的時(shí)候,該路由項(xiàng)的目的地址是子網(wǎng)內(nèi)的所有主機(jī)(把主機(jī)號部分字節(jié)清零),而對應(yīng)于lo,在local表中也有一項(xiàng),其類型為RTN_LOCAL(注:前一篇文章中的local表的hash8中的路由項(xiàng)表述有誤,類型應(yīng)該是RTN_LOCAL,而不是RTN_BORADCAST)。
???而其它的路由項(xiàng)全部歸入local表,主要是廣播路由項(xiàng)和本地路由項(xiàng)。在我們的系統(tǒng)環(huán)境下,local表共有7項(xiàng),每個(gè)網(wǎng)絡(luò)設(shè)備接口占三項(xiàng)。分別是本地地址(源跟目的地址一致),子網(wǎng)廣播地址(主機(jī)號全為1),子網(wǎng)廣播地址(主機(jī)號為零)。再加上一個(gè)lo的RTN_LOCAL項(xiàng)。
??? 現(xiàn)在我們再來看myfib_add_ifaddr函數(shù)的路由添加策略。對于一個(gè)傳入的ip地址(結(jié)構(gòu)structin_ifaddr表示),如果它是secondary地址,首先要確保同一個(gè)網(wǎng)絡(luò)設(shè)備接口上存在一個(gè)跟其同類型的primary地址(網(wǎng)絡(luò)號與子網(wǎng)號完全一致),因?yàn)?#xff0c;路由項(xiàng)的信息中的源地址全是primary的,secondary地址其實(shí)沒有實(shí)際使用,它不會在路由表中產(chǎn)生路由項(xiàng)。然后,向local表添加一項(xiàng)目的地址是它本身的,類型為RTN_LOCAL的路由項(xiàng);如果該ip地址結(jié)構(gòu)中存在廣播地址,并且不是受限廣播地址(255.255.255.255),那么向local表添加一個(gè)廣播路由項(xiàng);然后,對符合加入main表的條件進(jìn)行判斷,如果符合,除了加入main表,最后,如果不是D類地址,還要加入兩個(gè)廣播地址(其實(shí),已經(jīng)跟前面有重疊,很多情況下不會實(shí)際觸發(fā)加入的動作,只要記住,一個(gè)ip地址項(xiàng)對應(yīng)最多有兩個(gè)廣播地址就可以了)。
?
多路由表(multiple Routing Tables)
傳統(tǒng)的路由算法是僅使用一張路由表的。但是在有些情形底下,我們是需要使用多路由表的。例如一個(gè)子網(wǎng)通過一個(gè)路由器與外界相連,路由器與外界有兩條線路相連,其中一條的速度比較快,一條的速度比較慢。對于子網(wǎng)內(nèi)的大多數(shù)用戶來說對速度并沒有特殊的要求,所以可以讓他們用比較慢的路由;但是子網(wǎng)內(nèi)有一些特殊的用戶卻是對速度的要求比較苛刻,所以他們需要使用速度比較快的路由。如果使用一張路由表上述要求是無法實(shí)現(xiàn)的,而如果根據(jù)源地址或其它參數(shù),對不同的用戶使用不同的路由表,這樣就可以大大提高路由器的性能。
規(guī)則(rule)
規(guī)則是策略性的關(guān)鍵性的新的概念。我們可以用自然語言這樣描述規(guī)則,例如我門可以指定這樣的規(guī)則:
規(guī)則一:“所有來自192.16.152.24的IP包,使用路由表10, 本規(guī)則的優(yōu)先級別是1500”
規(guī)則二:“所有的包,使用路由表253,本規(guī)則的優(yōu)先級別是32767”
我們可以看到,規(guī)則包含3個(gè)要素:
什么樣的包,將應(yīng)用本規(guī)則(所謂的SELECTOR,可能是filter更能反映其作用);
符合本規(guī)則的包將對其采取什么動作(ACTION),例如用那個(gè)表;
本規(guī)則的優(yōu)先級別。優(yōu)先級別越高的規(guī)則越先匹配(數(shù)值越小優(yōu)先級別越高)。
策略性路由的配置方法
傳統(tǒng)的linux下配置路由的工具是route,而實(shí)現(xiàn)策略性路由配置的工具是iproute2工具包。這個(gè)軟件包是由Alexey Kuznetsov開發(fā)的,軟件包所在的主要網(wǎng)址為ftp://ftp.inr.ac.ru/ip-routing/。
這里簡單介紹策略性路由的配置方法,以便能更好理解第二部分的內(nèi)容。詳細(xì)的使用方法請參考Alexey Kuznetsov寫的 ip-cfref文檔。策略性路由的配置主要包括接口地址的配置、路由的配置、規(guī)則的配置。
接口地址的配置IP Addr
對于接口的配置可以用下面的命令進(jìn)行:
Usage: ip addr [ add | del ] IFADDR dev STRING
例如:
router># ip addr add 192.168.0.1/24 broadcast 192.168.0.255 label eth0 dev eth0
上面表示,給接口eth0賦予地址192.168.0.1 掩碼是255.255.255.0(24代表掩碼中1的個(gè)數(shù)),廣播地址是192.168.0.255
路由的配置IP Route
Linux最多可以支持255張路由表,其中有3張表是內(nèi)置的:
表255 本地路由表(Local table) 本地接口地址,廣播地址,已及NAT地址都放在這個(gè)表。該路由表由系統(tǒng)自動維護(hù),管理員不能直接修改。
表254 主路由表(Main table) 如果沒有指明路由所屬的表,所有的路由都默認(rèn)都放在這個(gè)表里,一般來說,舊的路由工具(如route)所添加的路由都會加到這個(gè)表。一般是普通的路由。
表253 默認(rèn)路由表 (Default table) 一般來說默認(rèn)的路由都放在這張表,但是如果特別指明放的也可以是所有的網(wǎng)關(guān)路由。
表 0 保留
路由配置命令的格式如下:
?
| Usage: ip route list SELECTOR ? |
如果想查看路由表的內(nèi)容,可以通過命令:
ip route list table table_number
對于路由的操作包括change、del、add 、append 、replace 、 monitor這些。例如添加路由可以用:
?
| router># ip route add 0/0 via 192.168.0.4 table main ? |
?
第二條命令代表向路由表1添加一條路由,子網(wǎng)192.168.3.0(子網(wǎng)掩碼是255.255.255.0)的網(wǎng)關(guān)是192.168.0.3。
在多路由表的路由體系里,所有的路由的操作,例如網(wǎng)路由表添加路由,或者在路由表里尋找特定的路由,需要指明要操作的路由表,所有沒有指明路由表,默認(rèn)是對主路由表(表254)進(jìn)行操作。而在單表體系里,路由的操作是不用指明路由表的。
===============================================================================
===============================================================================
轉(zhuǎn)載于:https://www.cnblogs.com/juandx/p/4114573.html
總結(jié)
以上是生活随笔為你收集整理的linux路由表命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【大数据算法】蓄水池抽样算法
- 下一篇: Linux安装技巧--安装Uuntu与w