從大學開始,就一直有一個經常探索的問題,就是如何突然上網用戶端的各種限制,實現和室友共用上網。共用上網是ISP們非常不樂於見到的,所以就涉及很多限制與反限制的問題。經過使用剛剛開始時直接使用路由器就能上網的時代,到『改成相同IP、相同MAC』的『方法』,到Proxy 伺服器、到sygate、再到NAT,再到現在常用的開WLAN和使用虛擬機器類比NAT。經曆了很多代的探索,總結出了一種基本可行的共用上網方法。本文將針對上網用戶端的限制,逐個探索解決辦法,然後引出我現在使用的共用上網的解決方案。
在我對上網有印象時, 就感覺到網路應該是免費的,想上網,一切所需做的事情,就是找到一根網線,然後插入電腦。後來發現,有些網路插上網線,居然不能上網!然後,問題就來了。
必須要將TCP/IP屬性輸入框填上合適的數字?我注意到,網路連接的活動狀態中,只有發送,沒有接收,然後還顯示了一個黃色的驚嘆號。這最有可能發生在學校的機房。解決辦法很簡單,就是參考旁邊可以上網的電腦的IP配置,然後寫入自己的電腦上。說起來,它本質上是可以上網的,只是需要改改東西。我在很多機房、辦公室、網吧看見有一張用於維護IP地址的表,我至今仍然表示不能理解,插上網線就能上網是再簡單不過的事情,為什麼不實現它?曾經在知乎網上提了一個問題(http://www.zhihu.com/question/20971480),但回答不具備任何說明力。我認為之所以使用者不能插上網線就能上網,是因為網管不願意實現。
但這些一般都不屬於宿舍,宿舍中最原始的認證方法是使用數據機進行PPPoE認證撥接。但現在所有的路由器都有自動撥接的功能,因此該上網方式可以使用配置路由器的方法秒殺。撥接認證方式的加強版是加入一個『代撥號』的軟體,如『星空極速』。但這種方法仍然是撥接,因此仍然具有撥接的帳號和密碼,通常只需要百度一下『ADSL上網帳號密碼查看工具』,就能瞭解真實的登入資訊,然後迴歸撥接,因此仍然被秒殺。
聰明的ISP知道必須讓路由器停止工作才能避免被共用上網,因此提出了上網用戶端的概念。用戶端的作用有很多,除了讓你上網之外,還包括使用了一種和ADSL不同的上網協議,以避免讓正常路由器運作;還有用戶端監視的功能,包括監視用戶端網路介面變化、MAC地址和相關進程資訊。但道高一尺魔高一丈,如果拋開用戶端監視,僅僅只是換個協議,避免路由器的話,使用目前常見的Proxy 伺服器就可以輕易解決。在此不得不提兩個有代表性的軟體:CCProxy和sygate。CCProxy是Proxy 伺服器軟體,優點是運行容易,雙擊即可,缺點是軟體必須要提供代理的功能才能使用,另一個缺點就是它已經成為了用戶端監視的一個靶子。sygate使用起來也非常是可以輕易實現共用上網的軟體,提供了完整的TCP/IP功能,室友不需要作任何配置就可以上網,但sygate無法在Windows XP以後的系統上運行,而且現在sygate也成了用戶端驗證中的靶子。
可見,實現共用上網的關鍵, 在於解決用戶端認證的問題。好在,現在有好幾個辦法,可以解決此問題:1、利用用戶端檢測不完善的問題,運行某些共用上網的軟體;2、網上可以找到一些『山寨版』用戶端。
1、利用用戶端檢測不完善的問題,運行某些共用上網的軟體。我注意到,很多用戶端,能檢測CCProxyProxy 伺服器(如抱怨說檢測到代理軟體之類),但對Windows的ICS服務(用於開啟Wi-Fi之類)或Connectify之類的新興軟體卻表現得很沉默。因此直接使用這些軟體即可。這樣可以解決問題,但仍然有一些限制,像湖南聯通用戶端srun3000,宿舍同一個交換器也不提供區域網路的功能,有時還是讓人不爽。
2、網上可以找到一些 『山寨版』用戶端,像之前的神州數位,就有一個zdcclient。『山寨版』用戶端有很多好處,首先,它可以沒有、也沒任何理由有用戶端檢測,因此就可以直接避開這個問題。然後,由於某些原因,官方用戶端版本可能不會為最新版的作業系統提供相容性保證,無法運行、斷網、頓卡之類的事時有發生,而山寨版的用戶端社區活躍,緊跟時代,運行起來非常給力。但 『山寨版』用戶端可能找不到,也可能被封殺。總而言之,就是『山寨版』很給力,但略顯尷尬。
現在回想和思考,接入網路最簡單的的方法是什嗎?當然是沒有任何認證,插上網線,就能上網,或者串連Wi-Fi,就能上網。現在無線網卡在膝上型電腦上很普遍,因此串連Wi-Fi通常不是問題(但有時顯示無法實現上述的1和2,也會是問題)。插上網線就能上網,這種最理想的上網方式,就需要回到sygate的工作原理。經分析可以發現,sygate實際上是虛擬出了兩個網路介面,一個用於接入Internet,另一個用於向其它電腦共用網路,但它不相容Windows XP以後的系統。再探索就會發現,其實一個叫NAT(網路位址轉譯)的服務就是做這件事。
問題在於需要兩個網路介面,用於串連Internet和提供網際網路共用,但實際生活中,基本沒人去給自己的電腦配備兩個網卡。我注意到,大多數虛擬機器為自己的虛擬機器提供NAT模式上網,然後也提供擴充n個橋接網卡的功能。於是就有兩個解決方案:1、可以在虛擬機器上擴充兩個橋接網卡,然後直接在虛擬機器中運行用戶端上網並使用NAT提供網際網路共用;2、主機運行用戶端連網,然後給虛擬機器一個NAT網路介面供虛擬機器上網、一個橋接網路介面供NAT共用上網。兩種方法中,1的可擴充性更好,可以並行擴充;2的易用性更好,不需要虛擬機器/主機之間的連網切換。我用過VirtualBox、Hyper-V和VMware,其中只有Hyper-V僅提供橋接的功能。VirtualBox和VMware都提供NAT。但我發現,在我的電腦上,無論我換用什麼系統,即使是使用橋接,並處於同一網段,主機也無法訪問VirtualBox虛擬機器,不知道為什麼,而室友的電腦一切正常。
虛擬機器當然是使用Windows Server系統,開啟NAT服務一般都很簡單,通常經過百度『如何在Windows Server 2003/2008/2008 R2/2012中開啟NAT』就能解決,由於全程都是圖形介面,安裝和配置的過程都非常簡單。值得一提的是,最好先定好哪個網卡用於串連Internet,哪個網卡用於對外共用。對外共用的網路需要使用靜態IP地址,一般用10.x.x.x或者172.16.x.x或者10.x.x.x。
到了這一步,其實就可以給室友共用上網了,但仍然需要配置IP屬性。解決辦法也是非常簡單,可以給伺服器增加一個DHCP的角色,來給室友的電腦自動化佈建好IP,就樣就能 『插上網線就能上網』了。這也就是為什麼我對『學校機房/網吧/辦法室使用靜態IP』表示不解的原因,明明DHCP很簡單。
值得一提的是,使用在每個虛擬機器上擴充兩個橋接網卡的方法,可以並行串連多個網路介面。然後經過一層NAT,可以實現單IP、多網關的共用上網,其直接的結果是,讓上網速度成倍增長。上個學期我使用了三個Windows Server 2003串連了三個4M的聯通網,讓一個宿捨實現了12M的頻寬,平時的迅雷下載速度能達到1.4MB每秒,效果非常明顯。但也有些問題。在有多個網關時,系統只會將這些網路介面用於發生錯誤時作冗餘備份用,而不會預設並行使用多個網關。因此,正常上網(瀏覽網頁、單線程下載、看優酷視頻)速度沒有最佳化,而且由於所有電腦都使用預設閘道,電腦上網速度會不升反降。關於此問題,我還沒有解決,但如果需要探索,可以從google『多網卡負載平衡』或者『multiple network interface NLB』來下手。
以前,共用上網很進階,但現在看來,共用上網很常規。以前想的一些辦法,現在看來很傻。很久以前的那種『插上網線,就能上網』的想法早已實現,但時過境遷,現在用得更多的還是共用Wi-Fi。總之,共用上網早已不是個問題,如果你電腦可以上網,你就要相信,一定可以共用上網。