在Linux下实现双ADSL连接捆绑上网
整机外设
我院北校区4个机房约240台电脑均需连接Internet上网,由于经费紧张,我们只用了两根8Mbps带宽的ADSL线路解决全部电脑上网问题。开始我们用两台机器做代理服务器,分别连接两个ADSL Modem,各机房的机器设置不同的网关来利用这两根ADSL的带宽。这样虽可正常上网,但一是要用两台机器做代理,浪费了硬件资源;二是各机房任一台机器不能同时用两个ADSL连接来上网,造成有的机房带宽紧张,有的机房带宽较松,带宽没有平衡。那么是否有更好的办法呢?后来在Linux下找到了解决方法。
一 服务器配置
服务器采用RedHat Linux 9.0操作系统,默认安装状况下就有iptables和pppoe组件。服务器上安装了三块网卡,分别为eth0、eth1、eth2。其中eth0与内网(局域网)相连,IP地址为172.16.20.40。eth1和eth2分别连接两个ADSL Modem。
二 设置第一个ADSL连接
在Linux终端方式下运行adsl-setup,根据屏幕提示,分别在以下有“//”注释的行按注释的方法进行操作(省略号部分为系统的显示信息,可以忽略):
Enter your Login Name (default root): //输入第一个ADSL账号(ADSL提供商给的用户名,登录用户要求用ADSL账号)
……
(default eth0): //输入“eth1”,即与第一个ADSL Modem 连接的网卡的设备名
……
Enter the demand value (default no): //回车即可
……
Enter the DNS information here: //输入本地ISP的主DNS服务器的IP地址,如202.103.96.112
……
Enter the secondary DNS server address here: //输入本地ISP的次选DNS服务器的IP地址
……
Please enter your Password: //输入第一个ADSL账号的密码
Please re-enter your Pass word: //再确认输入一次密码
……
Please enter ‘yes’ (two letters, lower-case.) if you want to allow normal user to start or stop DSL connection (default yes): //用户控制,是否允许普通用户连接或断开ADSL,选 yes
……
The firewall choices are: //输入0-无防火墙;1-标准防火墙;2-IP伪装。这里我们选2
……
Do you want to start this connection at boot time?
Please enter no or yes (defau lt no): //是否自动连接,输入no,选择不自动连接
……
Accept these settings and adjust configuration files (y/n)?y (表示确认以上设置)
三 设置第二个ADSL连接
运行adsl-setup,当提示“Please enter the device if you want to configure the present DSL config (default ppp0) or enter ‘n’ if you want to create a new one:”时,键入“n”,屏幕提示同上;
在LOGIN NAME 处,键入第二个ADSL账号。
在INTERFACE处,键入eth2。
在PASSWORD处,键入第二个ADSL账号的密码。
其他设置与第一个ADSL相同。
修改第二个ADSL线路的配置文件:/etc/sysconfig/network-sc ripts/ifcfg-ppp1。
将PIDFILE=/var/run/pppoe -adsl.pid 改成PIDFILE=/var/run/pppoe-adsl1.pid。
通过修改此文件使第二个ADSL连接的pid文件与第一条ADSL连接不同,以免冲突。
这样,两个ADSL连接的设置就到此完成。执行ifup ppp0和ifup ppp1,将两个ADSL连接都拨上去。
四 配置路由
1.执行ifconfig ppp0,屏幕将有下列提示:
ppp0 Link encap:Point-to-Point Protocol
inet addr:61.186.106.65 P-t-P:61.186.104.1 Mask:255.255. 255.255 .......
记住P-t-P后面的那个IP地址:61.168.104.1,这个在后面要用到。
2.执行以下命令(配置两路路由路径):
ip route replace default equ alize
nexthop dev ppp0 via 61.186.104.1 weight 1 onlink
nexthop dev ppp1 via 61.186.104.1 weight 1 onlink
该命令是配置两路路由,其中的61.186.104.1 就是前面P-t-P(点到点)后面显示的那个IP地址。
3.执行 ip route flush cache
该命令是刷新路由缓存,如不进行此步,有可能上网只能用到单个ADSL连接。
然后启用IP伪装:iptables -t nat -A POSTROUTING -j MASQ UERADE。启用IP转发则执行命令:echo 1 > /proc/sys/net/ipv4/ip_forward。
经过上述配置后,其他所有需要上网的机器只要将172.16.20.40这个内网IP设为自己的默认网关,在DNS地址处将本地ISP的DNS IP地址设置好就可以正常上网了。
在服务器上执行几次ifcon fig,可以看到ppp0和ppp1的RX bytes 和 TX bytes都在变,这说明两个ADSL连接都已用上了。
以后每次打开服务器后,键入下列命令就可正常上网:
ifup ppp0
ifup ppp1
ip route replace default equa lize
nexthop dev ppp0 via 61.186.104.1 weight 1 onlink
nexthop dev ppp1 via 61.186.104.1 weight 1 onlink
ip route flush cache
iptables -t nat -A POSTROUTING -j MASQUERA DE
echo 1 > /proc/sys/net/ipv4/ip_forward
如想每次开机都自动上网,可将以上命令加到/etc/rc.d/rc.lo cal 文件中。我们用这种方式上网已有几个月,两个ADSL连接的带宽得到了平衡使用,到目前为止还没有发现任何问题。该方法亦可用于采用ADSL捆绑上网的网吧,最大的好处是系统非常稳定,对一般网络攻击有一定防范能力。