请教关于SNAT的问题

请教诸位:
  在LVS实际应用中,跨网段的的负载均衡,只能用LVS/TUN模式,但由于RS的
类型太多,不能保证都支持隧道设备,而NAT和DR模式都是不能垮网段的.
  在F5/Netscaler这种硬件负载均衡设备中,用的比较多的是SNAT模式,
这种模式下,客户端的请求先发到负载均衡设备上的VIP,然后负载均衡设备做SNAT后
,转发到RS上,RS看到的都是来自负载均衡设备上的IP,所以在RS自然会将结果返回
给负载均衡设备,再由负载均衡设备做NAT转换后,发到客户端,所以这种模式也可以跨网
段。
  我想用iptables来实现SNAT,将客户端请求的IP全部转换为VIP后,再通过LVS来负载均
衡,这样也可以使LVS/NAT跨越网段,但用IPTABLES设置好规则后,从/proc/net/ip_vs_conn
看,source ip还是实际客户端的,并未被修改为VIP。

不太了解iptables和ipvs的关系,对于包过滤,那个在前那个在后?iptables中的SNAT只
能在POSTROUTING和OUTPUT上做,感觉这个阶段已经是ipvs处理后的了吧?

Forums:

当初设计VS/NAT时,仅使用DNAT方式,设计比较简单,不会有端口分配和端口数目的限制。使用SNAT时,会有端口数目的限制,最多不超过65536个。

我没有做过IPVS和iptables SNAT共同工作的试验。在Linux kernel 2.4中,IPVS是直接调用ip_send将报文送出来,不知道iptables SNAT能否捕获到?不管这样,这样搭配会比较低效,应该报文的checksum计算会执行两次。

randomness