当存在多台云服务器需要访问公网时,推荐使用SNAT规则。
相比于每台云服务器绑定公网IP,SNAT规则具有如下优势:
一条连接是客户端到服务器的一条物理路径,SNAT连接是由源IP地址、源端口、目的IP地址、目的端口、传输层协议五个元素共同确定的物理路径,其中源IP地址、源端口指经过SNAT转换的公网IP及其端口。
系统设置默认老化时间(TCP为900秒,UDP为60秒)即没有报文传输的时间,若SNAT连接没有报文传输的时间超过老化时间,则自动中断。
当SNAT规则关联一个公网IP时,SNAT连接的源端口由系统随机分配。
当SNAT规则关联多个公网IP时,SNAT连接的源IP地址、源端口由系统随机分配。
可能原因如下:
原因 | 说明 |
---|---|
路由不存在 | 请检查云服务器实例所属子网关联的路由表中是否存在目标网段为0.0.0.0/0、下一跳为目标公网NAT网关实例的自定义路由条目,若没有,请手动添加,相关操作,请参考 添加路由条目 。 |
安全组和网络ACL配置冲突 | 请检查对应安全组和网络ACL的相关规则是否放通。更多详情,请参考 网络ACL概述 和 安全组概述 。 |
云资源状态异常 | 请检查云服务器、公网IP、公网NAT网关状态是否正常,如到期关停、欠费关停等。 |
绑定了公网IP | 请检查云服务器实例是否绑定公网IP。公网IP的优先级高于路由表,故云服务器实例绑定公网IP后,其流量通过公网IP转发,无法使用SNAT规则访问公网。 |
您可查看云监控数据,分析问题的原因。更多操作,请参考 查看监控数据 。
可能原因如下:
均支持。多条SNAT规则支持关联一个公网IP,一条SNAT规则支持关联多个公网IP。
公网NAT网关的转发带宽为已绑定的公网IP带宽之和,上限为5Gbps,即超过5Gbps后,公网NAT网关的转发带宽将受限。
二者没有关联,具体区别如下:
创建公网NAT网关选择子网,系统自动从该子网中选择一个可用的私网IP地址创建公网NAT网关网卡。
创建SNAT规则选择子网,该子网下的云服务器均可通过SNAT规则共用一个公网IP访问Internet。
云服务器通过SNAT访问Internet上服务器,出现TCP建链失败的情况时,可通过以下方法进行排查。
执行以下命令,查看远端服务器是否开启了“tcp_tw_recycle”。
sysctl -a|grep tcp_tw_recycle
tcp_tw_recycle取值为1时,表示开启。
执行以下命令,查看远端服务器内核丢包数量。
cat /proc/net/netstat | awk '/TcpExt/ { print $21,$22 }'
如果ListenDrops数值非0,表示存在丢包,即存在网络问题。
修改远端服务器的内核参数。
执行以下命令,临时修改参数(重启远端服务器后该设置失效,需重新修改)。
sysctl -w net.ipv4.tcp_tw_recycle=0
永久修改参数方法:
执行以下命令,修改“/etc/sysctl.conf”文件。
vi /etc/sysctl.conf
在该文件中添加以下内容:
net.ipv4.tcp_tw_recycle=0
单击键盘中“ esc ”按键输入 :wq!
,保存并退出文件。
执行以下命令,使配置生效。
sysctl -p