Я следил этот учебник для настройки моей частной 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-клиента.