Назад | Перейти на главную страницу

VPN: не могу подключиться к собственному шлюзу с помощью ipsec / strongswan

Я следил этот учебник для настройки моей частной VPN с использованием StrongSwan и IPSec. Работает очень хорошо.

Но когда я пытаюсь подключиться напрямую к моему шлюзу / серверу (используя 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 добавляет эту запись маршрутизации, но я не могу понять, какая именно:

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

Любая идея ?

Как предложил @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

После этого мы можем подключиться к серверу через vpn, используя адрес 10.10.10.1.

Это известная проблема с клиентами macOS / iOS. Там клиенты устанавливают прямой маршрут к VPN-серверу, чтобы предотвратить туннелирование трафика IKE через VPN. Однако это означает, что вы также не можете получить доступ к другим службам через общедоступный IP-адрес VPN-сервера через VPN.

В качестве обходного пути вы можете назначить виртуальный IP-адрес серверу из подсети, которую вы использовали для виртуальных IP-адресов, назначенных клиентам. Например, если вы настроите rightsourceip=10.10.10.2/24 тогда вы можете назначить зарезервированный 10.10.10.1 к одному из интерфейсов сервера, и вы сможете получить доступ к этому IP-адресу из своего VPN-клиента.