DNAT方面的配置可以参考命令:
iptables -t nat -I PREROUTING -d 172.31.66.212 -p tcp --dport 65530 -j DNAT --to 172.31.129.86:8440
这个是实现把有公网的服务器的65530端口映射到无公网的8440端口上。
iptables -t nat -I POSTROUTING -p tcp --dport 8440 -j MASQUERADE
这个是为了,转发到后面服务器的8440端口的返回数据包可以再通过有公网的服务器出去
路由命令查询广播地址:
route -n
这个172.31.128.0就是这个无公网服务器的广播地址
SNAT方面的配置可以参考命令:
iptables -t nat -I POSTROUTING -s 172.31.128.0/20 -j SNAT --to-source 172.31.66.212
dnat配置在有公网的服务器上即可,snat配置一次就好了; 172.31.128.0/20 这个是无公网服务器的交换机网段,172.31.66.212是有EIP服务器的内网ip
iptables-save > /etc/sysconfig/iptables
这个是将规则链永久保存
下面是一些简单的操作案例:
问题:1个阿里云弹性公网ip,2台同内网段云服务器,公网ip绑定在其中一台上,使其内网服务器能使用外网
阿里云VPC配置SNAT
1.将EIP绑定到某台ECS上,然后测试通过eip登陆ssh,测试成功
2.开启ip转发功能,并使之生效
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
或者:
echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
生效路由转发:
sysctl –p
3.iptables添加SNAT转换
172.31.129.86是内网网段,172.31.66.212是绑定了EIP的这台机器的内网IP
iptables -t nat -I POSTROUTING -s 172.31.129.86/20 -j SNAT --to-source 172.31.66.212
4.添加VPC路由
5.测试是否可以访问了
这个是没绑公网ip的那台服务器
问题二:现在没公网服务器已经运行了服务,但是外网访问不了内网服务器上的服务,这边需要对内网服务器进行端口映射
阿里云VPC配置DNAT
1. 将EIP绑定到某台ECS上,然后测试通过eip登陆ssh,测试成功
2.开启ip转发功能,并使之生效
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
或者:
echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
生效路由转发:
sysctl –p
3.iptables 添加DNAT转换
47.52.229.239 是我这边的弹性公网ip
我将绑定了公网IP服务器 的8335 端口都映射到了内网IP的80端口:
iptables -t nat -A PREROUTING -d 47.52.229.239 -p tcp --dport 8335 -j DNAT --to-destination 172.31.129.86:80
4.测试是否可以访问了
win + R 打开windows 的运行界面输入cmd进入管理员界面
tnlnet 47.52.229.239 8335
会显示连接成功
下面的命令可以进行查看你配置的规则链:
iptables -t nat -L -n