• 首页 > 
  • ECS实例上自建SNAT后无法访问公网

ECS实例上自建SNAT后无法访问公网

KB: 155799

 · 

更新时间:2020-09-04 16:29

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

问题描述

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

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

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

  1. 在A实例中,执行以下命令,发现FORWARD链默认规则是DROP,导致ICMP reply包被丢弃。
    iptables -nvL
    说明:若执行iptables -nL命令,无法查看in和out参数。
  2. 执行以下命令,设置FORWARD链的默认规则为ACCEPT。
    iptables -P FORWARD ACCEPT
  3. 执行以下命令,确认修改成功。
    iptables -nvL
    系统显示类型如下。

适用于

  • 云服务器ECS
  • 轻量应用服务器

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。