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

启动Openswan IPSEC后无法SSH连接AWS EC2实例求助

IPsec隧道启动后SSH连接断开的解决方案

问题分析

启动Openswan的IPsec服务后SSH断开,核心原因是IPsec默认会将所有流量路由至隧道,导致SSH连接的回程数据包被导向IPsec隧道而非原公网链路,最终连接中断。

解决步骤

1. 添加SSH流量的旁路路由规则

在IPsec主配置中添加规则,让SSH客户端的公网IP流量绕过IPsec隧道:

  • 编辑/etc/ipsec.conf(请勿直接修改/etc/ipsec.d/aws.conf,避免破坏隧道基础配置),在文件末尾添加以下配置段:
    conn ssh-passthrough
        type=passthrough
        left=0.0.0.0/0
        right=<你的SSH客户端公网IP>/32
        authby=never
        auto=route
    
    将<你的SSH客户端公网IP>替换为你用来连接EC2的本地机器公网IP(可通过本地执行curl ifconfig.me获取)。

2. 调整路由优先级确保公网路由优先

如果旁路路由无效,修改系统路由优先级,让主路由表(公网路由)优先级高于IPsec路由:

  • 编辑/etc/sysctl.conf,添加或更新以下参数:
    net.ipv4.ip_route_priority_nexthop=100
    net.ipv4.ip_route_priority_main=300
    
  • 执行命令使配置生效:
    sudo sysctl -p
    

3. 验证安全组与NACL规则

确认EC2实例的安全组允许你的客户端IP访问22端口(SSH),同时子网NACL允许SSH流量的双向通行(入站22端口、出站任意端口),避免IPsec启动后间接阻断流量。

4. 验证配置并重启服务

  • 先检查IPsec配置合法性:
    sudo ipsec verify
    
  • 启动IPsec服务(推荐使用systemd管理):
    sudo systemctl start ipsec
    
    此时观察SSH连接是否保持稳定。

注意事项

  • 所有自定义规则应放在/etc/ipsec.conf或单独的自定义配置文件(如/etc/ipsec.d/custom-routes.conf)中,不要修改AWS生成的aws.conf,否则易导致隧道无法启动。
  • 若使用旧版SysVinit系统,可用sudo service ipsec start替代systemd命令。

内容的提问来源于stack exchange,提问作者Manny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:20:06