如何实现双线路连接

由 cszlf 在 05-15-2004 16:57 发表:

如何实现双线路连接

本人安装了中国电信的ADSL宽带和中国网通的宽带,我想在一台LINUX服务器(Redhat9)上实现这个二线路的同时使用,希望实现如下功能:

1、对于内网,可以自动选择任何一个路由,即能实现负载平衡。

2、对于外网访问进来,则通过不同的域名对应这二条不同线路的IP来进入。

我想,第二个功能可能比较好实现,但第一个功能如何实现,请大虾们指导。

小弟先谢了。!!!


由 玄武 在 05-15-2004 23:32 发表:


二线路实现负载平衡???

好象不可能实现吧。。

如果真的可以实现我也想知道。。。

顶!!!!!!!!!!!!!!!!!

会的朋友请把资料发到我的邮箱。。感谢!!!!!!!!!!!

[email protected]


诚实为信,踏实为本,朴实无华


由 leirenyuan 在 05-16-2004 17:54 发表:


我以前见到某些路由器的广告上说他们的产品可以实现这种平衡流量的功能,但是linux没有听说能实现.不过既然路由器可以,那么......猜想.


由 simonzll 在 05-17-2004 10:20 发表:


一般就是路由的优先级选择而已,如果要平衡流量还是看专业路由


由 cszlf 在 05-17-2004 14:39 发表:


愿闻其详


由 leirenyuan 在 05-17-2004 16:41 发表:


作者:白金 网名:platinum 超超白金(白金论坛)

欢迎转载,转载请保留上述信息

=========================================================================== 如果你有两个ISP,那么,通过下面的方法,可以将两个ISP绑定,并做负载均衡,可以实现带宽加倍。

也就是说,假如我们有两条ADSL包月线路,可以使带宽变为1M!

做这个工作,涉及到两个工作

[color=red:e5adcaf9d6]1、流量分割[/color:e5adcaf9d6]

首先是如何保证:回应来自某一个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 $IP1 table T1

ip route add default via $P1 table T1

ip route add $P2_NET dev $IF2 src $IP2 table T2

ip route add default via $P2 table T2

没什么大不了的,不过是建立了通向该网关的一条路由,并使之成为默认网关,分别负责一个单独的上行流,并且为这两个ISP都作这样的配置。

要指出的是,那条网络路由是必要条件,因为它能够让我们找到那个子网内的主机,也包括上述那台网关。

下一步,我们设置“main”路由表。把包通过网卡直接路由到与网卡相连的局域网上不失为一个好办法。要注意“src” 参数,他们能够保证选择正确的出口IP地址。

ip route add $P1_NET dev $IF1 src $IP1

ip route add $P2_NET dev $IF2 src $IP2

然后,设置你的缺省路由:

ip route add default via $P1

接着,设置路由规则。这实际上在选择用什么路由表进行路由。你需要确认当你从一个给定接口路由出数据包时,是否已经有了相应的源地址:你需要保证的就是如果你已经有了相应的源地址,就应该把数据包从相应的网卡路由出去:

ip rule add from $IP1 table T1

ip rule add from $IP2 table T2

以上命令保证了所有的回应数据都会从他们来的那块网卡原路返回。 现在,完成了非常基本的配置。这将对于所有运行在路由器上所有的进程起作用,实现IP伪装以后,对本地局域网也将起作用。如果不进行伪装,那么你要么拥有两个ISP的地址空间,要么你想对两个ISP中的一个进行伪装。无论哪种情况,你都要添加规则,基于发包的主机在局域网内的IP地址,选择从哪个ISP路由出去。

[color=red:e5adcaf9d6]2、负载均衡[/color:e5adcaf9d6]

第二个问题是如何对于通过两个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)


由 leirenyuan 在 05-17-2004 16:42 发表:


呵呵

找到了

不过我 不是很明白


由 ggw 在 05-17-2004 23:52 发表:


> quote: > > * * * > > 令第一块网卡(上图的if1)的名字叫 $IF1,而第二块网卡叫做 $IF2

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus