网络拓扑图
SNAT地址池的实验:
- Win7-2和Win7-3 ping Win7-1,对应的iptables命令,如下:
iptables -t nat -A POSTROUTING -s 192.168.136.0/24 -d 192.168.0.34 -j SNAT --to-source 8.8.8.8-8.8.8.200
- 实验结果:
- 通过抓包可以看出SNAT的地址池起作用了,将“源”替换成了8.8.8.165和8.8.8.200;
DNAT实验:
- Win7-1 ping 路由口ip:192.168.0.6 最终转换为 ping Win7-2,iptables 命令如下:
iptabls -t nat -A PREROUTING -s 192.168.0.34 -d 192.168.0.6 -j DNAT --to-destination 192.168.136.4
- 实验结果:
在Win7-1上的数据包:
在Win7-2上的数据包:
- 可以通过抓包看一看出目的IP:192.168.0.6被替换成IP:192.168.136.4;
DNAT端口映射实验1:
- 实验步骤:使用网络调试助手,在Win7-1*问Centos的192.168.0.6的8080端口,通过DNAT端口映射使其访问到Win7-2的8081端口;
iptables -t nat -A PREROUTING -s 192.168.0.34 -d 192.168.0.6 -p tcp --dport 8080 -j DNAT --to-destination 192.168.136.4:8081
- 实验结果:
在Win7-1上的数据包:
在Win7-2的数据包:
DNAT端口映射实验2:
- 实验步骤:使用网络调试助手,在Win7-1*问Centos的192.168.0.6的8080端口,通过DNAT随机映射到Win7-2或者Win7-3;
iptables命令如下:
iptables -t nat -A PREROUTING -s 192.168.0.34 -d 192.168.0.6 -p tcp --dport 8080 -j DNAT --to-destination 192.168.136.4-192.168.136.5
*实验结果:
在Win7-1的数据包如下:
在Win-7的数据包如下:
此处实验结果说明性不够强,不能就说明目的IP被随机分配
注意!
- 每一次进行实验前要清楚状态链接防止上一次实验对本次的影响,通过conntrack -D清除;
负载均衡实验
-
实验网络拓扑图如下:
-
目前已知通过iptables实现负载均衡存在三种配置方式
-
** 注意:**本实验是通过网络调试助手实现,即:在每台windows设备上放置一个网络调试助手,使用网络调试助手访问Centos的8080端口,最后转换为对内网服务器的访问;
1、只需要配置一条策略实现随机分配到内网两台服务器
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp --dport 8080 -m state --state NEW -j DNAT --to-destination 192.168.136.4-192.168.136.5:8081
- 实验结果:通过建立的连接显示,四条链接其中的三条是客户机与Win7-2建立的,一条是客户机与Win7-3建立的,由于客户机数量有限不能把握其随机分配情况,但是多次的实验表明大部分链接都在一台服务器上,但是当我在Win7-1上采用小兵发包后(不停的变换源IP发送大量的TCP链接请求),此时数据包基数较大,可以明显的看出负载均衡功能;
2、在Centos上配置多条策略,通过轮询算法的方式实现,即:每几个包的第几个到哪一个服务器;
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp --dport 8080 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.168.136.4:8081
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp --dport 8080 -m state --state NEW -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination 192.168.136.5:8081
3、在Centos上配置多条策略,通过随机概率算法的方式实现;
相关链接:
简书阐述负载均衡:https://www.jianshu.com/p/5d4e3566935a
外文文档:http://wiki.netkit.org/netkit-labs/netkit-labs_application-level/netkit-lab_loadbalancer-ws/netkit-lab_loadbalancer-ws.pdf
IPtables中SNAT、DNAT和MASQUERADE的含义:https://blog.csdn.net/jk110333/article/details/8229828
朱双印:http://www.zsythink.net/archives/1764
轮询算法需要注意的地方:https://blog.csdn.net/qq267197245/article/details/86447467
DNAT官方文档:https://www.frozentux.net/iptables-tutorial/chunkyhtml/x4033.html