Article / 文章中心

阿里云服务器ECS实例上自建SNAT后无法访问公网的解决方法

发布时间:2020-07-24 点击数:1075

问题描述

同一VPC的两台ECS实例,即A实例和B实例,A实例有公网地址,B实例没有公网地址。在A实例上配置好SNAT规则,且在B实例上将路由指向A实例后,B实例还是无法访问公网。

解决方案

阿里云提醒您:

如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

如果您对实例(包括但不限于ECSRDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

1.B实例中ping A实例的公网地址,然后在两台实例中使用tcpdump命令抓包,发现A实例收到了公网地址的ICMP reply包,而B实例没有收到ICMP reply包。

2.A实例中,执行以下命令,发现FORWARD链默认规则是DROP,导致ICMP reply包被丢弃。

iptables -nvL

说明:若执行iptables -nL命令,无法查看inout参数。

3.执行以下命令,设置FORWARD链的默认规则为ACCEPT

iptables -P FORWARD ACCEPT

4.执行以下命令,确认修改成功。

iptables -nvL

系统显示类型如下。

适用于

云服务器ECS

轻量应用服务器

阿里云代理商 阿里云合作伙伴