路由表原理和重疊路由設置
路由表原理和重疊路由設置,下面做了一個路由表原理相關問題的問答專題,希望能夠囊括網友在使用路由表原理和重疊路由設置的所有問題,歡迎大家留言補充。
路由表原理,如果一個主機有多個網絡接口,當向一個特定的IP地址發送分組時,它怎樣決定使用哪個接口呢?答案就在路由表中。來看下面的例子:
◆目的,子網掩碼,網關,標志,接口
◆201.66.37.0255.255.255.0201.66.37.74Ueth0
◆201.66.39.0255.255.255.0201.66.39.21Ueth1
主機將所有目的地為網絡201.66.37.0內主機(201.66.37.1-201.66.37.254)的數據通過接口eth0(IP地址為201.66.37.74)發送,所有目的地為網絡201.66.39.0內主機的數據通過接口eth1(IP地址為201.66.39.21)發送。標志U表示該路由狀態為“up”(即激活狀態)。對于直接連接的網絡,一些軟件并不象上例中一樣給出接口的IP地址,而只列出接口。
路由表原理此例只涉及了直接連接的主機,那么目的主機在遠程網絡中如何呢?如果你通過IP地址為201.66.37.254的網關連接到網絡73.0.0.0,那么你可以在路由表中增加這樣一項:
◆73.0.0.0255.0.0.0201.66.37.254UGeth0
此項告訴主機所有目的地為網絡73.0.0.0內主機的分組通過201.66.37.254路由過去。標志G(gateway)表示此項把分組導向外部網關。類似的,也可以定義通過網關到達特定主機的路由,增加標志H(host):
◆91.32.74.21255.255.255.255201.66.37.254UGHeth0
下面是路由表原理,除了特殊表項之外:
◆127.0.0.1255.255.255.255127.0.0.1UHlo0
◆default0.0.0.0201.66.37.254UGeth1
路由表原理第一項是loopback接口,用于主機給自己發送數據,通常用于測試和運行于IP之上但需要本地通信的應用。這是到特定地址127.0.0.1的主機路由(接口lo0是IP協議棧內部的“假”網卡)。
路由表原理第二項十分有意思,為了防止在主機上定義到因特網上每一個可能到達網絡的路由,可以定義一個缺省路由,如果在路由表中沒有與目的地址相匹配的項,該分組就被送到缺省網關。多數主機簡單地通過一個網卡連接到網絡,因此只有通過一個路由器到其它網絡,這樣在路由表中只有三項:loopback項、本地子網項和缺省項(指向路由器)。
重疊路由,假設在路由表中有下列重疊項:
◆1.2.3.4255.255.255.255201.66.37.253UGHeth0
◆1.2.3.0255.255.255.0201.66.37.254UGeth0
◆1.2.0.0255.255.0.0201.66.37.253UGeth1
◆default0.0.0.0201.66.39.254UGeth1
之所以說這些路由重疊是因為這四個路由都含有地址1.2.3.4,如果向1.2.3.4發送數據,會選擇哪條路由呢?在這種情況下,會選擇第一條路由,通過網關201.66.37.253。原則是選擇具有最長(最精確)的子網掩碼。類似的,發往1.2.3.5的數據選擇第二條路由。
路由表原理注意:這條原則只適用于間接路由(通過網關)。把兩個接口定義在同一子網在很多軟件實現上是非法的。例如下面的設置通常是非法的(不過有些軟件將嘗試在兩個接口進行負載平衡):
◆eth0201.66.37.1255.255.255.0
◆eth1201.66.37.2255.255.255.0
對于重疊路由的策略是十分有用的,它允許缺省路由作為目的為0.0.0.0、子網掩碼為0.0.0.0的路由進行工作,而不需要作為路由軟件的一個特殊情況來實現。回頭來看看CIDR,仍使用上面的例子:一個服務提供商被賦予256個C類網絡,從213.79.0.0到213.79.255.0。該服務提供商外部的路由表只以一個表項就了解了所有這些路由:213.79.0.0,子網掩碼為255.255.0.0。
假設一個用戶移到了另一個服務提供商,他擁有網絡地址213.79.61.0,現在他是否必須從新的服務提供商處取得新的網絡地址呢?如果是,意味著他必須重新配置每臺主機的IP地址,改變DNS設置,等等。幸運的是,解決辦法很簡單,原來的服務提供商保持路由213.79.0.0(子網掩碼為255.255.0.0),新的服務提供商則廣播路由213.79.61.0(子網掩碼為255.255.255.0),因為新路由的子網掩碼較長,它將覆蓋原來的路由。