按照这个教程:创建 IKEv2 服务器
该教程的参考文档:指南:如何设置和使用 IKEv2 VPN
在 Win 10 上,从 powershell (管理员),我运行:
certutil -f -importpfx "C:\Users\Adrian\Downloads\vpnclient.p12" NoExport
powershell -command "Set-VpnConnectionIPsecConfiguration -ConnectionName 'My IKEv2 VPN' -AuthenticationTransformConstants GCMAES128 -CipherTransformConstants GCMAES128 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup None -DHGroup Group14 -PassThru -Force"
在 Win10 上使用内置 VPN 连接获得此信息:
由于远程服务器没有响应,因此无法建立计算机与 VPN 服务器之间的网络连接。这可能是因为计算机与远程服务器之间的某个网络设备(例如防火墙、NAT、路由器等)未配置为允许 VPN 连接。请联系管理员或服务提供商,以确定哪些设备可能导致了此问题。
我运行tail -f /var/log/auth.log
并尝试连接。日志中没有写入任何内容。也许没有写入任何内容到 auth.log?我应该检查另一个日志吗?
cat /etc/ipsec.conf
version 2.0
config setup
virtual-private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.42.0/24,%v4:!192.168.43.0/24
uniqueids=no
conn shared
left=%defaultroute
leftid=34.138.177.212
right=%any
encapsulation=yes
authby=secret
pfs=no
rekey=no
keyingtries=5
dpddelay=30
dpdtimeout=120
dpdaction=clear
ikev2=never
ike=aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1,aes256-sha2;modp1024,aes128-sha1;modp1024
phase2alg=aes_gcm-null,aes128-sha1,aes256-sha1,aes256-sha2_512,aes128-sha2,aes256-sha2
ikelifetime=24h
salifetime=24h
sha2-truncbug=no
conn l2tp-psk
auto=add
leftprotoport=17/1701
rightprotoport=17/%any
type=transport
also=shared
conn xauth-psk
auto=add
leftsubnet=0.0.0.0/0
rightaddresspool=192.168.43.10-192.168.43.250
modecfgdns="8.8.8.8 8.8.4.4"
leftxauthserver=yes
rightxauthclient=yes
leftmodecfgserver=yes
rightmodecfgclient=yes
modecfgpull=yes
cisco-unity=yes
also=shared
include /etc/ipsec.d/*.conf
已审阅:
如何在 Ubuntu 20.04 上使用 StrongSwan 设置 IKEv2 VPN 服务器<-- 非常有帮助
ikev2 vpn 无法通过 vpn 连接 win10 连接到自己的服务器
VPN IKev2 连接
Windows 客户端无法连接到 StrongSwan:“EAP-Identity 请求已配置,但不受支持”
更新 1:
我认为这与 IP 地址有关。
root@ikev2vpn:~# service ipsec status
● ipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec
Loaded: loaded (/lib/systemd/system/ipsec.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-04-23 16:01:48 UTC; 3h 17min ago
Docs: man:ipsec(8)
man:pluto(8)
man:ipsec.conf(5)
Process: 1244 ExecStartPre=/usr/local/libexec/ipsec/addconn --config /etc/ipsec.conf --checkconfig (code=exit
Process: 1245 ExecStartPre=/usr/local/libexec/ipsec/_stackmanager start (code=exited, status=0/SUCCESS)
Process: 1490 ExecStartPre=/usr/local/sbin/ipsec --checknss (code=exited, status=0/SUCCESS)
Process: 1491 ExecStartPre=/usr/local/sbin/ipsec --checknflog (code=exited, status=0/SUCCESS)
Main PID: 1502 (pluto)
Status: "Startup completed."
Tasks: 2 (limit: 666)
Memory: 4.5M
CPU: 359ms
CGroup: /system.slice/ipsec.service
└─1502 /usr/local/libexec/ipsec/pluto --leak-detective --config /etc/ipsec.conf --nofork
Apr 23 16:01:48 ikev2vpn pluto[1502]: "ikev2-cp": added IKEv2 connection
Apr 23 16:01:48 ikev2vpn pluto[1502]: listening for IKE messages
Apr 23 16:01:48 ikev2vpn pluto[1502]: Kernel supports NIC esp-hw-offload
Apr 23 16:01:48 ikev2vpn pluto[1502]: adding UDP interface ens4 10.142.0.3:500
Apr 23 16:01:48 ikev2vpn pluto[1502]: adding UDP interface ens4 10.142.0.3:4500
Apr 23 16:01:48 ikev2vpn pluto[1502]: adding UDP interface lo 127.0.0.1:500
Apr 23 16:01:48 ikev2vpn pluto[1502]: adding UDP interface lo 127.0.0.1:4500
我不知道这些接口地址是从哪里来的。我本来期望服务器的公共地址是:500 或 :4500 (so34.138.177.212:500
或34.138.177.212:4500
)。
更新 #2: 我按照 digital ocean 的指南创建了一个新服务器,从头开始尝试。它仍然无法连接。我现在很确定这与此有关:
vusr@vpn2:~$ ip route show default
default via 10.142.0.1 dev ens4 proto dhcp src 10.142.0.4 metric 100
根据文档,10.142.0.1
这是我的服务器 ip,当然这不正确。34.139.167.68
是新服务器的外部 ip。我leftid=34.139.167.68
在 win10 上构建 VPN 时使用了外部 IP
Add-VpnConnection -Name "VPN2" -ServerAddress "34.139.167.68" -TunnelType "IKEv2" -AuthenticationMethod "EAP" -EncryptionLevel "Maximum" -RememberCredential
这不正确吗?
更新 3
我现在正在测试找出我应该使用哪个 IP,因为不同的教程说的是不同的事情。
aw@ipsec-ikev2:~$ ip route show default
default via 138.197.160.1 dev eth0 proto static
aw@ipsec-ikev2:~$ dig @resolver1.opendns.com -t A -4 myip.opendns.com +short
138.197.172.52
在向 Win10 添加 VPN 连接时,我需要将其用作138.197.172.52
服务器名称/ip。但我的 leftid 和 CN(证书)是什么?现在正在测试。
答案1
我需要使用我的公共 IP 在 GCP 或 Digital Ocean 中的实例名称附近找到的位置,但也可以通过以下方式leftid=138.197.172.52
检索138.197.172.52
~$ dig @resolver1.opendns.com -t A -4 myip.opendns.com +short
pki --pub --in ~/pki/private/server-key.pem --type rsa \
| pki --issue --lifetime 1825 \
--cacert ~/pki/cacerts/ca-cert.pem \
--cakey ~/pki/private/ca-key.pem \
--dn "CN=138.197.172.52" --san 138.197.172.52 --san 138.197.172.52 \
--flag serverAuth --flag ikeIntermediate --outform pem \
> ~/pki/certs/server-cert.pem
已连接并正常运行!!