Q:如何排除 VPN 無法上網的故障
A:很多公司都架設了自己的VPN 網絡,對公司內移動辦公的用戶提供接入。但是大多數情況下很多用戶發現只要連接上VPN,原本正常的網絡浏覽、QQ等訪問Internet的通訊都被斷掉了,而本地局域網的訪問(跨網段的)也不行了。
很長時間以來筆者一直以為這個故障是VPN網絡的通病,沒辦法解決。有一次一位外省的朋友到我司公干,他們公司用的是天融信的VPN軟件,結果發現他連上後其他網段的訪問也都很正常。
筆者很納悶,於是仔細研究,最終在顯示路由表的時候發現了區別(在命令提示符窗口下鍵入:route print,連上VPN的路由表如圖)。
一般的VPN連接上之後,系統會自動加載一條“8個0”的路由條目,將默認網關指向VPN網絡的網關,Metric為1。即目的網絡:0.0.0.0,掩碼:0.0.0.0。代表所有網絡地址,也就是說所有目的網絡沒有在具體路由條目中指明去向,且不在本網段內的通訊都要轉發到指定的默認網關去,然後再由網關來擇路轉發。
而Metric為路由條目的度量值,與優先級成反比。可以看出這時所有非本網段的訪問都被轉發到VPN網關上,而不是原來的本地網關。原有8個0的默認路由的Metric被改為 2。在路由條目中目的地址相同的情況下,這個度量值越小則相應的優先級越高,這時只有前面那條Metric為1的路由有效,而本地網關失效了,這樣訪問Internet當然有困難了。
在圖中可以看到,第一條Gateway(網關)為172.16.1.1的路由是本地網絡的默認路由,Metric被改成2了。而多添加了第二條8個0 的默認路由是VPN連接的路由,Metric值為1。這時我們只要對第二條路由做修改,讓只有目的為192.168.0.0/24這個網段的包發到VPN 的網關上去,而其他訪問仍然走本地網關即可。
那麼我們要先刪除掉第二條路由,命令為:route delete 0.0.0.0 mask 0.0.0.0 192.168.0.3;然後添加一條新的路由條目,命令為:route add 192.168.1.0 mask 255.255.255.0 192.168.0.3。這樣原有的本地默認路由將重新起作用,至此故障解決。
注:route命令是用來管理系統路由表的。一個路由條目一般由“目的或目標(Destination)”、“網絡掩碼(Netmask)”以及“網關(Gateway)”組成。顯示路由表的命令是route print;添加一個靜態路由命令是route add 目標 掩碼 網關。另外,如果不加 -p參數,則新建路由不會保存,重啟後即消失。刪除一個路由條目的命令是“route add 目標 掩碼 網關”;改變一個路由的命令為 “route change 目標 掩碼 網關”。