前些日子我给笔记本配了一个U口网卡,这是由于寝室没有台式,前些日子好不容易整了一个台式的电脑,可是没有双网卡啊,用网通的时候homeshare,再加之这破windows系统的不稳定,网通老是掉线,昨天我产生了个想法,用我的linux做主机,双网卡全寝室共享上网。这样在linux稳定的支持下,不用任何路由软件就能够实现共享上网。

然而在linux下配置双网卡是有一定难度的,一个设计到软路由的问题,还有一个设计到firefox与网通客户端不兼容的问题。
今天早上忙活了一早上,终于解决了这个问题,现在寝室可以共享上网了,很是开心啊......
下面把方法记录一下,便于以后用,也给linux菜鸟们一些提示。

首先我介绍一下东北大学专用网通的拓扑结构吧:
将网通宽带主线插到你的第一个网卡,也就是eth0;然后从交换机接一网线到网卡2,也就是eth1;

然后配置我的主机:两网卡的设置:
eth0:配置其自动获取IP地址,配置DNS为 :首选202.96.75.68 备选202.96.64.68
eth1:192.168.1.1 掩码:255.255.255.0   网关为空:                      #局域网内与其它各分机的匹配设置
客户机子网段:192.168.1.0~255

以上只设置eth0和eth1.先不要激活eth1,只激活eth0; 让eth0自动获取外网的IP地址。

接着继续设置,这里我在网上查了一下有两种方法:

一种是用NAT方法
在主机终端上做下面两条指令:
#echo "1" > /proc/sys.Net/ipv4/ip_forward                  #打开IP转发,1表示转发;0表示不转发
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE        #打开NAT,关于iptables命令的规则下面我会介绍一下
这时候就已经给eth0做好了转发和eth1的共享,其它分机就可以共享了,然后就是激活你的eth1了。

我就是通过这种方法来实现共享的,这种方法比较简单易用,两行命令就能够实现了。

下面这种方法就是通过linux的网桥软件来搭建一个网桥,
#echo "1" > /proc/sys.Net/ipv4/ip_forward
#ifconfig eth0 0.0.0.0 up
#ifconfig eth1 0.0.0.0 up
#brctl addbr br0           #添加一个网桥
#brctl addif br0 eth0
#brctl addif br0 eth1      #将eth0 eth1加到网桥中去
#ifconfig br0 192.168.1.1.Netmask 255.255.255.0 broadcast 192.168.1.255 up  
#给网桥分配IP地址,如果不做NAT,也不需要远程访问网桥的话,可以不设IP地址,但必须启用网桥(ifconfig br0 up)
#route add default gw 202.96.168.68 #如果网桥不需要访问其他机器的话,可以不添加网关。
第二种方法我不推荐,因为自己建立网桥必须清楚地认识网桥的配置,明白brctl的使用,这样做成功的机率不大,我试了一下没有成功就不再试了,既然第一种NAT方法比较简单还是先用第一种吧,
第二种等以后再慢慢研究它啊..........呵呵

接下来就是客户机的设置了,客户机有linux,也有xp的,我觉得大多数寝室的客户机应该是xp吧,没关系,都 一样的方法
如果是linux客户机,那么eth0:192.168.1.1~255 掩码:255.255.255.0 网关:192.168.1.1
如果是xp的客户机,那么网络连接tcp/ip协议设置:IP:192.168.1.1~255 掩码:255.255.255.0 网关:192.168.1.1


这样就实现了双网卡的共享了,接下来你要用linux登录网通的客户端,firefox下地址栏输入:http://202.96.75.14/queryPort.jsp?userIp=221.200.*.*&newbl=1
上面的221.200.*.*就是你eth0自动获得的IP地址,如何得到这个IP地址呢?
#ifconfig
看到eth0的IP就行了,将上面那个IP改成你得到的IP,就能登录了,这个是方法是xiaomao101原创的,我在这里借来一用,呵呵
这样做有个不好的地方就是没有网通的计时框,不过这个我觉得也没有什么用,能上网就行了,管它多长时间呢,反正网通是不计流量和时间的。
(注意:我在fedora 8下用的时候环境变量有问题,因此在执行#ifconfig,还有#route的时候,显示bash: ifconfig: command not found
这样就是你的环境变量有问题,解决方法看看这篇文章就明白了,我就不写出来了:http://hi.baidu.com/lengyuex/blog/item/20d2221fd4178067f624e4dc.html)

其实也有人提出来说登录网通的客户端可以在linux的wine下用IE来实现,这样我没有试过,应该理论上是完全可以实现的,但是使用linux的人是痛恨用wine这样的虚windows的,所以我不想用它。
还有一个问题就是如果你在使用网桥brctl的时候也显示找不到的话,有可能你没有装这两个软件uml-utilities 和bridge-utils,安装上才能找到,
安装的方法用yum就行了,如果你的yum源不能用,配置一下,看看我的blog,http://hi.baidu.com/lengyuex/ 有详细的配置方法。
#yum install bridge-utils
就能做到了)

这些都是我在配置的过程中遇到的问题,拿出来跟大家分享一下,也许有的人还会遇到更多的问题,建议你自己google一下,也可以提出来我们共同解决,呵呵,非常乐意的。

下面介绍一下上面提到的iptables命令:

iptables命令格式

iptables [-t nat] CMD [chain] [rule-matcher] [-j target]

-t nat:表示操作nat表

CMD:为操作命令

chain:为链名

rule-matcher:为规则匹配器

target:为目标动作


iptables -t nat -F #清除原有的nat表中的规则
iptables -F #清除原有的filter有中的规则
iptables -P FORWARD ACCEPT #缺省允许IP转发