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