VPN:无法使用 ipsec/strongswan 访问我自己的网关

VPN:无法使用 ipsec/strongswan 访问我自己的网关

我已经关注本教程使用 StrongSwan 和 IPSec 设置我的私人 VPN。效果非常好。

但是当我尝试直接连接到我的网关/服务器(使用 SSH)时,连接不会通过 VPN。

如果我在我的客户端中查找表格,我会看到:

$ netstat -nr

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            link#19            UCS            85        0  ipsec0
default            172.21.15.254      UGScI          18        0     en0
8.8.8.8            link#19            UHWIi           7       33  ipsec0
10.10.10.1         10.10.10.1         UH              0        0  ipsec0
13.32.153.9        link#19            UHW3I           0        3  ipsec0     10
17.248.144.80      link#19            UHWIi           2       22  ipsec0
17.252.76.33       link#19            UHWIi           1       40  ipsec0
18.184.56.218      link#19            UHWIi           1        1  ipsec0
54.37.155.XX       172.21.15.254      UGHS          397      197     en0
...

当我连接到 VPN 时,最后一行添加到我的客户端。54.37.155.XX 是我服务器的公共地址。我不明白将这一行添加到我的路由表的过程是什么。

如果我删除最后一行,它就可以正常工作:

sudo route -n delete 54.37.155.XX 172.21.15.254

我怀疑/etc/ipsec.conf配置文件中缺少一条规则来添加此路由条目,但我无法确定是哪一个:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    ike=aes256-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha1,3des-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@server_name_or_ip
    leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightdns=8.8.8.8,8.8.4.4
    rightsourceip=10.10.10.0/24
    rightsendcert=never
    eap_identity=%identity

任何想法 ?

答案1

这是 macOS/iOS 客户端的一个已知问题。客户端会安装一条到 VPN 服务器的直接路由,以防止 IKE 流量通过 VPN 进行隧道传输。但是,这意味着您也无法通过 VPN 通过 VPN 服务器的公共 IP 访问其他服务。

解决方法是,您可以从分配给客户端的虚拟 IP 所用的子网中为服务器分配一个虚拟 IP。例如,如果您配置了保留 IP,rightsourceip=10.10.10.2/24则可以将保留 IP 分配10.10.10.1给服务器的一个接口,然后您就应该能够从 VPN 客户端访问该 IP。

答案2

正如@ecdsa所建议的,我们需要更改ipsec conf:

rightsourceip=10.10.10.2/24

将这些行添加到/etc/network/interfaces.d/50-cloud-init.cfg

iface ens3 inet static
    address 10.10.10.1/24

之后,我们可以使用 10.10.10.1 地址通过 VPN 连接到服务器

相关内容