AWS站点到站点VPN隧道已建立可互ping但curl执行超时问题问询
需补充的核心配置项
- MTU与MSS钳制配置
IPsec隧道会增加50~70字节的封装开销,默认以太网MTU为1500,封装后的TCP报文很容易超过MTU阈值,而ping默认使用的小包不会触发该问题,这是ping通但TCP连接超时的最常见原因。需做两处配置:- libreswan配置文件中添加
mtu=1420,设置隧道接口MTU - 开启TCP MSS钳制,libreswan侧配置
tcp-mss-clamp=yes,AWS VPN控制台中将MSS值设置为1380,确保TCP报文不会超过隧道承载上限
- libreswan配置文件中添加
- 网段流量NAT排除规则
需在本地iptables的nat表POSTROUTING链添加规则,跳过访问AWS VPC网段流量的源NAT:iptables -t nat -I POSTROUTING -d <AWS VPC网段> -j ACCEPT,避免本地访问VPC的流量被错误SNAT到公网地址,导致AWS端拒绝回程流量 - 安全策略放行配置
- 确认AWS侧VPC子网网络ACL、目标实例安全组,已放通本地网段访问对应业务端口(如80、443)的入站规则,以及回程流量的出站规则
- 确认本地服务器/防火墙已放通访问VPC网段对应端口的出站、入站规则
- 路由与加密域校验
- 确认libreswan配置中
leftsubnet(本端子网)、rightsubnet(AWS VPC子网)配置为完整的网段,而非单个IP,保证全网段流量都走IPsec隧道 - 确认AWS VPC路由表中,指向本地网段的路由下一跳为VPN网关,本地路由表中指向VPC网段的路由下一跳为libreswan网关设备
- 确认libreswan配置中
故障排查步骤
- 大包连通性测试:执行
ping -s 1372 -M do <AWS实例IP>,模拟接近MTU上限且不允许分片的报文,如果该命令丢包/超时即可确认是MTU/MSS配置问题 - 路径丢包排查:执行
mtr --psize 1400 <AWS实例IP>,定位丢包发生的节点,若丢包出现在隧道入口则优先查IPsec配置,若丢包出现在AWS侧则优先查VPC安全策略与路由 - 抓包校验流量走向:分别在本地物理网卡、IPsec虚拟网卡抓包:
若物理网卡有SYN报文发出但无回程报文,优先查隧道与AWS侧配置;若隧道网卡无对应报文,优先查本地路由与NAT配置# 物理网卡抓包,看是否有对应端口的TCP报文进出 tcpdump -i <物理网卡名> host <AWS实例IP> and port <业务端口> # IPsec隧道网卡抓包,看报文是否被正常封装进隧道 tcpdump -i ipsec0 host <AWS实例IP> and port <业务端口> - 隧道状态校验:执行
ipsec status查看SA协商状态,确认流量计数随测试请求同步增长,无报错信息;查看/var/log/pluto.log排查是否有封装、解密相关报错 - AWS侧日志排查:开启目标实例所在子网的VPC流日志,查看对应流量的处理结果,若标记为
REJECT则对应调整安全组/网络ACL,若标记为ACCEPT但无回程报文则排查实例内部防火墙与路由配置
内容的提问来源于stack exchange,提问作者pjr
相关产品推荐
相关产品推荐

