三步搭建VPC专有网络NAT网关,配置SNAT和DNAT规则

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 自建NAT网关配置SNAT和DNAT转发规则

搭建NAT网关就是为了实现在相同VPC内,没有公网IP的ECS借助有公网的ECS访问外网,或者是外网通过端口映射访问到内网服务器。

SNAT:实现没有公网IP的ECS实例借助有公网的ECS访问外网,但是外网无法访问到内网IP;

DNAT:实现外网通过端口映射访问到内网服务器,但是不能实现内网ECS访问到外网。


一共三个步骤:


第一步:开启ECS的ip转发功能


这步只在有公网的ECS上操作:


vi /etc/sysctl.conf

找到 net.ipv4.ip_forward = 1 这一条,确保后面的值为1就行,如果没有这一条,手动加进去。


697c983cf08a99f21a04bbb74bb40608e7e09acb


保存退出,然后使用 sysctl -p 命令使上面的修改生效。

fd431fe987f4d1f303c83716f1190942f33f0f3a


第二步:设置VPC路由条目


这一部需要在阿里云控制台操作,添加一条VPC的路由条目

找不到在哪的可以参考视频教程https://help.aliyun.com/video_detail/54653.html

在VPC的路由表中,添加如下一条路由条目。

5883cab1fee276485c56cd343d14c40e14b8a819

其中目标网段一定要填0.0.0.0/0

ECS实例选择有公网IP的那个实例。


第三步:设置iptables 的NAT转发规则


1、设置SNAT规则


就一条命令搞定,别直接复制啊,需要根据你的实际情况改一下IP地址:


iptables -t nat -I POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 172.16.107.49

可以这样理解 iptables -t nat -I POSTROUTING -s VPC的IP段 -j SNAT --to-source 有公网IP的ECS内网IP

回车执行后要永久生效,还需要保存在iptables配置文件中:


service iptables save


如果使用vi /etc/sysconfig/iptables命令查看iptables配置文件,就会发现多了一条nat表的snat转发规则:


5d3d6c2fa0c6dd70d0503b055bf0adcfc0026154

然后重启iptables使规则生效:


systemctl restart iptables.service



现在没有内网的ECS就可以访问公网了。


2、设置DNAT规则

DNAT需要两条命令:

同样不要照搬复制,需要根据你的实际情况修改下IP


iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.93.38
iptables -t nat -I POSTROUTING -p tcp --dport 80 -j MASQUERADE

可以这样理解:

iptables -t nat -I PREROUTING -p tcp --dport 有公网IP的ECS端口号 -j DNAT --to 目标内网ECS的内网IP

iptables -t nat -I POSTROUTING -p tcp --dport 有公网IP的ECS端口号 -j MASQUERADE


比如上面的示例中,是把有公网IP的ECS 80端口映射到了172.16.93.38这个内网实例的80端口。


回车执行后要永久生效,还需要保存在iptables配置文件中:


service iptables save

同样的,如果使用vi /etc/sysconfig/iptables命令查看iptables配置文件,就会发现多了两条nat表的dnat转发规则:

134a528b2498f19649be73759e665a323a83607e


前后端口映射不一致怎么办?简单啊,在/etc/sysconfig/iptables内的目标IP后面直接加特定的端口号就行


ea43d78175c870d40dbf4c1709a51dc73e5b888f


也是同样的,最后重启iptables使规则生效:


systemctl restart iptables.service



测试正常。

如果不生效,请检查是否是同一VPC内,iptables规则是否有冲突。如果ECS内安装了docker,docker自带的nat转发规则会有影响,需要合理的网段规划和路由规划。


DONE!

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
19天前
|
微服务 应用服务中间件
微服务跨域(通过网关配置进行跨域)
在单体架构中,我们通常通过SpringMVC配置类实现CORS跨域支持,设置允许的来源、请求头、方法及凭证等。然而,在微服务架构下,因浏览器首先访问网关再进行服务路由,需在网关配置跨域。对于无SpringMVC环境的网关(如使用Gateway组件),我们可在YAML文件中配置`spring.cloud.gateway.globalcors`属性,以实现全局跨域支持。
40 0
|
4月前
|
安全 网络协议 网络安全
【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题
【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题
5269 0
|
14天前
内网和外联单位互访,看大佬是如何通过SNAT+DNAT实现的?
内网和外联单位互访,看大佬是如何通过SNAT+DNAT实现的?
|
24天前
|
安全 前端开发 Java
微服务网关及其配置
微服务网关及其配置
65 4
|
7天前
|
存储 容器
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
|
8天前
|
负载均衡 Linux 网络虚拟化
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
|
12天前
|
安全 网络安全 网络架构
【揭秘】大佬如何玩转内网与外联单位互访?SNAT+DNAT实战揭秘,让你的网络畅通无阻!
【8月更文挑战第19天】内网与外联单位间的访问是企业网络的关键需求。通过SNAT和DNAT技术可巧妙解决此问题。SNAT修改源IP地址,隐藏内网真实身份;DNAT改变目的IP地址,实现外部对内网服务器的访问。
31 0
|
3月前
|
Kubernetes Cloud Native 开发者
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
**阿里云发布开源版ALB控制器v1.2.0,对齐商业版ALB Ingress Controller v2.10.0。新版本增强了功能特性,提升了用户体验,并提供了最佳实践。功能更新包括自定义标签、QUIC协议支持、转发规则和安全策略等。此外,还引入了ReadinessGate实现滚动升级时的平滑上线和Prestop钩子确保平滑下线。用户可从GitHub获取开源代码,通过Docker Hub拉取镜像,开始使用alibaba-load-balancer-controller v1.2.0。**
200 3
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
|
2月前
|
算法 网络协议 应用服务中间件
(五)网络编程之流量接入层设计:基于性能怪兽从零构建日均亿级吞吐量的网关架构!
在前篇关于《Nginx》的文章中曾经提到:单节点的Nginx在经过调优后,可承载5W左右的并发量,同时为确保Nginx的高可用,在文中也结合了Keepalived对其实现了程序宕机重启、主机下线从机顶替等功能。
|
2月前
|
存储 网络协议 网络虚拟化
计算机网络知识之交换机、路由器、网关、MAC地址
计算机网络知识之交换机、路由器、网关、MAC地址
下一篇
云函数