雙網卡接入兩個網路
雙網卡接入兩個網路
某企業使用者使用的運行Windows XP的電腦裝有兩塊網卡,網卡1通過PPPoE串連到Internet,網卡2通過區域網路串連到企業內部網路,企業內部網路為172.16.0.0/16,內部網路網關為172.16.0.1,網卡2的IP地址為172.16.0.17.
在沒有串連到Internet的情況下,該使用者可以訪問整個企業內部網路。當該使用者串連到Internet後,便會失去企業內部網路172.16.0.0的連通性。該使用者在網路連接屬性中正確設定了IP地址,子網路遮罩和預設閘道。
在該使用者不串連到Internet時,我們在命令列中輸入:route print顯示路由表,顯示所示,目前的預設閘道是172.16.0.1。ping內部網路172.16.0.0均顯示正常.
接下來該使用者接入Internet,然後我們再次輸入route print顯示路由表,發現路由表預設路由發生了變化,預設閘道從172.16.0.1變為61.30.30.61,這個是網卡1串連的網關地址。這時我們再ping 172.16.0.0這個網路,顯示逾時。
{由此我們確認是由於Windows在PPPoE協商後“擅自”更改了預設路由造成的路由錯誤,將發往內網的資料錯誤的發送到了Internet。
[解決方案
對於Internet,我們必須使用預設路由。在內網網關不能提供RIP資訊的情況下,我們只能通過設定靜態路由將屬於內網的資料發往172.16.0.17.
在cmd下輸入:
route -p add 172.16.0.0 mask 255.255.0.0 172.16.0.17 metric 1 if [].
這裡的[]代表出口interface的index,這個值你可以使用route print命令看到。注意這個值是16進位,所以你必須在前邊加上0x。比如出口interface是Local Area Connection 2,對應的index是0x10003,則這兩條命令應寫為:
route -p add 172.16.0.0 mask 255.255.0.0 172.16.0.17 metric 1 if 0x10003
現在我們再來使用route print查看路由表。在路由表中出現了條新的路由:
network destination=172.16.0.0 netmask=255.255.0.0 gateway=172.16.0.17
這條路由表示,對去往172.16.0.0/16的資料選用172.16.0.17作為網關。這樣就可以確保去往內部網路的資料通過正確的網關進行路由。
a:上邊例子中的0x10003是怎麼得來的?
使用route print命令得到的顯示。在最開始的幾行顯示的Interface List中
b:如果我不寫if參數會怎樣?
Windows會自動選擇一個最合適的interface。但是Windows不保證這個選擇就是你想要的。
c:route print命令顯示的metric是什麼意思?"
metric是十進位的。它代表當出現多條針對同一個prefix的不同路由時,Windows優先使用哪一個路由。Metric值約小優先值越高。例如,對於172.16.0.0/16這個網路,如果有一個路由的metric是40,另一個是39,那麼Windows將優先使用metric是39的路由。如果在某個時刻,這個路由無效了(例如網路中斷),那麼將使用metric是40的路由。如果metric 39的路由後來恢複了,將Windows將跳回使用這個路由。