为什么 macOS IKEv2 客户端无法通过隧道获得回复?

问题描述

服务器:Debian buster (4.19);强天鹅 5.7.2

ipsec.conf

conn %default
 keyexchange=ikev2
 ike=aes256-aes128-sha256-sha1-modp3072-modp2048-modp1024
 esp=aes256-sha1-ecp256
 fragmentation=yes
 rekey=no
 compress=yes
 dpdaction=clear
 left=100.200.100.200
 leftauth=pubkey
 [email protected]
 leftcert=server.pem
 leftsendcert=always
 leftsubnet=10.0.0.0/16
 leftfirewall=yes
 lefthostaccess=yes
 right=%any
 rightauth=pubkey
 rightsourceip=10.10.0.0/16
 rightdns=10.0.89.1

conn ikev2-pubkey
 auto=add

Linux 和 Windows 客户端运行良好。 例如,我可以像这样看到从客户端到服务器的 ping:

19:50:18.075816 IP me.59547 > server.4500: UDP-encap: ESP(spi=0xcbb1e4ea,seq=0x32b),length 132
19:50:18.076105 IP server.4500 > me.59547: UDP-encap: ESP(spi=0xc14e4d72,seq=0x329),length 132

具有隧道状态:

ikev2-pubkey[439]: ESTABLISHED 26 minutes ago,100.200.100.200[mydnsnmae.com]...150.160.150.160[me]
ikev2-pubkey{331}:  INSTALLED,TUNNEL,reqid 177,ESP in UDP SPIs: cbb1e4ea_i c14e4d72_o
ikev2-pubkey{331}:   10.0.0.0/16 === 10.10.0.1/32

但是对于 macOS (Catalina),事情就不同了。我已成功建立连接:

ikev2-pubkey[442]: ESTABLISHED 7 minutes ago,100.200.100.200[mydnsnmae.com]...130.120.130.120[me-mac]
ikev2-pubkey{334}:  INSTALLED,reqid 176,ESP SPIs: c6ba543e_i 03ba0a5a_o
ikev2-pubkey{334}:   10.0.0.0/16 === 10.10.0.4/32

并且只看到一种方式的数据包:

20:01:27.933739 IP 150.160.150.160 > 100.200.100.200: ESP(spi=0xc632be22,seq=0x5f),length 392
20:01:29.073710 IP 150.160.150.160 > 100.200.100.200: ESP(spi=0xc632be22,seq=0x60),length 392
20:01:29.231101 IP 150.160.150.160 > 100.200.100.200: ESP(spi=0xc632be22,seq=0x61),length 392
20:01:34.683591 IP 100.200.100.200.4500 > 150.160.150.160.4500: NOnesP-encap: isakmp: child_sa  inf2
20:01:34.696358 IP 150.160.150.160.4500 > 100.200.100.200.4500: NOnesP-encap: isakmp: child_sa  inf2[IR]
20:01:41.563563 IP 150.160.150.160 > 150.160.150.160: ESP(spi=0xc632be22,seq=0x62),length 136

我看到了 ESP in UDP SPIs:ESP SPIs:间的区别,但不明白是什么意思。

我应该检查什么来修复 macOS VPN 客户端?

解决方法

这是解决方案。 看起来 macOS 的 NAT 检测存在一些问题(我尝试了几个不同的主机)。所以客户端的 forceencaps=yes ipsec.conf 解决了这个问题。