摘要:网吧双线接入(ISP多链路复用) 多重ISP链路复用 Multipath Routing
多重ISP链路复用 Multipath Routing
hxgang
目的: 现在很多中小型网络有两条或者多条相同的不同的ISP的网络出口线路 而如何将这两条线路合理的利用起来 是很多人非常关心的,此文用通俗易懂的方法的讲解了如何初步达到此目的 本方案不需要大量的投资 也不需要改变现有网络结构 并且可扩展性好!
环境:用基于LINUX路由功能 由2.2内核开始,Linux便开始支持高级路由技术,提供策略路由,流量控制等多项高级路由功能,配合Netfilter包过滤软件,可实现许多专业路由器和防火墙才能实现的高级功能。 本方案采用RedHat 9.0 系统基础 系统自带 IPTABLES 和 IPROUTER2 软件,
申明:本方案为了表达一个通俗易懂的称述 很多地方采用大白话方式进行说明,这对技术来说是不严谨的态度,并且在文中可能出现很多错误,欢迎指正 希望有更多人能使用此方案而达到自己的目的 可以用在论坛上联系 或者Mail to :hxgang@hotmail.com
约定:对于具体#作,都是基于Shell下的,就是所谓终端,控制台等,我将用横线阁开,可以看成实际的#作,后面的针对解释 均采用汉字通俗解释 但不能作为实际#作!
一、 硬件选择和实施:
1。本人在实际#作中选择了 C3 1G CPU INTEL 815ET芯片组主板(集成显卡) 128M SDRAM 三张网卡 均是RTL 8139 10/100M 自适应网卡 3G大小心的一块老硬盘 RedHat 9.0系统盘 光驱 键盘 鼠标 显示器 为安装使用 过后拆掉,在各个实际环境里 选择方案不一定要相同 ,但是本人建议 CPU 不低于233M 内存不低于64M 网卡尽量不用8029等10M 设备,如果有条件可以选择不同的主流网卡 其他 主是要求稳定 !
2。安装系统 根据硬盘大小以及个人情况 可任意方式安装
提示以及建议: A : 如果分区不是很清楚 可以用 光盘上的PQ 将硬盘分区 第一次接触的,采用 将6G以下的空间分成EXT3格式的分区 然后接着一256M左右的SWP交换分区 B。 网卡先别一次性装上, 可先将要用于内网的网卡,先插上,以后系统安装成功以后再依次插上其他网卡 以免混淆!在安装的时候 可以完全默认的方式 并且 尽量采用 英文安装 ,不装XWINDOWS 也就是可以一路 NEXT下去!!!
3。建立用户 除了系统自带的 root 超级管理员帐户以外 请建立1-2个普通用户!
更具体的安装#作 请搜寻网络上其他的文章!或者联系我,有非常详细的称述!
二、 单机的配置
这一步很重要 包括设置好网卡 如果是ADSL的PPOE的拨号方式 还必须设置ADSL上网 并且弄清楚 在硬件上的每一块网卡和系统里面的网卡的对应关系!
参考模型
eth0---------接内网
RD9.0 LINUX eth1---------接外网线路 1
eth2---------接外网线路 2
注意 : 在LINUX中表示的以态网卡的方式是ethX X代表的是第几个设备,对于排序 请根据系统的自设定 然后人为找到对应的网卡,可以采用每张网卡接一条线进行 Ping 的方式确定!
在上面这种情况下 将 eth0 (内网)设置为
IP: 192.168.0.1
Netmask:255.255.255.0
Gateway网关:无
eth1 (线路一) 假如
IP : 218.6.2.211
Netmask:255.255.255.0
Gateway网关:218.6.2.1
eth2(线路二)假如
IP :10.0.0.2
Netmask:255.255.255.0
Gateway: 10.0.0.1
实际#作方式:
-----------------------------------------------------------
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ifconfig eth1 218.6.2.1 netmask 255.255.255.0
ifconfig eth2 10.0.0.1 netmask 255.255.255.0
-----------------------------------------------------------
格式为: ifconfig 设备名 IP地址 netmask 子网掩码
直接输入 ifconfig 不带任何参数的话 系统将显示当前网络接口信息
至于更详细的#作方法请参考其他资料!
这样 就初步设置好了 各个网络接口的 IP地址等!
但是 这样的设置 可能在重起系统以后就会失效
那么最直接的方法是 修改 文件!(在LINUX下 很多地方可以直接修改文件的方式实现,特别是没有X的时候,显得特别重要,也最有效!)
---------------------------------------------------
vim /etc/sysconfig/network-scripts/ifcfg-eth0
---------------------------------------------------
进入VIM编辑界面 按 “i" 进入编辑模式
大致修改为以下内容 请注意 当一块网卡被系统正常检测 只需要改变“=”后面的内容:
DEVICE = eth0 ---------》设备名,一般系统自动赋予
ONBOOT = yes ---------》是否开机激活 默认 “yes”
BROADCAST =192.168.0.255 ---------》广播地址
NETWORK = 192.168.0.0 ---------》网络地址
NETMASK = 255.255.255.0 ---------》子网掩码
IPADDR = 192.168.0.1 ---------》IP地址
提示 BROADCAST =192.168.0.255 和NETWORK = 192.168.0.0 可以根据IP地址来 当掩码是 24位 (255.255.255.0) 时 BROADCAST是IP地址最后一位变255
NETWORK是 IP地址最后一位变0
修改成功以后 按 "ESC"键 然后 Shift+; 号键,出现“:”提示符 在 “:”提示符下面 输入 “w" 并回车 就将设置保存了,然后输入 “q”退出编辑界面
注意:如果你的eth0也是 用于内网 那么请将 GATEWAAY= 项删除 其他两张网卡,则必须要!!!
如果你装了X 那么可以在图形界面下,才用更合适的工具软件进行修改!
--------------------------------------------------
vim /etc/sysconfig/network-scripts/ifcfg-eth1
-------------------------------------------------
上面命令进入设置 eth1
------------------------------------------------
vim /etc/sysconfig/network-scripts/ifcfg-eth2
------------------------------------------------
上面命令进入设置 eth2
设置 DNS
一般情况下 如果当系统检测到网卡并且要求你设置的时候 你就可以将DNS 加入 但是如果你想修改的话,最直接的方法为编辑DNS文件
---------------------------------
vim /etc/resolv.conf
---------------------------------
加入DNS IP地址
格式为
nameserver 202.98.96.68
nameserver 61.139.2.69
等 具体DNS IP即可
当以上设置都正常进行以后,,, 重起系统,
检测设置
--------------------------------------------
ping 192.168.0.1
ping 10.0.0.2
ping 218.6.2.211
---------------------------------------------
检测正确性 (用Ctrl+C结束)
然后 ,将外网卡正确接入网络 至少你确定能上网!不管他是用的哪条线路!!!!!!!!
如果一切正常 那么就表示系统的配置基本正确。
三、多路复用
接下来, 我们 就可以用系统本身的功能以及软件进行路由规则设置
前面已经提到 2.2以上内核已经带有很多的高级功能 而RedHat 9.0采用采用的是2.4.20的内核版本 是公认的比较稳定的,当然 你可以选择重新编译升级内核的方式 升级到2.6.X 版本的内核,体验更新的功能 ,但是这不是本文所要考虑的内容。
在我们将多路复用之前 最好是先打上两个补丁
A 因为路由缓存的机制,所以在某一时间断 连接到某一点上的线路是不变的,而必须等到失效才能重新选择, julian 的补丁解决了这个问题,对于RedHat9.0的系统内核 需要打这之PATCH 下载地址为:
http://www.ssi.bg/~ja/patch-2.4.20-ja1.diff
B.equailze 这之PATCH 解决了在系统内核中equailze参数不生效的问题
http://www.teatime.com.tw/~tommy/linux/equalize.patch
将这两个PATCH 下载到本地 比如 直接放在 /root目录下那么这样做,将PATCH补进内核:
--------------------------------------------------------
/usr/src/linux-2.4.20-8/patch -p1 ---------------------------------------------------------
-------------------------------------------------
/usr/src/linux-2.4.20-8/patch -p1 --------------------------------------------------
执行完以后 我们就基本上需要的软件都准备齐全了
路由规则:
首先 我们使用 ip route show 命令来显示当前默然的路由规则:
------------------------------------------------
ip route show
-------------------------------------------------
可以看见 如:
0 lookup local
32766 main
32767 default
这是原有系统的路由规则!
那么 现在 我们使用自己的规则替代或者说将自己的规则的优先级提高于原有规则,
接着 我们创建路由表,
注意 创建的路由表的根据是上面的网络接口 ,所以请根据我上列举的具体设置来理解
新建命名为 10 和 20的规则,分别针对两个外网线路
规则“10”
----------------------------------------------------------
ip rule add pref 10 from 218.6.2.211 table 10
ip rou