近来,冒着巨大危险搞了一批破烂电脑,做点实验自己玩儿。性能都不咋地,只有我自己家的电脑能勉强安装一个Windows XP,作为一名IT工作者,我以没有智能手机,没有笔记本电脑,没有比HP康柏上网本系列更好的台式机,没有支付宝账号,没有淘宝账号,甚至没有自己的QQ号,没有自己的邮箱,没有信用卡,没有注册微博,没有涉足过任何社交网站...不为耻!据我所知,微软所有的测试都是在最差的环境下进行的。我是技术痴迷者,总觉得内功深厚才是根基,夹生饭很危险,一招一式更容易走火入魔,然而如果从应用的角度,从享受生活的角度,我确实是一个不折不扣的失败者!
本来家里买了宽带路由器,专门为丈母娘买的,她需要用笔记本上网,因此我的路由器还有无线功能,然而丈母娘走了以后,我把路由器和无线网卡收了,装了一个Linux虚拟机,然后在虚拟机里拨号上网,不知怎么地,连续好几次,我的虚拟机没有关机,而是suspend,第二天再打开时,PPPoE状态竟然还是那个,公网IP毅然未改,这完全不可思议,然而却懒得质问运营商!Linux系统里可以很简单的设置防火墙,路由器,DMZ等,我曾在自己的公司连接到了自己家的电脑(老婆在家看孩子,因此家里随时有人)。
本文简单介绍一下我的设置过程。
1.选择Linux作为虚拟机系统
使用Linux是因为它配置网络防火墙和路由都很是简单又方便,同时配置DMZ也只是需要几条iptables命令(NAT),而这些在Windows平台却被视为高度复杂且强大的功能,Windows的路由配置命令肯定没有iproute2来的灵活,且它的NAT模块的安装也需要费一番工夫,我就没有安装成功过,几乎恨死Windows了。如果想使Windows成为一台路由器,要修改注册表,然后重启机器,这是比较烦人的,我敢说,记住net.ipv4.ip_forward这串字符绝对比记住HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter更简单,并且重启机器所耗费的时间几乎比吸一支烟所耗费的生命更加令人惋惜,起码带不来任何快感!因此选择Linux作为虚拟机系统2.选择Windows作为宿主机
理由很简单,唯一那台性能还过得去的PC机不完全属于我,其它的机器又太破,我要是敢将PC机重装成Linux,我老婆会杀了我的!3.Linux发行版选择
虚拟机一部,内装一个Linux即可,使用Linux而不是别的是因为Linux可以很方便的实现路由器和防火墙的功能,路由器功能使用ip_forward以及iproute2即可应对,而防火墙功能则是iptables的强项,另外由于家用宽带一般是拨号上网的,因此该Linux系统还需要可以很方便的进行PPPoE拨号,因此比较推荐的是带有桌面的Linux,我使用的是RedHat,但是,桌面Linux的性能肯定要差一些,因此如果可以很好的玩转配置文件的话,还是安装Debian比较好,然后启动到Level 3即可。4.链路层复用
虽然安装虚拟机的PC机只有一个网卡,虚拟机中的Linux也只有一块网卡,然而记住,链路层对于网络层是可以复用的,因此只需要将虚拟机中的网卡简单的设置成Bridge模式就可以使用PC机上唯一的物理网卡承载不同网络,这里主要有两个IP网络,一个是私有的本地局域网,另一个是虚拟机中的PPP网卡和运营商方的PPPoE网络。链路层复用的原理很简单,那就是网络是分层的,每一层是独立管理的,层间在管理上是不搭干的。因此只需要一个很便宜的小HUB就可以实现共享上网。我的5台破烂儿就是通过另一台设置成HUB的破烂儿连接的,其中花了一小笔钱买了一个8端口网卡,内装Linux,设置了桥接。
虚拟机中的Linux PPPoE拨号的过程:
4.1.添加一个xDSL设备
4.2.绑定PPPoE物理网卡(体现oE)并输入账号和密码
4.3.创建
4.4.激活ppp网卡
最终,在Linux虚拟机中,就会出现一个ppp0的网卡,该网卡将借助eth0与运营商通信,而eth0被Bridge到了PC机的物理网卡,最终链路层得到复用。需要做的仅仅是在所有由HUB连接的机器的默认网关都指向Linux虚拟机的eth0(它们都在一个网段),打开Linux的ip_forward,所有机器就可以上网了。总的拓扑图如下: