我对共享上网的探索

        从大学开始,就一直有一个经常探索的问题,就是如何突然上网客户端的各种限制,实现和室友共享上网。共享上网是ISP们非常不乐于见到的,所以就涉及很多限制与反限制的问题。经过使用刚刚开始时直接使用路由器就能上网的时代,到『改成相同IP、相同MAC』的『方法』,到代理服务器、到sygate、再到NAT,再到现在常用的开WLAN和使用虚拟机模拟NAT。经历了很多代的探索,总结出了一种基本可行的共享上网方法。本文将针对上网客户端的限制,逐个探索解决办法,然后引出我现在使用的共享上网的解决方案。
        在我对上网有印象时, 就感觉到网络应该是免费的,想上网,一切所需做的事情,就是找到一根网线,然后插入电脑。后来发现,有些网络插上网线,居然不能上网!然后,问题就来了。
        必须要将TCP/IP属性输入框填上合适的数字?我注意到,网络连接的活动状态中,只有发送,没有接收,然后还显示了一个黄色的感叹号。这最有可能发生在学校的机房。解决办法很简单,就是参考旁边可以上网的电脑的IP配置,然后写入自己的电脑上。说起来,它本质上是可以上网的,只是需要改改东西。我在很多机房、办公室、网吧看见有一张用于维护IP地址的表,我至今仍然表示不能理解,插上网线就能上网是再简单不过的事情,为什么不实现它?曾经在知乎网上提了一个问题(http://www.zhihu.com/question/20971480),但回答不具备任何说明力。我认为之所以用户不能插上网线就能上网,是因为网管不愿意实现。
        但这些一般都不属于宿舍,宿舍中最原始的认证方法是使用调制解调器进行PPPoE认证拨号上网。但现在所有的路由器都有自动拨号上网的功能,因此该上网方式可以使用配置路由器的方法秒杀。拨号上网认证方式的加强版是加入一个『代拨号』的软件,如『星空极速』。但这种方法仍然是拨号上网,因此仍然具有拨号上网的帐号和密码,通常只需要百度一下『ADSL上网帐号密码查看工具』,就能了解真实的登录信息,然后回归拨号上网,因此仍然被秒杀。
        聪明的ISP知道必须让路由器停止工作才能避免被共享上网,因此提出了上网客户端的概念。客户端的作用有很多,除了让你上网之外,还包括使用了一种和ADSL不同的上网协议,以避免让正常路由器运作;还有客户端监视的功能,包括监视客户端网络接口变化、MAC地址和相关进程信息。但道高一尺魔高一丈,如果抛开客户端监视,仅仅只是换个协议,避免路由器的话,使用目前常见的代理服务器就可以轻易解决。在此不得不提两个有代表性的软件:CCProxy和sygate。CCProxy是代理服务器软件,优点是运行容易,双击即可,缺点是软件必须要提供代理的功能才能使用,另一个缺点就是它已经成为了客户端监视的一个靶子。sygate使用起来也非常是可以轻易实现共享上网的软件,提供了完整的TCP/IP功能,室友不需要作任何配置就可以上网,但sygate无法在Windows XP以后的系统上运行,而且现在sygate也成了客户端验证中的靶子。
        可见,实现共享上网的关键, 在于解决客户端认证的问题。好在,现在有好几个办法,可以解决此问题:1、利用客户端检测不完善的问题,运行某些共享上网的软件;2、网上可以找到一些『山寨版』客户端。
         1、利用客户端检测不完善的问题,运行某些共享上网的软件。我注意到,很多客户端,能检测CCProxy代理服务器(如抱怨说检测到代理软件之类),但对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。总之,共享上网早已不是个问题,如果你电脑可以上网,你就要相信,一定可以共享上网。

你可能感兴趣的:(共享)