首先打開CMD,命令提示符下輸入route print查看系統路由表,此時一般會出現兩條路由:
network destination netmask Gateway interface metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 3
0.0.0.0 0.0.0.0 10.10.10.1 10.10.10.20 3
可想而知,由於系統自動學習路由的關係,出現到目的網絡0.0.0.0,的多條默認路由,導致數據包轉發無法判斷走哪個網關和接口,所以無法訪問外網,在這裏我們需要留下10.10.10.1該條路由,因爲10.10.10.20屬於外網IP,屬於外網訪問的接口,具體操作命令如下:
route delete 0.0.0.0
由於該條命令的特性是會把所有到目的網絡0.0.0.0的路由條目刪除,所以我們還需要重新添加外網路由,即
route add 0.0.0.0 mask 0.0.0.0 10.10.10.1 metric 1 if 2
若內網應用無法訪問,可相應地添加內網路由,即
route add 192.168.1.0 mask 255.255.255.0 192.168.1.1 metric 1 if 1
完了之後再訪問一下外網測試看看
下面再簡單介紹一下route命令的一些用法
----------------------------------------route 分割線----------------------------------------
以下是route命令基本格式:
route [-p] [-f] [command] [destination] [MASK netmask] [gateway] [METRIC metric] [IF interface]
從左往右各選項含義依次爲
-p 加上此參數可以使路由條目永久生效,默認情況下路由條目是重啓後消失
-f 刪除所有非默認路由條目,加上這個選項可以先清除再改動
[command]有以下幾個選項:
print 列出路由表
add 增加路由條目
delete 刪除路由條目
change 更改路由條目,且僅能用來更改網關gateway和跳數mertic
當命令選項爲列出打印和刪除的時候,即print和delete,可使用正則表達式的*和?,*表示匹配任意長度字符,?表示匹配任意單個字符
[destination]
即目的主機,可以是網絡地址或者主機地址,也可以使用位於系統分區:/windows/system32/driver/etc/目錄下的networks文件裏描述的別名
[MASK netmask}
即子網掩碼,格式爲mask 255.255.255.0,若不指定,默認子網掩碼爲255.255.255.255,需要注意的是當子網掩碼跟目的網絡/主機不匹配的時候,即子網掩碼跟目的網絡/主機的地址進行二進制的按位“與”運算,得出的結果跟目的網絡/主機不相同的時候,會提示掩碼不合法錯誤
[gateway]
即所經過的網關,也可以使用位於系統分區:/windows/system32/driver/etc/目錄下的hosts文件裏描述的別名
[Metric metric]
即到達目的網絡/主機所經過的跳數,格式爲metric 3
[IF interface]
即所使用的接口(網卡),格式爲if 2,若不指定,則系統會自動選擇合適的網卡
下面舉幾個常用的例子:
route add 192.168.1.0 mask 255.255.255.0 192.168.1.1 metric 1 if 1 //意爲增加一個從1號網卡出去的經過192.168.1.1網關的到192.168.1.0/24這個網絡的路由
route delete 157.0.0.0/ route delete 157* / route delete 15? //刪除匹配157.0.0.0 ,157*和15?的路由條目
route print / route print 157* / route print 15? // 列出所有,匹配157*和15?的路由條目
route change 157.0.0.0 mask 255.0.0.0 157.55.80.5 metric 2 if 2 //更改原路由條目
PS:本文基於windows下route命令幫助文檔翻譯整理,有錯漏的地方希望大家指正