現在的企業網絡環境比較復雜,大多都會有內外網之分,上網需要來回切換。現在分別介紹一下在Windows和Linux下如何通過雙網卡使內外網同時使用。
首先你需要准備內外網的IP地址和各自的網關,以及配套的DNS。當然,即使不同時使用內外網,這些信息也是必須的。就拿我工作的環境為例,內網是無線路由器,DHCP自動分配,無線路由器的網關是默認的192.168.1.1,外網IP地址是61.132.XXX.157,網關是61.132.XXX.134(為保護隱私,XXX代表了1-255的一個整數),DNS我們可以選擇google為我們提供的8.8.8.8,經過測試這個DNS還是相當好用的。
同時接上外網網線,開啟WIFI,將你的內外網的IP分別填入兩個網卡中去,這時候兩個網卡的硬件同時工作了,但是你的電腦可能既不能上外網也不能上內網,也有可能只能上一個網。原因就是計算機根本不知道你在瀏覽器中輸入的地址到底需要他通過哪個網卡去訪問。
解決辦法:
以一台Windows的主機為例,打開CMD終端,鍵入route printf先大概了解一下當前的路由表

route print首先會打印一組接口列表,這里需要你認證看一下,記下分別代表你兩個網卡的數字序號,比如我的內網也就是無線網卡(Intel(R) WiFi Link 1000 BGN)的序號是13,外網也就是有線網卡(Realtek PCIe GBE Family Controller)的序號是11,心里跟我默念兩句,內網13外網11,內網13外網11。OK,繼續往下看,終端接下來打印的是IPV4和IPV6路由表,當前我們只關心IPV4的,路由表由網絡目標,掩碼,網關,接口,躍點數組成。這些術語您需要在百度上做一個大概的了解,本文就不贅述了。目標為0.0.0.0代表的是所有網絡,指向這個網段的必須經由外網網段,我們公司所有內網系統和主機的IP都以132開頭。於是,我們只要讓計算機知道,所有IP以132開頭的目標主機,請幫我從我的內網網卡訪問,所有不是以132開頭的目標主機,請幫我從外網網卡訪問。
OK,我們的目的了解了,下面就是命令了,在Windows下(Vista以上版本需要以管理員身份運行CMD終端才可以執行路由命令),我們可以這樣輸入
route delete 0.0.0.0 route delete 132.0.0.0 route -p add 132.0.0.0 mask 255.0.0.0 192.168.1.1 if 13 metric 1 route -p add 0.0.0.0 mask 0.0.0.0 61.132.XXX.134 if 11 metric 2
簡單講解一下上面的命令,首先兩個delete是刪除已存在的路由信息。后面兩個命令,第一個為指向132網段的目標添加了一條路由命令,(-p代表的是讓計算機永久記錄這條路由信息,關機重啟后仍然有效)讓其通過我們的無線路由器的網關去訪問,並且定義了它的物理接口序號(剛剛跟我默念的"內網13外網11",這里在if后面寫上13,順便說一句,這里的if是interface,接口的意思,不是條件判斷的意思),metric 1定義了這條路由的躍點數,躍點數越小,優先級越高,我們首先需要保證內網的訪問,所以定義其為1。下面一句定義外網網段的路由就顯得很簡單了,網關指向的是我們之前所說的外網網關,優先級降一個等級。
大功告成,在瀏覽器輸入內外網的地址,應該都可以訪問了。如果這時候你輸入內網的IP地址能夠正常訪問,而輸入內網的域名卻解析到外網上去(有些公司的內部應用系統是做好路由的,並不是直接用IP指向),這時候你需要在控制面板打開網絡連接,在XP下會直接顯示"高級"菜單,在Vista以上的版本需要按一下Alt才會出現高級菜單,點擊"高級設置",在列表中將內網網卡的位置調到最上面即可。

下面順便說一下Linux的命令,在Linux下,查看路由表的命令是route -n打印路由表。執行路由命令時請使用管理員身份執行,命令如下:
route add -net 132.0.0.0 mask 255.0.0.0 gw 192.168.1.1 route add -net 0.0.0.0 mask 0.0.0.0 gw 61.132.XXX.134

