利用Linux实现冗余因特网链路..doc
文本预览下载声明
利用Linux实现冗余因特网链路(1)
随着因特网服务提供商(ISP)开始提供高速因特网链路,用户比较容易把服务放在自己的家用计算机上。但如果ISP出现故障的话,该怎么办呢?一种显而易见的解决方法就是,使用另一个ISP的冗余因特网连接。为了帮助建立采用冗余因特网连接的Linux主机,本文讨论了下列基本方面:
1、配置主机,以便合理处理多个ISP的入站网络连接;
2、出站网络连接的负载平衡;
3、配置各种服务实现冗余;
4、使用ipchains或者iptables配置防火墙。
图1 采用冗余因特网连接的Linux主机
图1描述了本文提到的家庭计算机网络配置结构。图1中的Linux充当因特网和内部局域网不同连接之间的防火墙。在本例中,以太网接口eth1使用DSL,以太网接口eht2使用线缆调制解调器。Linux主机对跨两个ISP的出站网络连接实现负载平衡。两个ISP的负载平衡功能并不局限于高速网络链路。同样这种技术也可以用于两个拨号连接之间实现负载平衡。
图1中测试配置所用的主机是采用双处理器Intel Celeron 533MHz的计算机,运行的是Linux内核为2.2.18的Red Hat 6.2。还在Linux内核为 2.4.13的Red Hat 7.2环境中进行了测试。本文中的配置不需要双处理器系统,也不需要533MHz CPU。你可以重新使用配有32MB RAM的老式Pentium 100系统,充当防火墙。本文介绍的一些例子是Red Hat所特有的,但稍微改动一下,就适用于其它版本的Linux。
本文并不提供以太网网卡配置、Linux内核编译或DNS配置等方面的逐步讲解的详细内容。完成这些工作方面的信息在网上或者许多书里随处可得。/就是个相当好的信息资源。
内核配置
Linux内核2.2以及更高版本支持高级路由技术,为了提供Linux主机上的负载平衡及多条缺省路由,需要这项技术。为了支持多个因特网连接,编译时必须加入下面几个内核网络选项:
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
如果要使用新内核的高级路由特性,就必须安装iproute工具包(如今该工具包随Red Hat 7.1一同发行)。可以从ftp://ftp.inr.ac.ru/ip-routing/ 获得iproute工具包。
Iproute工具包为使用高级路由技术提供了两个特殊命令:ip和tc。有关ip命令的文档放在/linux2.2/docs/ip-cref/ip-cref.html。
IP源路由
利用Linux实现冗余因特网链路(3)
4、iptables-1.2.4#make install
5、/usr/src/linux# make oldconfig
对作为补丁添加到内核的CONFIG_IP_NF_MATCH选项回答m。
6、重新编译内核,并重新启动。
注意:这些指令是Linux内核2.4.13和iptables 1.2.4所特有的。预计在将来某个时候,这些试验性功能会成为主流内核版本的一部分。
防火墙脚本
防火墙脚本的基本流程是依次配置INPUT、FORWARD和OUTPUT链。iptables防火墙脚本还要配置PREROUTING和POSTROUTING链。每个脚本都有注释,描述哪些流量被接收或被拒绝。REJECT会忽略数据包,并且向发送者返回ICMP响应,通知发送者数据包已被丢弃。DENY(ipchains)或者DROP(iptables)索性丢弃数据包,不返回响应。这样有人探测某个端口时,系统如同不存在。本文中的防火墙脚本被编写成丢弃INPUT和FORWARD链上的数据包,以便不向远程系统返回响应。脚本将拒绝接受OUTPUT链上的数据包,这样如果是无效的出站数据包,本地系统就会收到响应。
要将防火墙脚本安装在Red Hat 7.1系统上,就要把脚本放在/etc/init.d/firewall中,然后执行下列命令:
# chkconfig firewall on
要为你的系统配置防火脚本,必须编辑下列两行,定义内部和外部接口:
INT_IFACE=eth0
EXT_IFACES=eth1 eth2
INPUT链为所允许的服务在防火墙上开了通道,其它服务一概拒绝。你要为特定系统编辑服务列表。利用ipchains防火墙脚本中的下列几行,就可以允许入站连接:
# ACCEPT TCP connections for various
# services f
显示全部