云服务器无公网EIP访问外网,搭建(NAT网关)教程
简介:搭建NAT网关就是为了实现在相同VPC内,没有公网IP的ECS借助有公网的ECS访问外网,或者是外网通过端口映射访问到内网服务器。
SNAT:实现没有公网IP的ECS实例借助有公网的ECS访问外网,但是外网无法访问到内网IP;
DNAT:实现外网通过端口映射访问到内网服务器,但是不能实现内网ECS访问到外网。
一、搭建SNAT(在有公网EIP的服务器上操作)
[root@master-03 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@master-03 ~]# vim /etc/sysctl.conf
[root@master-03 ~]# sysctl -p
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.ip_forward = 1
配置iptables做SNAT(在有公网EIP的服务器上操作)
[root@master-03 ~]# iptables -t nat -I POSTROUTING -s 172.16.0.0/12 -j SNAT --to-source 172.19.19.26
配置VPC,添加0.0.0.0/0地址段(在有云服务器VPC操作控制台上操作)
验证,ping域名即可(在无公网EIP的服务器上操作)
至此,搭建SNAT实现没有公网EIP的阿里云ECS(适用于各大云商云服务器产品)实例借助有公网的ECS云服务器访问外网,但是外网无法访问到内网IP(此配置本地无法访问到内网的);如若想访问到云服务器内网,需借助DNAT来实现,配置如下。
二、搭建DNAT环境
首先,在有公网EIP的服务器上操作
[root@master-03 ~]# iptables -t nat -I PREROUTING -p tcp --dport 22 -j DNA
命令分解: iptables -t nat -I PREROUTING -p tcp --dport 外网IP的ECS端口 -j DNAT --to 只有内网IP的ECS的IP:端口
如若前后端口映射不一致,需在/etc/sysconfig/iptables文件nat表的dnat转发规则(目标IP)后面,直接加特定的端口号即可
再配置VPC,添加0.0.0.0/32地址段(在有云服务器VPC操作控制台上操作)
验证,用xssh终端软件,公网IP+22连接(注意,有公网EIP主机我这里默认是66端口),22作为无公网IP的转发端口使用;
三、各大云商自带NAT网关产品
例
创建相关条目规则即可,云商都有相应帮助手册不过多赘述。
四、iptables防火墙常用命令
iptables规则重启会清空,如若永久生效,还需要保存在iptables配置文件中
[root@master-03 ~]# service iptables save #保存配置
# 如果没有安装iptables
[root@master-03 ~]# service iptables status #检查是否安装了iptables
[root@master-03 ~]# yum install -y iptables #安装iptables
[root@master-03 ~]# yum update iptables #升级iptables
[root@master-03 ~]# yum install iptables-services #安装iptables-services
[root@master-03 ~]# systemctl enable iptables.service #设置防火墙开机启动
NAT网关学习篇总结:
适用于不同场景,主要注意iptables规则冲突;如果云服务器内安装了docker,docker自带的nat转发规则会有影响,需要合理的网段规划和路由规划。
外网端口占用过大,加上需要部署如:Rancher这种容器集群平台的,推荐搭建使用云商产品型-NAT网关,以绑定弹性公网IP的方式实现,这样就不需要占用云服务器实例上的公网端口;如果说小微型企业,小型VPC企业主等可以考虑以降低上云成本最佳;
云服务器无公网EIP访问外网,搭建(NAT网关)教程
https://cn.10691.cn//archives/10026