- 论坛徽章:
- 0
|
回复 1楼 cefs99 的帖子
我现在能考虑到的一个可能问题就是.如果给予2个ISP的网关同样的权重,也就是理论上的完全负载平衡(基于round robin随机算法),那么从互联网进来访问WWW服务器的路由就会出现问题.
譬如说table 10 和table 20,这2个路由表,分别用不同的ISP 网关.
如果ISP1给了一个公网IP 211.157.99.11,用eth1, 我做了SNAT/DNAT使得所有访问这个IP 80端口的数据都转发到内部WWW服务器10.134.1.100/eth0上.
如果ISP2给了一个公网IP 211.170.43.88/eth2, 我做了SNAT/DNAT使得所有访问这个IP 80端口的数据同样都转发到内部WWW服务器10.134.1.100/eth0上.
现在有一个来自72.140.176.65的包访问211.157.99.11. 理论上会出现这种情况:
这个包的原始源地址和目标地址为
packet source address Interface packet destination address
72.140.176.65 来自 eth1 211.157.99.11
经过DNAT转换,这个包的源地址和目标地址变为
packet source address packet destination address
72.140.176.65 10.134.1.100
根据内部路由,所有到10.134.1.0/24的包走eth0.正常到达内部WWW服务器
那么在回来的时候有可能会这样:
内部WWW服务器的应答包的原始源地址和目标地址为
packet source address Interface packet destination address
10.134.1.100 来自 eth0 72.140.176.65
这时查询内部路由表如何处理到72.140.176.65的包. 因为是基于round robin的随机负载均衡算法, 2个ISP的路由表应该是等价的.就可能会说走ISP2的网关,eth2!
经过SNAT转换,在到达eth2之前,这个包的源地址和目标地址变为
packet source address Interface packet destination address
211.170.43.88 从 eth2 出去 72.140.176.65
这就乱套了. 72.140.176.65根本没有向ISP2 的211.170.43.88这个地址发送过包!
所以我的初步结论是,如故连接2个ISP的网关同时为内网用户提供浏览网站以及发布内部WWW等服务器供外部用户访问, 只能指定唯一的路由. 或者ISP1,或者ISP2.不能同时用. |
|