You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS VPC中出站IPv6连接回复未路由至防火墙的问题排查求助

AWS VPC中出站IPv6连接回复未路由至防火墙的问题排查求助

我用Terraform搭建了一个全新的AWS VPC,里面划分了一个DMZ子网和一个内部子网,中间靠一台防火墙实例做桥接——防火墙在两个子网各有一个网络接口,每个接口都配置了IPv4和IPv6地址(各包含一个链路本地地址和一个全局地址)。目前防火墙本身可以正常通过IPv4和IPv6访问外部的HTTPS URL,流量会从DMZ接口出站。

内部子网里部署了一台测试服务器,它的网络接口配置了合规的IPv4和IPv6地址(同样是链路本地+全局地址),服务器的IPv4和IPv6默认路由都指向防火墙内部接口的全局地址。

相关配置说明

防火墙的两个接口都已经禁用了源/目标检查;安全组和网络ACL(NACL)也按需求配置完毕:

  • 内部子网的NACL禁止所有进出数据包,只有这台双网卡的防火墙能从内部子网出站
  • DMZ子网的NACL允许出站HTTPS流量到所有IPv4/IPv6目标,同时允许来自所有目标的高端口响应流量

目前IPv4的NAT功能已经正常工作,测试服务器可以通过IPv4访问目标HTTPS地址,但IPv6连接完全失败,无法建立。

已完成的排查动作

我已经做了一系列排查,整理如下:

  • 防火墙自身使用同一个URL发起IPv6连接完全成功,说明目标地址的IPv6服务是正常可用的
  • 测试服务器解析该URL得到的IPv6地址和防火墙解析的结果完全一致,DNS层面没有问题
  • 在防火墙的DMZ接口用tcpdump抓包,能看到数据包从设备发出,源IP是服务器的全局IPv6地址,目标IP是远程URL的IPv6地址——这说明数据包已经成功路由到防火墙并被转发出去
  • 但同一抓包结果中完全看不到远程URL的回复数据包:既然防火墙自身发的包能收到回复,推测数据包已经到达远程端,但回复没有回到防火墙
  • 这台防火墙对IPv6仅做路由转发和防火墙策略管控,不涉及NAT或隧道这类操作
  • 防火墙会记录所有被它阻断的连接,我检查过日志,这个IPv6连接并没有被防火墙阻断
  • AWS可达性分析器不支持IPv6,没法用这个工具辅助排查
  • DMZ子网的路由表已配置:内部子网IP段的下一跳指向防火墙的DMZ接口
  • 防火墙是Linux实例,已经开启了IPv6转发功能(不然数据包根本到不了DMZ接口)

我的猜测

我怀疑问题根源可能在安全组的有状态特性上:虽然防火墙的入站安全组规则允许所有协议、端口来自任意地址的访问,但这次出站的数据包源IP不是防火墙自身的地址,AWS的路由系统会不会因此不把回复数据包送回防火墙?按道理说,VPC子网的路由表已经明确指定了该目标的下一跳是防火墙,而且我已经禁用了源/目标检查,应该能规避这个问题才对?


编辑1:补充一下我做这个架构的背景——我想替代AWS官方的NAT网关,因为它每个可用区每月要40美元左右,如果跨两个AZ和两个区域部署来保证可用性,每月就要160美元,这直接让我的AWS开销翻倍了。这个内部/DMZ/外部的架构是业界沿用几十年的标准设计,也是VPC的最佳实践。我把安全组看作主机级防火墙,虽然它好用还能通过Terraform集中管控,但光靠它远远不够——就像在物理环境中,你不会给Windows服务器直接配置公网IP,然后指望Windows防火墙永远不出错;真重视基础设施安全的话,肯定会在前面加独立防火墙。所以我想用Terraform管控安全组(相当于统一配置主机防火墙),再在前面加一层防护:NACL的规则数量有限制,所以NAT网关是自然选择,而且它还能作为单一的出站点,方便我排查流量中是否有内部主机被入侵的迹象。

另外我注意到AWS的官方文档里提到他们的NAT实例支持NAT64,这让我更加怀疑VPC中的IPv6路由是不是存在某些结构性的问题?

编辑2:我查看了VPC流日志,出站数据包显示为ACCEPT状态,但完全没有对应的回复流记录——这应该说明回复数据包根本没有被路由到防火墙的接口上。

备注:内容来源于stack exchange,提问作者Ian Gibbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 13:13:15