IKEv2 VPN на Ubuntu не удается подключиться.

Вопрос или проблема

Я следовал этой статье, чтобы настроить IKEv2 VPN на AWS Lightsail VPS с Ubuntu 24.04.1

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-22-04

Когда я пытаюсь подключиться к VPN с macOS, используя имя пользователя, пароль и сертификат, я получаю эти ошибки в консоли macOS:

ошибка 10:49:12.549339+0800 NEIKEv2Provider IKEv2Session[1, B93E8A0C8B3195AE-0000000000000000] Не удалось получить ответ IKE SA Init (connect)
ошибка 10:49:13.082739+0800 NEIKEv2Provider IKEv2Session[2, A655498A54D72B0C-0000000000000000] Не удалось получить ответ IKE SA Init (connect)
ошибка 10:49:18.415019+0800 neagent __plugin endUsing для '46B3D0ED-0FA1-4378-9F8E-668F937D41EF' вернул ошибку: [u 200C1217-B935-54B8-90D4-6D1B124F4EF6:m (null)] [com.apple.NetworkExtension.IKEv2Provider(1.0)] endUsingRequest: вызвано с неизвестным/с истекшим сроком запросом [010E220F-2B88-45C1-831B-22169228BA28]
ошибка 10:49:35.988519+0800 runningboardd [xpcservice<com.apple.NetworkExtension.IKEv2Provider([osservice<com.apple.neagent(501)>:18076:18076])(501)>{vt hash: 0}:29644] Мемори статус не удалось из-за неожиданной ошибки: Неправильный аргумент (22)
ошибка 10:49:36.015419+0800 NEIKEv2Provider Инициализация; внешняя подсистема UIKit_PKSubsystem отказалась от настройки
ошибка 10:49:36.031420+0800 NEIKEv2Provider не удается открыть файл на строке 49450 из [1b37c146ee]
ошибка 10:49:36.031435+0800 NEIKEv2Provider os_unix.c:49450: (2) open(/private/var/db/DetachedSignatures) - Файл или каталог не существует
ошибка 10:50:07.073364+0800 NEIKEv2Provider IKEv2Session[1, 45029BCAF6EA8C7E-0000000000000000] Не удалось получить ответ IKE SA Init (connect)
ошибка 10:50:38.102365+0800 NEIKEv2Provider IKEv2Session[2, 05C87694B50DCD36-0000000000000000] Не удалось получить ответ IKE SA Init (connect)
ошибка 10:50:38.104871+0800 NEIKEv2Provider Не удалось найти подходящий адрес, путь поддерживает IPv4 да IPv6 нет
ошибка 10:51:09.134447+0800 NEIKEv2Provider IKEv2Session[3, 1578A7063FB21322-0000000000000000] Не удалось получить ответ IKE SA Init (connect)
ошибка 10:51:09.137326+0800 NEIKEv2Provider Не удалось найти подходящий адрес, путь поддерживает IPv4 да IPv6 нет
ошибка 10:51:09.146182+0800 NEIKEv2Provider [Extension com.apple.NetworkExtension.IKEv2Provider]: Запущено с ошибкой VPN сервер не ответил.
ошибка 10:51:14.169812+0800 neagent __plugin endUsing для 'DEC188BD-2719-407B-A2A7-2ABBD747352A' вернул ошибку: [u 200C1217-B935-54B8-90D4-6D1B124F4EF6:m (null)] [com.apple.NetworkExtension.IKEv2Provider(1.0)] endUsingRequest: вызвано с неизвестным/с истекшим сроком запросом [C6A95481-223A-46AB-A593-CF9B06E84B59]

На сервере ничего не записывается в /var/log/syslog, когда я пытаюсь подключиться к VPN. Я могу подключиться к серверу через ssh как обычно с моего Mac, только VPN, кажется, не работает.

Что я могу сделать, чтобы продолжать диагностировать, почему VPN не подключается?


Вот /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
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=адрес_моего_сервера
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never
    eap_identity=%identity
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

/etc/ipsec.secrets

: RSA "server-key.pem"
myusername : EAP "mypassword"

/etc/ufw/sysctl.conf

net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/default/accept_redirects=0
net/ipv6/conf/all/accept_redirects=0
net/ipv6/conf/default/accept_redirects=0

net/ipv4/icmp_echo_ignore_broadcasts=1
net/ipv4/icmp_ignore_bogus_error_responses=1
net/ipv4/icmp_echo_ignore_all=0

net/ipv4/conf/all/log_martians=0
net/ipv4/conf/default/log_martians=0



net/ipv4/ip_forward=1
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
net/ipv4/ip_no_pmtu_disc=1

/etc/ufw/before.rules


*nat
-A POSTROUTING -s 10.10.10.0/24 -o ens5 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o ens5 -j MASQUERADE
COMMIT

*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o ens5 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT

*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]

-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP

-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT

-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT

-A ufw-before-input -j ufw-not-local

-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN

-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN

-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN

-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP

-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT

-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT

COMMIT

sudo ufw status

Статус: активен

Для Действие Из
-- ------ ----
OpenSSH РАЗРЕШИТЬ Откуда угодно                  
500,4500/udp РАЗРЕШИТЬ Откуда угодно                  
OpenSSH (v6) РАЗРЕШИТЬ Откуда угодно (v6)             
500,4500/udp (v6) РАЗРЕШИТЬ Откуда угодно (v6) 

Ответ или решение

Конфигурация и установка VPN IKEv2 иногда могут вызывать проблемы, особенно в случае настройки на серверах Linux, таких как Ubuntu, и при подключении клиентов macOS. В данном случае вы сталкиваетесь с проблемой, когда VPN-соединение не удается установить с использованием стандартных методов подключения. Рассмотрим возможные причины и пути их устранения.


Теория:

Первая задача — понять, как работает IKEv2 VPN и как он должен быть правильно настроен. IKEv2 — это протокол обмена ключами, который используется для настройки защищенного обмена данными. Он обычно используется в сочетании с IPsec для создания безопасных туннелей. У Ubuntu, будучи сервером, установлен framework StrongSwan для поддержки IKEv2, который также требует правильной настройки конфигурационных файлов. Эти файлы — основная точка, где могут возникнуть проблемы, препятствующие успешной установке соединения.

Проблемы, которые могут возникнуть:

  1. Сертификаты и ключи. Сертификаты и ключи должны быть корректно созданы и размещены. Например, серверный сертификат должен быть подписан доверенным центром сертификации, либо вашим собственным корневым сертификатом, который клиент должен доверять.

  2. Настройки сети и брандмауэра. Все необходимые порты должны быть открыты. Для IKEv2 это обычные порты UDP 500 и 4500. Также следует убедиться, что сетевые интерфейсы правильно настроены и поддерживают пересылку пакетов между разными сегментами сети.

  3. Конфигурационные файлы. Очевидной проблемой может быть неправильное format или ошибки в конфигурационных файлах: /etc/ipsec.conf, /etc/ipsec.secrets и других связанных файлах, таких как ufw конфигурации.

  4. Журналы и отладка. Отсутствие записей в журналах может указывать на проблемы с запуском службы или отсутствие попыток соединения. Убедитесь, что в конфигурации включено ведение журналов.


Пример:

В вашей ситуации, следующие действия помогут в диагностике:

  1. Проверка журналов на сервере. Начните с проверки наличия записей в /var/log/syslog. Возможно, служба charon (компонент StrongSwan) не запускается или не регистрирует попытки подключения.

  2. Проверка конфигурации StrongSwan. Ваша конфигурация ipsec.conf должна быть тщательно проверена. Например, убедитесь, что все сертификаты, упомянутые в leftcert, существуют и правильно читаются StrongSwan. Тем не менее, ваш конфиг выглядит правильно: left=%any, right=%any и другие параметры кажутся корректными.

  3. Сетевые настройки и UFW. Проверьте правила UFW и подтвердите, что порты 500 и 4500 действительно открыты для входящего и исходящего трафика. Воспользуйтесь командой sudo ufw status numbered для более детальной картины, исключите возможность конфликтов с другими правилами.

  4. Команды проверки. Используйте sudo strongswan start для перезапуска службы и sudo ipsec status для проверки состояния соединений IPsec.

  5. Отладка на стороне клиента. В на клиента, особенно если вы используете macOS, можно также проверить наличие сетевых ошибок в системных утилитах. Например, командой socat можно отладить соединение на UDP-порту: socat UDP4-LISTEN:500,fork -. Это поможет исключить проблемы с маршрутизацией.

  6. Параметры протоколов. Проверьте конфигурацию IKE и ESP для поддержки шифров, совместимых с вашим клиентом. Возможно, macOS требует других параметров IKE/ESP, чем те, что вы настроили.


Применение:

Практическое исправление заключается в следующем:

  • Перезапустите службу StrongSwan и убедитесь, что она начала записывать логи о попытках подключения.
  • Проверьте правильность сертификатов и их соответствие серверу и клиенту.
  • Подтвердите, что на клиентах macOS установлены и доверены корневые сертификаты, из которого был подписан серверный сертификат.
  • Убедитесь, что у клиента правильные сетевые параметры (например, в сертификатах rightid клиента и leftid сервера должны совпадать).
  • Еще раз проверьте все параметры в sysctl.conf и ufw — убедитесь, что включено пересылка IP-пакетов (net/ipv4/ip_forward=1), что необходимо для работы VPN.
  • Если возможно, временно отключите UFW и попробуйте подключиться, чтобы изолировать проблему безопасности.
  • Убедитесь, что не только порты, но и IP-пакеты (например, ESP) разрешены в брандмауэре.

Если все эти шаги приведут к успеху, последней задачей станет документирование процесса и выявленных проблем для последующего контроля и предотвращения повторений в будущем. Если они не помогли, вероятно, стоит обратиться за поддержкой к сообществу StrongSwan или вашему провайдеру облачных услуг.

Оцените материал
Добавить комментарий

Капча загружается...