当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 让多台电脑上网,多重上连ISP的路由设置

Unix/Linux
mysql+httpd+gd+php+zend
automake 小回顾
unix黑客精神的最好诠释
www
sun t3存储的设置
RPM简明中文手册
Linux爱好者入门教程 序章 (持续更新)
第一章 Linux基础知识 (飘心)
linux下进程与线程
浅谈如何学习linux
第二章 Linux安装
硬件安装指南
Windows 2000 的桌面不見了的解決方法
部分的ADSL路由器默认帐号密码
如何设定安全log服务器呢?
iptables 规则速查
网友学习 Linux 的七点忠告
sniffer的含义及原理
Linux编程白皮书 第二章 内存管理
Linux编程白皮书 第二章 内存管理 2.1.1 请求调页 --2.1.5 访问控制

Unix/Linux 中的 让多台电脑上网,多重上连ISP的路由设置


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 65 ::
收藏到网摘: n/a


  如果你有两个ISP,那么,通过下面的方法,可以将两个ISP绑定,并做负载均衡,可以实现带宽加倍。
  也就是说,假如我们有两条ADSL包月线路,可以使带宽变为1M!
  
  做这个工作,涉及到两个工作
  
  1、流量分割
  首先是如何保证:回应来自某一个ISP的数据包时,仍然使用相同的ISP。 让我们先定义一些符号。
  令第一块网卡(上图的if1)的名字叫 $IF1,而第二块网卡叫做 $IF2 。
  然后设置 $IF1 的IP地址为 $IP1,$IF2 的IP地址为 $IP2。
  并且,令ISP1 的网关地址为 $P1,ISP2 的网关地址为 $P2。
  最后,令$P1的网络地址为 $P1_NET ,令$P2的网络地址为 $P2_NET。
  额外创建两个路由表, T1 和 T2。 加入到 /etc/iproute2/rt_tables 中。
  然后如下设置两个路由表中的路由:
  ip route add $P1_NET dev $IF1 src /DownloadFiles\a\2003-08-31\$IP1 table T1
  ip route add default via $P1 table T1
  ip route add $P2_NET dev $IF2 src /DownloadFiles\a\2003-08-31\$IP2 table T2
  ip route add default via $P2 table T2
  没什么大不了的,不过是建立了通向该网关的一条路由,并使之成为默认网关,分别负责一个单独的上行流,并且为这两个ISP都作这样的配置。
  
  要指出的是,那条网络路由是必要条件,因为它能够让我们找到那个子网内的主机,也包括上述那台网关。
  下一步,我们设置“main”路由表。把包通过网卡直接路由到与网卡相连的局域网上不失为一个好办法。要注意“src” 参数,他们能够保证选择正确的出口IP地址。

  
  ip route add $P1_NET dev $IF1 src /DownloadFiles\a\2003-08-31\$IP1(br>  ip route add $P2_NET dev $IF2 src /DownloadFiles\a\2003-08-31\$IP2(br>  
  然后,设置你的缺省路由:
  ip route add default via $P1
  
  接着,设置路由规则。这实际上在选择用什么路由表进行路由。你需要确认当你从一个给定接口路由出数据包时,是否已经有了相应的源地址:你需要保证的就是如果你已经有了相应的源地址,就应该把数据包从相应的网卡路由出去:
  ip rule add from /DownloadFiles\a\2003-08-31\$IP1 table T1
  ip rule add from /DownloadFiles\a\2003-08-31\$IP2 table T2
  
  以上命令保证了所有的回应数据都会从他们来的那块网卡原路返回。 现在,完成了非常基本的配置。这将对于所有运行在路由器上所有的进程起作用,实现IP伪装以后,对本地局域网也将起作用。如果不进行伪装,那么你要么拥有两个ISP的地址空间,要么你想对两个ISP中的一个进行伪装。无论哪种情况,你都要添加规则,基于发包的主机在局域网内的IP地址,选择从哪个ISP路由出去。
  
  2、负载均衡
  第二个问题是如何对于通过两个ISP流出的数据进行负载均衡。
  如果你已经成功地实现了流量分割,这件事并不难。
  与选择两个ISP中的一个作为缺省路由不同,这次是设置缺省路由为多路路由。
  在缺省内核中,这会均衡两个ISP的路由。
  
  象下面这样做(基于前面的流量分割实验):
  ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
  这样就可以均衡两个ISP的路由。通过调整“weight”参数我们可以指定其中一个ISP的优先权高于另一个。
  
  应该指出,由于均衡是基于路由进行的,而路由是经过缓冲的,所以这样的均衡并不是100%精确。也就是说,对于一个经常访问的站点,总是会使用同一个ISP。
  进而,如果你对此不满意,你可能需要参考以下Julian Anastasov的内核补丁:
  http://www.ssi.bg/~ja/
  Julian的路由补丁会弥补上述缺陷。(好像要重新编译内核,我没敢PATCH)
  
  上图是很常见的配置,同一个局域网(甚至是同一台计算机)通过两个ISP连接到互联网上。