xl2tp + strongswan ipsec — таймаут xl2tp

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

Я пытаюсь подключиться к ipsec/l2tp vpn из частной сети за nat-роутером. Это работает с разных клиентов Windows, но с моего Linux-микрошлюза (openSuSE 12.3, strongswan 5.1.3, xl2tp 1.3.0) мне не удается подключиться. Первой проблемой было то, что сервер, похоже, обрабатывает только протокол IKE v1. “keyexchange = ikev1 ” в ipsec.conf решило эту проблему. Теперь “ipsec statusall” показывает:

Статус демона IKE charon (strongSwan 5.1.3, Linux 3.16.7-53-desktop, x86_64):
  время работы: 6 минут, с 20 декабря 01:08:01 2016
  malloc: sbrk 2838528, mmap 0, использовано 652816, свободно 2185712
  рабочие потоки: 10 из 16 бездействуют, 6/0/0/0 работают, очередь заданий: 0/0/0/0, запланировано: 3
  загруженные плагины: charon curl soup ldap pkcs11 aes des blowfish rc2 sha1 sha2 md4 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt af-alg fips-prf gmp agent xcbc cmac hmac ctr ccm gcm attr kernel-netlink resolve socket-default farp stroke smp updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic xauth-eap xauth-pam tnc-imc tnc-imv tnc-tnccs tnccs-20 tnccs-11 tnccs-dynamic dhcp certexpire led duplicheck radattr addrblock unity
Слушаемые IP-адреса:
  client_ip
Соединения:
    L2TP-PSK:  %any...server_ip  IKEv1
    L2TP-PSK:   local:  [client_ip] использует аутентификацию с предварительно разделяемым ключом
    L2TP-PSK:   remote: [server_ip] использует аутентификацию с предварительно разделяемым ключом
    L2TP-PSK:   child:  dynamic[udp] === dynamic[udp/l2f] TRANSPORT
Безопасные Ассоциации (1 активна, 0 подключается):
    L2TP-PSK[1]: УСТАНОВЛЕНО 6 минут назад, client_ip[client_ip]...server_ip[server_ip]
    L2TP-PSK[1]: IKEv1 SPIs: a505b49c4edac068_i* 829bf572900386be_r, переаутентификация по предварительно разделенному ключу через 7 часов
    L2TP-PSK[1]: Предложение IKE: AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048

Итак, все выглядит нормально со стороны ipsec. Когда я запускаю протокол l2tp с помощью “echo “c connection_name” > /var/run/xl2tpd/l2tp-control”, я просто вижу некоторые тайм-ауты в системном журнале:

    xl2tpd[16779]: get_call: выделение нового туннеля для хоста server_ip, порт 1701.
    xl2tpd[16779]: Подключение к хосту server_ip, порт 1701
    xl2tpd[16779]: control_finish: тип сообщения (null)(0).  Туннель 0, вызов 0.

xl2tpd[16779]: control_finish: отправка SCCRQ
    xl2tpd[16779]: network_thread: тайм-аут выбора
    ... (5x)
    Превышено максимальное количество попыток для туннеля 55245.  Закрытие.
    network_thread: тайм-аут выбора
    ... (5x)
    Невозможно доставить сообщение о закрытии для туннеля 55245. Уничтожение в любом случае.

Просматривая трафик с помощью

tcpdump host server_ip and port l2tp

показывает только следующее:

12:58:39.221494 IP client_ip.l2f > server_ip.l2f:  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(AS) *BEARER_CAP() *FIRM_VER(1680) *HOST_NAME(my_site) *VENDOR_NAME(xelerance.com) *ASSND_TUN_ID(49091) *RECV_WIN_SIZE(4)

повторяющийся 5 раз, а затем 3 раза:

12:58:44.226892 IP client_ip.l2f > server_ip.l2f:  l2tp:[TLS](0/0)Ns=1,Nr=0 *MSGTYPE(StopCCN) *ASSND_TUN_ID(49091) *RESULT_CODE(1/0 Тайм-аут)

Очевидно, что от сервера нет ответа на пакеты l2tp. Но, как уже говорилось, это работает с несколькими клиентами Windows. Что может быть не так?

Что я могу сделать, чтобы получить больше информации о соединении l2tp?

Я уже включил все опции отладки в xl2tp.conf. Вот мои конфигурационные файлы:

ipsec.conf

conn L2TP-PSK
        keyexchange = ikev1
        authby=secret
        auto=start
        keying=1
        rekey=yes
        ikelifetime=8h
        keylife=1h
        type=transport
        left=%any
        leftprotoport=udp/%any
        right=server_ip
        rightprotoport=udp/l2tp

xl2tp.conf

[global]
контроль доступа = да
файл аутентификации = /etc/xl2tpd/l2tp-secrets
отладка avp = да
отладка сети = да
отладка состояния = да
отладка туннеля = да

[lac connection_name]
lns = server-ip
ppp debug = да
pppoptfile = /etc/ppp/options.xl2tpd.connection_name
length bit = да
требуется аутентификация = да
требуется chap = да
отказаться от pap = да
имя = my_loginname

Мне удалось сделать это работоспособным в моем случае (Ubuntu), используя плагин L2TP NetworkManager и заставив использовать только конкретный алгоритм шифрования, поддерживаемый сервером.

Чтобы узнать, какие алгоритмы поддерживает ваш сервер, вы можете использовать ike-scan, который может находиться в репозитории пакетов или вы можете найти эквивалентный скрипт здесь.

sudo apt-get install ike-scan
sudo ike-scan <address.of.server>

После того как вы узнали поддерживаемые протоколы, вы можете добавить их в конфигурационные файлы или использовать GUI, установив нижеуказанное.

sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp  
sudo apt-get update  
# уберите gnome, если используете Unity/KDE
sudo apt-get install network-manager-l2tp-gnome 

http://blog.z-proj.com/enabling-l2tp-over-ipsec-on-ubuntu-16-04/

http://disq.us/p/1jcput9

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

Решение проблемы таймаута в соединении xl2tp + strongSwan IPsec

Проблема подключения к VPN-серверу с использованием протоколов xl2tp и strongSwan, особенно из частной сети за NAT-роутером, является распространенной задачей. В вашем случае, несмотря на успешное подключение с Windows, вы сталкиваетесь с таймаутами на Linux (openSUSE 12.3 с strongSwan 5.1.3 и xl2tp 1.3.0). Давайте детально разберем вашу проблему и предложим возможные решения.

Понимание проблемы

В исходной конфигурации подключения к VPN все изменения, которые вы сделали (например, установка keyexchange = ikev1 в файле ipsec.conf), привели к успешной установке IPsec-соединения, что подтверждается выводом команды ipsec statusall. Однако, когда дело доходит до подключения xl2tp, вы получаете таймауты при попытках установить туннель, что указывает на отсутствие ответа от сервера на L2TP-запросы.

Анализ конфигурации

Конфигурация ipsec.conf

Ваши настройки IPsec полностью корректны для использования L2TP через IKEv1. Важно удостовериться, что настройки соответствуют ожиданиям VPN-сервера, особенно в плане аутентификации и шифрования.

Конфигурация xl2tp.conf

В вашем xl2tp.conf:

  • Убедитесь, что указанные параметры аутентификации (например, имя пользователя и пароль) совпадают с теми, что использует сервер.
  • Убедитесь, что IP-адрес сервера точно указан без опечаток.
  • Опции ppp в options.xl2tpd.connection_name также могут оказать влияние. Убедитесь, что они настроены для совместимости с сервером.

Рекомендации по отладке

Чтобы получить больше информации о процессе подключения, можно сделать следующее:

  1. Проверка сетевых условий: Убедитесь, что на вашем NAT-роутере разрешены необходимые порты. L2TP использует UDP-порт 1701, что может быть заблокировано. Рассмотрите возможность перенаправления этого порта на ваш клиент.

  2. Использование tcpdump: Вы уже используете tcpdump, чтобы отслеживать трафик, однако следует убедиться, что вы также просматриваете трафик на портах IPsec (UDP 500 и 4500), а не только на L2TP (UDP 1701). Это поможет диагностировать проблемы на этапе установки туннеля.

    sudo tcpdump -i any port 1701 or port 500 or port 4500
  3. Проверка поддерживаемых алгоритмов: Ваша проблема может быть связана с несовпадением параметров шифрования. Попробуйте использовать инструмент ike-scan, чтобы определить поддерживаемые алгоритмы на VPN-сервере:

    sudo apt-get install ike-scan
    sudo ike-scan <address.of.server>

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

  4. Увеличение уровня отладки xl2tpd: Хотя вы уже включили отладку, рассматриваете возможность проверки других уровней журналирования в системных логах, таких как syslog или journalctl, чтобы выявить дополнительные детали.

Заключение

Проблемы с подключением к VPN на базе xl2tp и strongSwan часто вызваны сетевыми или конфигурационными проблемами. Проведение комплексной проверки сетевых соединений, параметров шифрования и подробная отладка на этапе соединения должны помочь в диагностике и устранении проблемы.

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

Удачи в решении вашей проблемы!

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

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