由于生产环境中使用的lvs服务器使用了full nat模式,导致按照作者wangbin博客中的示例跑不通。
所以,在测试过程中加了一层中间层,通过iptables nat作转换。
一 测试框架:
二 环境部署:
1客户端Client : lvsmgr1v.*
IP:10.16.77.43
2在线服务器:w-lvsc2.sys.*
IP:42.236..
VIP:10.172.95.125:8360
RIP:218.31.117.*:8361
启动tcpcopy进程:
TCPCPPY:./tcpcopy -x 10.172.95.125:8360-10.138.93.243:8360 -s 10.138.93.244 -d -F tcp
3测试服务器: dsync1.safe.*t(用于中转真正的测试服务器为其后端的lvs)
IP:10.138.93.243
设置路由,使得回复给client的数据包统一走辅助服务器
route add -host 10.16.77.43 gw 10.138.93.244
设置iptables nat转换,将发往该机器的消息发往lvs服务器
iptables -t nat -A PREROUTING -p tcp –dport 8360 -j DNAT –to 10.138.230.175
iptables -t nat -A POSTROUTING -p tcp –dport 8360 -j SNAT –to 10.138.93.243
iptables -t nat -A PREROUTING -p tcp –sport 8360 -j DNAT –to 10.16.77.43
iptables -t nat -A POSTROUTING -p tcp –sport 8360 -j SNAT –to 10.138.93.243
3.1后端lvs服务器:w-lvsc7.*
VIP:10.138.230.175 8360
RIP:10.138.109.74 8360 10.138.109.73 8360
4辅助服务器:dsync2.safe.*
IP:10.138.93.244
启动intercept进程,用于拦截从测试服务器返回的数据包,并将其转发给现在服务器的tcpcopy进程,用于建立完整的TCP通信。
./intercept -i eth0 -F tcp –d
关掉路由功能:
sysctl –w net.ipv4.ip_forward=0