全部博文(68)
分类: 系统运维
2005-10-25 15:22:53
为了解决这种问题, 追求网络稳定的用户必须在自家的网关上扯上两条ISP专线, 一个网通一个电信.
不过这仅仅是解决了物理问题, 逻辑的问题还有待解决. 这个逻辑问题就是如何使两条ISP专线负载均衡.
为了很好地解决这个问题, 我们最好有电信和网通所拥有的IP地址段(偶也很想知道这些具体的IP地址段;D).
假设网通的地址段是200.0.0.0/8, 电信的地址段是100.0.0.0/8.(当然实际情况比这个要复杂得多, 这里我们只简单地假设一回)
连网通ISP的网卡是: eth1,网关是200.0.0.1; 连电信ISP的网卡是eth2,网关是100.0.0.1;连内部网的网卡是: eth0(其实在这篇小文里这里咱们用不到). 好了, 下面看看咱们地路由配置(LINUX网关):
route add -net 200.0.0.0 netmask 255.0.0.0 dev eth1 #让所有网通的地址走网通的线路
route add -net 100.0.0.0 netmask 255.0.0.0 dev eth2 #让所有电信的地址走电信的线路
route add default gw 200.0.0.1
route add default gw 100.0.0.1
OK, 到配置看起来挺简单吧, 不过在实际应用中网通和电信的地址勿庸置疑是有好多段的, 在某个国内品牌的网吧专用路由器里好象有内置的这些路由地址段. 最好是做个脚本文件加载这些路由. 一是容易记, 二是在开机的时侯可以让机器自动添加路由.
在Linux上, 两条或多条默认路由默认情况下是按地址负载均衡的, 就是说如果目的地址匹配给定路由的话, 在走默认路的时候是按照一个地址走一条默认路由的. 比如我想访问两个网站, 一个是1.1.1.1 一个是2.2.2.2, 那么如果去1.1.1.1的时候是通过200.0.0.1的话, 在去2.2.2.2的时候是通过100.0.0.1这个网关的. 我想在linux下应该可以修改一下什么参数使数据按包分配的吧, 不过这样做貌似不太好.
同样, 在Cisco路由器上也可以添加两条默认路由来实现按地址的负载均衡, 也可以实现按包的负载均衡. 但是如果两个不同的ISP, 按包的负载均衡会出现问题. 如果两个ISP是同一家, 那么按包负载均衡是最好的方法. 所以在国内的这种情况, 一定要按地址负载均衡.
同样的配置如果出现在FreeBSD网关上, 两条默认路由只能达到相互热备份的目的, 并不能实现负载均衡.
如果你有邮件服务或是WEB服务的话, 可以通过以下方法来达到一个ISP的线断了, 外面对服务的Request可以通过另一个ISP的线路.
Email 服务: 添加MX记录
Web 服务: 添加HOST记录
至于怎么添加MX和HOST记录, google一把就可以啦......:D
注: 本小文经过实验验证.