前几天宿舍哥们说用两根线太浪费了,就让我整合成一条(我们六个电脑,跟网通申请了两条线)。开始的时候没有想到问题的复杂性,就说直接用两个路由级联就可以(就是用一根普通双绞线把两个SOHO路由连起来),但是事实证明完全错误。所以我就把整合经验以及问题分析跟大家分享一下,废话不多说,见下文详解。
         解决方案:
         1.用A路由接到网通申请的线路上(用WAN口),然后用一根普通双绞线连接A、B路由的LAN口。
         2.把B路由(二级路由,这里相当于一个交换)的DHCP功能关闭。登陆B路由(在浏览器地址栏输入192.168.1.1,敲回车),将LAN口地址改为192.168.1.2(其实改成任意一个192.168.1.0/24网络中不与A路由LAN口地址相同的地址即可)。
         3.如果想确保所有PC能够共享上网,可以把B路由下的PC都改成静态IP地址。
         大家可以看到,这个方案其实实施起来时很简单的,但是我可以保证说是绝对可行的。下面我就分析一下为什么不加这些简单的配置就会出现共享上网问题。
         问题分析:
         1.如果不把B路由DHCP功能关闭,那么PC在开机自动获取地址的时候,两个路由都抢着要给PC分配地址。如果A抢到这个权利,那么很幸运这个PC可以共享上网;万一B抢到,很不幸:PC不能上网。
           原因:B路由分配给你PC地址,就是说你的PC上网关是B的LAN口地址,你所有的通向外网的数据包都由B的LAN口送向外面,也就是送到B的WAN口,然而B的WAN口没有接到ISP的线路上。到此,你的数据包就被drop了。
         2.如果不将B路由LAN口地址改为不同于A的LAN口的地址,那么你一开机是可以上网的,不管是A还是B下相连的PC。但是,如果你在上网期间,登陆了一次路由,也就是登陆192.168.1.1,那么如果你登陆上的是A,那仍可以上网;就是怕你登陆上了B,这时你肯定不能上网了。
            原因:在PC一开机获取了地址,并且在高速ARP缓存中记录了网关地址(A的LAN口地址:192.168.1.1)与MAC地址(A的LAN口MAC地址)的对应条目。PC的通向外网的数据包可以正确的送往网关。一旦登陆192.168.1.1时登陆上了B路由,这时ARP缓存中更新了条目:IP地址仍是192.168.1.1(伪网关,B的LAN口地址),但是MAC地址换成了B的LAN口的MAC地址。这样,虽然你的通向外网的数据包仍是送往192.168.1.1,但是已经不是A的LAN口,而是B的,同上不能上网。
         3.至于将PC地址设置为静态,可以不用的。这样只是让开机启动反映时间短一些。不改也是可以上网的,我测试过的。
         好了,洋洋洒洒千余字,学理的写得不好,不过应该是有些逻辑的。欢迎批评指正。