无法运行 StrongSwan IPsec:收到 netlink 错误:网络无法访问/无法安装 [...] 的源路由。已经疯了

无法运行 StrongSwan IPsec:收到 netlink 错误:网络无法访问/无法安装 [...] 的源路由。已经疯了

我正在尝试使用 strongswan 设置 ipsec 隧道,使用了一些教程,到目前为止一切顺利,但实际上并没有通过隧道进行通信。隧道已建立,但两台机器之间没有任何传输。在说隧道已建立之前,有以下错误消息:

received netlink error: Network is unreachable (101)
unable to install source route for 172.16.50.1

出现此错误后,系统显示:

CHILD_SA thevpn{9} established with SPIs c7c22d4e_i ce2c5536_o and TS 172.16.50.0/24 === 192.168.220.0/24
connection 'thevpn' established successfully

我的设置(均为 Ubuntu 22.04 LTS)

服务器 A IP: 167.235.xx 私有IP: 172.16.50.1

服务器 B IP:138.201.xx 私有IP:192.168.220.1

服务器A上的配置(/etc/ipsec.conf):

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no
conn thevpn
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=167.235.x.x
        leftsourceip=172.16.50.1
        leftsubnet=172.16.50.0/24
        right=138.201.x.x
        rightsubnet=192.168.220.0/24
        ike=3des-md5-modp2048!
        esp=3des-md5-modp2048!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=15s
        dpdtimeout=20s
        dpdaction=restart

服务器B上的配置(/etc/ipsec.conf):

config setup
        charondebug="ike 1, knl 1, cfg 0"
        uniqueids=no
conn thevpn2
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        right=167.235.x.x
        rightsubnet=172.16.50.0/24
        leftsourceip=192.168.220.1/24
        left=138.201.x.x
        leftsubnet=192.168.220.0/24
        ike=3des-md5-modp2048!
        esp=3des-md5-modp2048!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=15s
        dpdtimeout=20s
        dpdaction=restart

当我在服务器 B 上建立连接时,发生了以下情况:

stablishing CHILD_SA anode6{3}
generating CREATE_CHILD_SA request 3 [ SA No KE TSi TSr ]
sending packet: from 138.201.x.x[4500] to 167.235.x.x[4500] (452 bytes)
received packet: from 167.235.x.x[4500] to 138.201.x.x[4500] (452 bytes)
parsed CREATE_CHILD_SA response 3 [ SA No KE TSi TSr ]
selected proposal: ESP:3DES_CBC/HMAC_MD5_96/MODP_2048/NO_EXT_SEQ
**received netlink error: Network is unreachable (101)
unable to install source route for 192.168.220.1**
CHILD_SA anode6{3} established with SPIs c5d3467d_i ca5f85dc_o and TS 192.168.220.0/24 === 172.16.50.0/24
connection 'thevpn2' established successfully

服务器 A 也类似,错误相同,只是本地 IP 不同(172.16.50.1)。没有成功建立任何连接。PING 到 172.16.50.1 只会返回大量空白。您在上面的日志中看到的错误以及我在此处再次复制的错误在服务器 A 或服务器 B 上是相同的(只是私有 IP 不同)

received netlink error: Network is unreachable (101)
unable to install source route for 192.168.220.1

我已经在单独的文件中配置了每台服务器上的网络/etc/netplan/50-my-network.yaml,其内容如下:

network:
  version: 2
  ethernets:
    enp0s31f6:  
      addresses:
        - 192.168.220.1/24:  
            label: enp0s31f6:ipsec
      dhcp4: no
      dhcp6: no

在服务器 B 上使用 PING 192.168.220.1 工作正常。(在服务器 A 上使用 PING 172.16.50.1 也一样).. 我只是不知道(好吧,这里的线索是路由没有安装,但我不知道为什么)。为什么这不起作用,为什么它在两台不同的机器上给出完全相同的错误。

我的猜测是,我在 netplan 中安装本地 IP 的方式有些错误?但为什么会这样呢?它是可 ping 的,NGINX 等服务可以绑定到配置的本地 IP(172.16.50.1),并且还可以正确响应,为与使用外部 IP 调用时不同的网站提供服务。

有人知道吗?谢谢!

编辑:1

将 netplan 配置更改为:

  network:
  version: 2
  ethernets:
    enp0s31f6:  
      addresses:
        - 192.168.220.1/24:  
            label: enp0s31f6:ipsec
      routes:
        - on-link: false
          from: 192.168.220.0/24
          to: 172.16.50.0/24
          
      dhcp4: no
      dhcp6: no

但什么都没改变。还是没运气。

编辑2 这是主要的 netplan 配置/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp41s0:
      addresses:
        - 138.201.x.x/32
      routes:
        - on-link: true
          to: 0.0.0.0/0
          via: 138.201.x.y
        - to: default
          via: ipv6-address::1
      nameservers:
        addresses:
          - w.x.y.z
          - ipv6.x.y.z::add:2
          - w.x.y.z2
          - ipv6.x.y.z::add:1

编辑3

将 netplan 更改为

network:
  version: 2
  ethernets:
    enp41s0:   # use the name of your current network interface here
      addresses:
        - 172.16.50.1/24  # replace with your desired private IP address and subnet mask
      dhcp4: no
      dhcp6: no

并将 ipsec.conf 更改为

.
.
        leftsourceip=172.16.50.1
        leftsubnet=172.16.50.1/32
.
.

仍然是同样的错误:

.
.
selected proposal: ESP:3DES_CBC/HMAC_MD5_96/NO_EXT_SEQ
received netlink error: Network is unreachable (101)
unable to install source route for 172.16.50.1
CHILD_SA thevpn{2} established with SPIs c806e3a0_i 131c38e0_o and TS 172.16.50.1/32 === 192.168.220.0/24
connection 'actiovita-vpn' established successfully

编辑4

规则列表:

0:  from all lookup local
220:    from all lookup 220
32766:  from all lookup main
32767:  from all lookup default

另一个命令:

@ip route show table 220
@

根本没有任何输出。

编辑5

我已经安装Rocky Linux代替Ubuntu 22.04 LTS并且它在那里工作正常,没有任何问题。设置私有 IP 似乎nmtui可以正确安装私有 IP 地址和公共 IP 地址。因此,我强烈认为 Ubuntu(我基本上更喜欢使用)上的网络堆栈配置似乎已损坏。不要再认为这是 strongswan 的问题了。

答案1

我认为左连接和右连接的源 IP 地址配置不正确。请确保 ipsec.conf 文件中指定的 IP 地址与 netplan 配置文件中分配给相应接口的 IP 地址相匹配

编辑后进行编辑:

让我们尝试修复两台服务器上的路由设置,然后更改StrongSwanconf 文件

首先更新服务器 A/etc/netplan/50-my-network.yaml

network:
  version: 2
  ethernets:
    enp0s31f6:
      addresses:
        - 172.16.50.1/24
      dhcp4: no
      dhcp6: no

然后是服务器B

network:
  version: 2
  ethernets:
    enp0s31f6:
      addresses:
        - 192.168.220.1/24
      dhcp4: no
      dhcp6: no

我们申请sudo netplan apply然后更新StrongSwan

对于服务器 A/etc/ipsec.conf

...
conn thevpn
    ...
    leftsourceip=172.16.50.1
    leftsubnet=172.16.50.1/32
    ...

然后是服务器B

...
conn thevpn2
    ...
    leftsourceip=192.168.220.1
    leftsubnet=192.168.220.1/32
    ...

让我们重新开始strongswan sudo systemctl restart strongswan

检查,它应该可以工作sudo ipsec status

相关内容