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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

上篇博客写了如何在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 eth1 -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.  
  14.         #vnc port 590x 
  15.         #port 590x is mapped to 20001+ix10+x 
  16.         let "j=$i * 10" 
  17.         let "mapport=$j + 20001" 
  18.         /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:5901 
  19.         echo 10.109.247.169:$mapport mapped to 192.168.1.$i:5901 
  20.         let "mapport=$mapport + 1" 
  21.         /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:5902 
  22.         echo 10.109.247.169:$mapport mapped to 192.168.1.$i:5902 
  23.     
  24.  
  25.         #remote desktop port 3389 
  26.         #port 3389 is mapped to 30000+i 
  27.         let "mapport=$i + 30000" 
  28.         /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:3389 
  29.         echo 10.109.247.169:$mapport mapped to 192.168.1.$i:3389 
  30.  
  31.         #http port 80 
  32.         #port 80 is mapped to 40000+i 
  33.         let "mapport=$i + 40000" 
  34.         /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -d 10.109.247.169 --dport $mapport -j DNAT --to-destination 192.168.1.$i:3389 
  35.         echo 10.109.247.169:$mapport mapped to 192.168.1.$i:80 
  36.         fi 
  37. done 

 

 本文转自nxlhero 51CTO博客,原文链接:http://blog.51cto.com/nxlhero/1082918,如需转载请自行联系原作者

相关文章
|
17天前
|
网络协议
iptables配置tcp端口转发
iptables配置tcp端口转发
25 1
|
2月前
|
前端开发 Java 数据库连接
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
33 0
|
4月前
|
数据安全/隐私保护 时序数据库
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
129 0
|
8月前
|
Linux 应用服务中间件 虚拟化
Linux系列——VMware虚拟机配置端口转发(端口映射),实现远程访问
Linux系列——VMware虚拟机配置端口转发(端口映射),实现远程访问
|
6月前
|
Linux
centos使用iptables实现nat端口转发
centos使用iptables实现nat端口转发
243 4
|
10天前
|
Linux 虚拟化
VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网
https://blog.csdn.net/2302_78534730/article/details/132825156?spm=1001.2014.3001.5502
131 0
|
29天前
|
前端开发 应用服务中间件 nginx
nginx中配置不输入端口(指定地址)访问项目的方法
nginx中配置不输入端口(指定地址)访问项目的方法
23 0
|
2月前
|
弹性计算 Linux 网络安全
三步搭建VPC专有网络NAT网关,配置SNAT和DNAT规则(补充版)
申明:该文档参考于用户 “帅宝宝”的文档进行的优化,新增永久生效的方式
284 1
|
8月前
|
Kubernetes 应用服务中间件 调度
k8s--pod 基本配置、镜像拉取策略、启动命令、端口设置、资源配额
k8s--pod 基本配置、镜像拉取策略、启动命令、端口设置、资源配额
k8s--pod 基本配置、镜像拉取策略、启动命令、端口设置、资源配额
|
4月前
|
Java 关系型数据库 MySQL
【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口
【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口
64 0