千家信息网

利用脚本自动配置iptables的NAT端口映射

发表于:2024-10-04 作者:千家信息网编辑
千家信息网最后更新 2024年10月04日,上篇博客写了如何在VMware ESX和XenServer环境下配置NAT,解决了内网虚拟机访问外网的问题,还没解决外网访问内网的问题。每增加一台虚拟机就增加几条映射规则太麻烦,实现把端口都映射好了,
千家信息网最后更新 2024年10月04日利用脚本自动配置iptables的NAT端口映射

上篇博客写了如何在VMware ESX和XenServer环境下配置NAT,解决了内网虚拟机访问外网的问题,还没解决外网访问内网的问题。

每增加一台虚拟机就增加几条映射规则太麻烦,实现把端口都映射好了,就不需要每次添加了。

端口映射规则如下:

num是内网IP地址的最后一个数

ssh端口22映射到 10000+num

比如一个内网地址为192.168.1.5的虚拟机,它的22号端口映射到主机的10005端口。

vnc的590x端口(只提供两个端口)

5901端口映射到 20000+内网地址最后一个数x10+1

5902端口映射到 20000+内网地址最后一个数x10+2

比如192.168.1.20的1号VNC映射到主机的20000+20x10+1=20201

192.168.1.200的5号端口映射到主机的20000+200x10+5=22005

192.168.1.201的2号端口映射到主机的20000+201x10+5=22012

windows远程桌面的3389端口映射到30000+num

http的80端口映射到40000+num

利用脚本完成配置:

  1. #!/bin/bash
  2. #remap port
  3. # i is the last num of the inner address
  4. for i in $(seq 50)
  5. do
  6. if [ $i -ne 1 ]
  7. then
  8. #ssh port 22
  9. #port 22 is mapped to 10000+i
  10. let "mapport=$i + 10000"
  11. /sbin/iptables -t nat -A PREROUTING -i eth2 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:21
  12. echo 10.109.247.169:$mapport mapped to 192.168.1.$i:22
  13. #vnc port 590x
  14. #port 590x is mapped to 20001+ix10+x
  15. let "j=$i * 10"
  16. let "mapport=$j + 20001"
  17. /sbin/iptables -t nat -A PREROUTING -i eth2 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:5901
  18. echo 10.109.247.169:$mapport mapped to 192.168.1.$i:5901
  19. let "mapport=$mapport + 1"
  20. /sbin/iptables -t nat -A PREROUTING -i eth2 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:5902
  21. echo 10.109.247.169:$mapport mapped to 192.168.1.$i:5902
  22. #remote desktop port 3389
  23. #port 3389 is mapped to 30000+i
  24. let "mapport=$i + 30000"
  25. /sbin/iptables -t nat -A PREROUTING -i eth2 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:3389
  26. echo 10.109.247.169:$mapport mapped to 192.168.1.$i:3389
  27. #http port 80
  28. #port 80 is mapped to 40000+i
  29. let "mapport=$i + 40000"
  30. /sbin/iptables -t nat -A PREROUTING -i eth2 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:3389
  31. echo 10.109.247.169:$mapport mapped to 192.168.1.$i:80
  32. fi
  33. done
0