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

Unix/Linux
linux查看内存的大小
在linux下写的代码,用的是utf-8,结果拿到XP下运行的时候,所有的中文都成乱码
linux su和sudo命令的区别
linux cron 下的定时执行工具使用技巧
linux 查找进程及终止进程操作的相关命令
redhat linux 安装 gcc编译器
Linux Mplayer播放各种格式的电影
一起回顾一下linux常用命令
Linux 网站项目发布要做哪些配置
linux SSH配合SecureCRT的密匙完美使用方法
GD 编译出错解决方法
Facebook Open Platform编译FAQ
Linux 系统硬盘 优化
linux 挂载详解
linux crontab定时命令
Linux 系统中确保访问三级域名畅通的方法
Linux 特权帐号VS普通帐号
确保Linux系统安全的前提条件 漏洞防护
Linux 监视系统资源使用率
Red Hat Linux上使用BIND建立DNS服务器

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 63 ::
收藏到网摘: 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连接到互联网上。