You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Strongswan连接成功但无法访问远程网络主机问题求助

Strongswan连接成功但无法访问远程网络主机问题求助

我遇到了一个非常棘手的问题:Strongswan明明显示连接成功,但绝大多数时候都访问不了朋友那边的远程网络,只有极少数情况能正常工作。以下是我的具体环境、配置和操作步骤,希望能得到大家的帮助:

网络环境信息

  • 本地Ubuntu主机:192.168.178.52
  • 本地路由器(FritzBox):192.168.178.1
  • 朋友侧路由器(Swisscom):192.168.1.1
  • 目标远程主机:192.168.1.148

Ubuntu主机上的Strongswan配置

connections {
  friend {
    version = 2
    remote_addrs = xxx.internet-box.ch
    vips = 0.0.0.0
    local {
      auth=psk
      id=roman
    }
    remote {
      auth=psk
      id=roman
    }
    children {
      vpn {
        # local_ts = 102.168.178.0/24
        remote_ts = 192.168.1.0/24
        # remote_ts = dynamic
        dpd_action = restart
        start_action = trap
      }
    }
  }
}

secrets {
  ike-1 {
    id-1=roman
    secret=xxxxxxxxxxx
  }
}

执行的操作命令

$ swanctl --load-all  # 加载配置文件
# 后续命令未完整输入,主要通过swanctl工具管理VPN连接

针对这个问题的排查与解决建议

结合你的情况,我整理了几个优先级较高的排查方向,你可以逐一尝试:

  1. 修正并启用本地流量选择器(local_ts)
    你配置里的local_ts被注释掉了,而且还写错了子网(102.168.178.0/24应该是192.168.178.0/24吧?)。Strongswan需要明确知道哪些本地流量需要走VPN隧道,缺失这个配置会导致本地主机的流量无法被正确导向VPN。建议取消注释并修正为你的本地子网:

    local_ts = 192.168.178.0/24
    

    之后执行swanctl --reload-connections重新加载配置,再重启连接试试。

  2. 确认远程端的路由与流量选择器配置
    即使你的本地配置正确,朋友侧的Swisscom路由器也需要正确配置反向路由——也就是把192.168.178.0/24的流量路由到VPN隧道。可以让朋友检查他那边的Strongswan配置,确保存在对应的local_ts = 192.168.1.0/24和指向你本地子网的路由条目,否则远程主机的响应包无法回到你的主机。

  3. 检查本地路由表与iptables规则
    连接成功后,在本地主机执行ip route show,查看是否存在针对192.168.1.0/24的路由,且下一跳是Strongswan的虚拟接口(比如ipsec0)。如果没有这条路由,说明trap策略未生效,可以手动添加路由:

    sudo ip route add 192.168.1.0/24 via <你的VPN虚拟接口IP>
    

    同时执行sudo iptables -L -n检查防火墙规则,确保INPUT和FORWARD链允许IPsec相关的ESP/AH流量通过。

  4. 验证安全关联(SA)的建立状态
    执行以下命令查看当前的SA和子连接状态:

    swanctl --list-sas
    swanctl --list-children
    

    确认IPsec SA是否正常建立,如果状态显示异常或没有对应的SA条目,可能需要调整IKE协商的参数(比如加密算法),或者重启Strongswan服务:sudo systemctl restart strongswan-starter

  5. 测试单主机连通性缩小范围
    暂时把remote_ts192.168.1.0/24改成目标主机的单独地址192.168.1.148/32,排除子网路由的影响。如果能成功访问这个单主机,再逐步扩展到整个子网配置。

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

火山引擎 最新活动