Strongswan ipsec 隧道未与 AAA 服务器建立连接

Strongswan ipsec 隧道未与 AAA 服务器建立连接

我有两台虚拟机

VM-1:我已经安装了 Strongswan 5.9。

VM-2:已安装 Strongswan 5.9,已安装freeradius(radius 服务器)

我已经在两个 VM 上启动了 Strongswan systemctl start strongswan

当我从 VM-1 运行radtest <username> <password> <ipaddress> <NAS Port> <secretkey>命令时,请求未经 aaa 服务器验证,但当我停止时,strongswan.service我收到了Received Access-Accept来自 aaa 服务器的响应。

我的问题是为什么 VM-1 在处于活动状态时无法通信strongswan.service。我猜 IPsec 隧道没有建立。以下是我的swanctl.conf文件。有人能帮我解决我遗漏的内容吗?如何建立隧道并访问 AAA 服务器。

VM-1

connections {

   conn1 {
    local_addrs  = x.x.x.83
    remote_addrs = x.x.x.171

    local {
     auth = psk
     id = x.x.x.83
    }
    remote {
       auth = psk
       id = x.x.x.171
    }
    children {
       vm1-to-aaa {
          local_ts  = x.x.x.83
          remote_ts = x.x.x.171

          start_action = trap
          esp_proposals = aes192gcm16-aes128gcm16-prfsha256-ecp256-modp3072,aes192-sha256-ecp256-modp3072,default
          mode = transport
       }
    }
    version = 2
    mobike = no
    reauth_time = 10800
    proposals = aes192gcm16-aes128gcm16-prfsha256-ecp256-ecp521,aes192-sha256- modp3072,default
 }
}

secrets {
  ike-1 {
    id-1 = x.x.x.83
    id-2 = x.x.x.171
    secret = "thisissecret"
 }
 }

VM-2

  connections {

    conn2 {
     local_addrs  = x.x.x.171
     remote_addrs = x.x.x.83

     local {
       auth = psk
       id = x.x.x.171
    }
    remote {
       auth = psk
       id = x.x.x.83
    }
    children {
       aaa-to-vm1 {
          local_ts  = x.x.x.171
          remote_ts = x.x.x.83

          start_action = trap
          esp_proposals = aes192gcm16-aes128gcm16-prfsha256-ecp256-modp3072,aes192-sha256-ecp256-modp3072,default
          mode = transport
       }
    }
    version = 2
    mobike = no
    reauth_time = 10800
    proposals = aes192gcm16-aes128gcm16-prfsha256-ecp256-ecp521,aes192-sha256-modp3072,default
 }
 }

secrets {
  ike-1 {
    id-1 = x.x.x.171
    id-2 = x.x.x.83
    secret = "thisissecret"
 }
}

更新

当我发起一个命令时,swanctl -i conn1 -c vm1-to-aaa我得到了 -

 [IKE] giving up after 5 retransmits
 [IKE] establishing IKE_SA failed, peer not responding
 initiate failed: establishing CHILD_SA 'vm1-to-aaa' failed

以下是我的防火墙设置 -

 public (active)
   target: default
   icmp-block-inversion: no
   interfaces: ens32
   sources:
   services: cockpit dhcpv6-client http https ipsec ssh
   ports: 443/tcp 8765/tcp 8088/tcp 1812/udp 1813/udp 500/udp  4500/udp
   protocols:
   forward: no
   masquerade: yes
   forward-ports:
   source-ports:
   icmp-blocks:
   rich rules:
     rule protocol value="ah" accept
     rule protocol value="esp" accept

答案1

丢弃 IKE_SA_INIT 响应 没有匹配的 IKE ISA

其他一些服务也在监听 500/udp 端口

这听起来好像你运行了两个不同的 IKE 服务(我猜是 strongswan-starter 和 strongswan-swanctl?)

我如何强制 freeradius 使用 ipsec 隧道?或者该主机上安装的任何服务都应通过 ipsec 隧道进行验证

strongSwan 安装的内核“转换”(xfrm) 策略已强制所有出站流量执行此操作。所有与 local_ts/remote_ts 匹配的数据包流量选择器将在发送之前自动转换(在本例中,在 ESP 中加密)。swanctl -lip xfrm将显示哪些策略处于活动状态。

(由于您的 local_ts/remote_ts 流量选择器当前仅指定 IP 地址,全部这两个主机之间的流量将被加密。如果您希望将保护限制在特定端口,则需要将其添加到流量选择器中。

您可以使用 iptables 或 nftables 规则来丢弃入站非 IPsec 数据包(如果它们是意外到达或来自不需要的来源):

udp dport 1812 meta ipsec exists accept
udp dport 1812 reject
-p udp --dport 1812 -m policy --pol ipsec --dir in -j ACCEPT
-p udp --dport 1812 -j REJECT

制作 freeradius.service 可能会有用取决于strongswan,这样它甚至在 strongswan 启动之前都不会启动(并且至少安装了“陷阱”策略):

systemctl add-wants freeradius.service strongswan.service

相关内容