- 最新动态
- 功能总览
- 产品介绍
- 快速入门
- 用户指南
- 最佳实践
-
API参考
- 使用前必读
- API概览
- 如何调用API
- API
- API V3
- 应用示例
-
权限和授权项
- 策略及授权项说明
- VPC
- 子网
- 端口
- 对等连接
- VPC路由
- 路由表
- 配额
- 私有IP
- 安全组
- 安全组规则
- VPC标签
- 子网标签
- VPC流日志
- 端口(Openstack Neutron API)
- 网络(Openstack Neutron API)
- 子网(Openstack Neutron API)
- 路由器(Openstack Neutron API)
- 网络ACL(Openstack Neutron API)
- 安全组(Openstack Neutron API)
- VPC(API V3)
- 安全组(API V3)
- 安全组规则(API V3)
- IP地址组(API V3)
- 辅助弹性网卡(API V3)
- 流量镜像会话(API V3)
- 流量镜像筛选条件(API V3)
- 流量镜像筛选规则(API V3)
- 网络ACL(API V3)
- 网络ACL标签(API V3)
- 端口(API V3)
- API授权项注意事项
- 常见问题
- 历史API
- 附录
- SDK参考
- 场景代码示例
-
常见问题
- 计费类
- 虚拟私有云与子网类
- 弹性公网IP类
- 对等连接类
- 虚拟IP类
- 带宽类
-
网络连接类
- VPN支持将两个VPC互连吗?
- ECS有多个网卡时,为何无法通过域名访问公网网站及云中的内部域名?
- 同时拥有自定义路由和EIP的ECS访问外网的优先级是什么?
- 本地主机访问使用弹性云服务器搭建的网站出现间歇性中断怎么办?
- 同一个子网下的弹性云服务器只能通过内网IP地址单向通信怎么办?
- 同一个VPC内的两台弹性云服务器无法互通或者出现丢包等现象时,如何排查?
- Cloud-init连接出现问题时,如何排查?
- EIP连接出现问题时,如何排查?
- 二三层通信出现问题时,如何排查?
- 裸机网络出现问题时,如何排查?
- 弹性云服务器IP获取不到时,如何排查?
- VPN及专线网络连接出现问题时,如何排查?
- 外网能访问服务器,但是服务器无法访问外网时,如何排查?
- 配置了IPv6双栈,为什么无法访问IPv6网站?
- 弹性云服务器防火墙配置完成后,为什么网络不通?
- 路由类
- 安全类
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
基于ECS自建SNAT服务器实现多个ECS共享EIP访问公网
操作场景
当您在使用VPC的路由表功能时,需要在弹性云服务器上部署SNAT,使得VPC内其他没有绑定EIP的弹性云服务器可以通过它访问Internet。
该配置对VPC内所有子网生效。
前提条件
- 已拥有需要部署SNAT的弹性云服务器。
- 待部署SNAT的弹性云服务器操作系统为Linux操作系统。
- 待部署SNAT的弹性云服务器网卡已配置为单网卡。
SNAT服务器与NAT网关服务差异
NAT网关(NAT Gateway)能够为虚拟私有云内的云主机(弹性云服务器、裸金属服务器等)或者通过云专线/VPN接入虚拟私有云的本地数据中心的服务器,提供网络地址转换服务,使多个云主机可以共享弹性IP弹性公网IP访问Internet或使云主机提供互联网服务。
对比SNAT服务器实例,NAT网关具有配置简单、灵活易用、支持跨子网部署、跨可用区部署、支持多种网关规格等优势,您可以在管理控制台选择“网络网络 > NAT网关”进行体验。
更多内容请参见《NAT网关用户指南》。
操作步骤
- 登录管理控制台。
- 在管理控制台左上角单击
,选择区域和项目。
- 在页面左上角单击
图标,打开服务列表,选择“计算 > 弹性云服务器”。
- 在右侧弹性云服务器界面,单击需要设置SNAT的弹性云服务器名称,进入弹性云服务器详情页面。
- 在弹性云服务器详情页面单击“弹性网卡”页签。
- 单击网卡IP地址,在展开的网卡详情区域内设置“源/目的检查”状态为“关闭”。
默认情况下,“源/目的检查”状态为“启用”,系统会检查弹性云服务器发送的报文中源IP地址是否正确,否则不允许弹性云服务器发送该报文。这有助于防止伪装报文攻击,提升安全性。但在SNAT场景中,SNAT实例起转发作用,这种保护机制会导致报文的发送者无法接收到返回的报文。这种保护机制可以通过设置“源/目的检查”状态为禁用。
- 绑定EIP。
- 为弹性云服务器的私有IP绑定EIP。详情请参见将弹性公网IP绑定至实例。
- 为弹性云服务器的虚拟IP绑定EIP,详情请参见将虚拟IP绑定至实例或者EIP。
- 打开待配置SNAT弹性云服务器详情页面,通过remote login登录服务器。
- 执行如下命令,输入root密码,切换至root。
- 执行如下命令,检测弹性云服务器是否可以正常连接Internet。
说明:
执行如下命令前,关闭SNAT服务器上相应的IPtables 规则,开放安全组规则。
ping support.huawei.com
回显如下所示,表示弹性云服务器可以正常连接Internet。[root@localhost ~]# ping support.huawei.com PING support.huawei.com (xxx.xxx.xxx.xxx) 56(84) bytes of data. 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=51 time=9.34 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2 ttl=51 time=9.11 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=3 ttl=51 time=8.99 ms
- 执行如下命令,查看Linux操作系统的IP转发功能是否已开启。
cat /proc/sys/net/ipv4/ip_forward
许多操作系统支持路由报文。操作系统需要在转发报文前将报文的源IP地址转换成操作系统的IP地址,因此,发送的报文带有公共发送者的IP地址,而返回的报文能够原路返回,这种方式称为SNAT。操作系统需要跟踪转换过IP地址的报文,确保返回的报文中目的IP地址可以被重写,且报文能够转发给原始的报文发送者。这一过程实现需要启用IP转发功能,并设置SNAT规则。
- 使用vi打开“/etc/sysctl.conf”文件,修改net.ipv4.ip_forward = 1,按“:wq”保存退出。
- 执行如下命令,使修改生效。
- 配置SNAT。
执行如下命令,允许网段(例如:192.168.1.0/24)内所有ECS访问外网。示例如图1所示。
iptables -t nat -A POSTROUTING -o eth0 -s subnet -j SNAT --to nat-instance-ip
说明:
如需实现重启后规则不丢失,则需把规则写在/etc/rc.local文件中。
- 执行以下命令进入/etc/rc.local文件。
- 执行14配置SNAT
- 执行以下命令保存并退出。
- 执行以下命令添加rc.local文件的执行权限。
- 执行如下命令,查看是否配置成功。如图2所示,则表示配置成功(例如:192.168.1.0/24)。
iptables -t nat --list
- 添加自定义路由,详见在路由表中添加路由。
目的地址是0.0.0.0/0,下一跳地址是SNAT服务器的私有IP或者虚拟IP(例如:192.168.1.4)。
按以上操作完成配置后,如果出现网络不通等情况,请检查您的安全组、网络ACL配置,是否放通了对应流量。