LINUX.ORG.RU
ФорумAdmin

strongswan + xl2tpd и клиенты macOS/iOS не дружат

 ,


0

1

Всем привет.

Вроде перерыл кучу мануалов и факов, но всё равно не работает.
Точнее не так. Работает с Windows 7/10 и Android (на версию не обращал внимания). А вот с macOS ноутами не работает.

Задача настроить IPSec PSK + l2tpd. Какая-то тонкость с macOS но не могу допереть какая....

Получаю ЛОГ следующего вида:

апр 07 18:30:17 my-server charon[3767]: 06[NET] received packet: from client.ip.v4[500] to my.server.ip.v4[500] (788 bytes)
апр 07 18:30:17 my-server charon[3767]: 06[ENC] parsed ID_PROT request 0 [ SA V V V V V V V V V V V V ]
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received NAT-T (RFC 3947) vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-08 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-07 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-06 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-05 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-04 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-03 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-02 vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received draft-ietf-ipsec-nat-t-ike-02\n vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received FRAGMENTATION vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] received DPD vendor ID
апр 07 18:30:17 my-server charon[3767]: 06[IKE] client.ip.v4 is initiating a Main Mode IKE_SA
апр 07 18:30:17 my-server charon[3767]: 06[IKE] client.ip.v4 is initiating a Main Mode IKE_SA
апр 07 18:30:17 my-server charon[3767]: 06[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
апр 07 18:30:17 my-server charon[3767]: 06[ENC] generating ID_PROT response 0 [ SA V V V V ]
апр 07 18:30:17 my-server charon[3767]: 06[NET] sending packet: from my.server.ip.v4[500] to client.ip.v4[500] (160 bytes)
апр 07 18:30:17 my-server charon[3767]: 07[NET] received packet: from client.ip.v4[500] to my.server.ip.v4[500] (228 bytes)
апр 07 18:30:17 my-server charon[3767]: 07[ENC] parsed ID_PROT request 0 [ KE No NAT-D NAT-D ]
апр 07 18:30:17 my-server charon[3767]: 07[IKE] remote host is behind NAT
апр 07 18:30:17 my-server charon[3767]: 07[ENC] generating ID_PROT response 0 [ KE No NAT-D NAT-D ]
апр 07 18:30:17 my-server charon[3767]: 07[NET] sending packet: from my.server.ip.v4[500] to client.ip.v4[500] (244 bytes)
апр 07 18:30:17 my-server charon[3767]: 08[NET] received packet: from client.ip.v4[4500] to my.server.ip.v4[4500] (108 bytes)
апр 07 18:30:17 my-server charon[3767]: 08[ENC] parsed ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ]
апр 07 18:30:17 my-server charon[3767]: 08[CFG] looking for pre-shared key peer configs matching my.server.ip.v4...client.ip.v4[192.168.0.100]
апр 07 18:30:17 my-server charon[3767]: 08[CFG] selected peer config "l2tpvpn"
апр 07 18:30:17 my-server charon[3767]: 08[IKE] IKE_SA l2tpvpn[2] established between my.server.ip.v4[my-server.domain]...client.ip.v4[192.168.0.100]
апр 07 18:30:17 my-server charon[3767]: 08[IKE] IKE_SA l2tpvpn[2] established between my.server.ip.v4[my-server.domain]...client.ip.v4[192.168.0.100]
апр 07 18:30:17 my-server charon[3767]: 08[ENC] generating ID_PROT response 0 [ ID HASH ]
апр 07 18:30:17 my-server charon[3767]: 08[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:30:20 my-server charon[3767]: 16[NET] received packet: from client.ip.v4[4500] to my.server.ip.v4[4500] (108 bytes)
апр 07 18:30:20 my-server charon[3767]: 16[IKE] received retransmit of request with ID 0, retransmitting response
апр 07 18:30:20 my-server charon[3767]: 16[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:30:24 my-server charon[3767]: 16[NET] received packet: from client.ip.v4[4500] to my.server.ip.v4[4500] (108 bytes)
апр 07 18:30:24 my-server charon[3767]: 16[IKE] received retransmit of request with ID 0, retransmitting response
апр 07 18:30:24 my-server charon[3767]: 16[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:30:27 my-server charon[3767]: 13[NET] received packet: from client.ip.v4[4500] to my.server.ip.v4[4500] (108 bytes)
апр 07 18:30:27 my-server charon[3767]: 13[IKE] received retransmit of request with ID 0, retransmitting response
апр 07 18:30:27 my-server charon[3767]: 13[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:30:39 my-server charon[3767]: 05[NET] received packet: from client.ip.v4[4500] to my.server.ip.v4[4500] (108 bytes)
апр 07 18:30:39 my-server charon[3767]: 05[IKE] received retransmit of request with ID 0, retransmitting response
апр 07 18:30:39 my-server charon[3767]: 05[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:30:47 my-server charon[3767]: 09[IKE] sending DPD request
апр 07 18:30:47 my-server charon[3767]: 09[ENC] generating INFORMATIONAL_V1 request 2116794170 [ HASH N(DPD) ]
апр 07 18:30:47 my-server charon[3767]: 09[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:31:17 my-server charon[3767]: 14[IKE] sending DPD request
апр 07 18:31:17 my-server charon[3767]: 14[ENC] generating INFORMATIONAL_V1 request 2307359010 [ HASH N(DPD) ]
апр 07 18:31:17 my-server charon[3767]: 14[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:31:47 my-server charon[3767]: 11[IKE] sending DPD request
апр 07 18:31:47 my-server charon[3767]: 11[ENC] generating INFORMATIONAL_V1 request 833650917 [ HASH N(DPD) ]
апр 07 18:31:47 my-server charon[3767]: 11[NET] sending packet: from my.server.ip.v4[4500] to client.ip.v4[4500] (92 bytes)
апр 07 18:32:17 my-server charon[3767]: 13[JOB] DPD check timed out, enforcing DPD action

Ответ на: комментарий от anc

Ничего. До него дело видимо не доходит... Пробовал удалять лог, новый не появляется. Коннекчусь виндой - есть лог, с отладкой как положено.

Spider55 ()
Ответ на: комментарий от anc
# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
        # strictcrlpolicy=yes
        cachecrls=yes
        uniqueids=never
        #charondebug="dmn 2, mgr 2, ike 2, chd 2, job 2, cfg 2, knl 2, net 2, enc2, lib 2"

conn %default
        keyingtries=%forever
        # enables IKE fragmentation
        fragmentation=yes
        dpdaction=clear
        # dpdtimeout is not honored for ikev2. For IKEv2, every message is used
        # to determine the timeout, so the generic timeout value for IKEv2 messages
        # is used.
        dpdtimeout=90s
        dpddelay=30s
        left=%any

        right=%any
        rightid=%any
        rekey=no

conn l2tpvpn
        auto=add
        type=transport
        keyingtries=1
        keyexchange=ike
        reauth=no
        leftprotoport=udp/l2tp
        rightprotoport=udp/%any
        rightsubnet=%dynamic
        #ike = aes256-sha2_384-modp1024, 3des-sha2_256-modp1024
        ike=aes128-sha256-modp3072,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! # Win7 is aes256, sha-1, modp1024; iOS is aes256, sha-256, modp1024; macOS is 3DES, sha-1, modp1024
        esp=aes128-sha256-modp3072,aes256-sha256,aes256-sha1,3des-sha1! # Win 7 is aes256-sha1, iOS is aes256-sha256, macOS is 3des-shal1
        mark=%unique
        authby=secret
        leftauth=psk
        rightauth=psk
        leftid=@my.server.host.name


conn ikev2vpn
        auto=add
        compress=no
        type=tunnel
        keyexchange=ikev2
        ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
        esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1!
        forceencaps=yes
        dpddelay=300s
        leftauth=pubkey
        leftcert=my.server.host.name.cer
        leftsendcert=always
        leftsubnet=192.168.10.0/24
        rightauth=eap-mschapv2
        rightsourceip=%dhcp
        rightsendcert=never
        eap_identity=%identity

conn ikev2vpn-macos
        also="ikev2vpn"
        leftid=@my.server.host.name

#include /var/lib/strongswan/ipsec.conf.inc



Хочу заметить, что IKEv2 у меня получилось заставить работать с Let's Encrypt сертификатом. Работает ИЗЮМИТЕЛЬНО, но только с macOS :)))) с Windows отказывается работать. Оно издевается? :)
В отличии от L2TP вариант с IKEv2 даже более «изящен», он получает адреса с dhcp на ровне с локальной сетью. Это нравится прям. Но вот windows чё-то теперь не хочет.

PS. Лопачу форум с целью найти решение, и почти везде anc. Респект. Прям львиное терпение и самоотдача.

Spider55 ()
Последнее исправление: Spider55 (всего исправлений: 3)
Ответ на: комментарий от Spider55

Хочу заметить, что IKEv2 у меня получилось заставить работать с Let's Encrypt сертификатом.

А я вот никогда не пробовал, у меня самоподписные. :)

Работает ИЗЮМИТЕЛЬНО, но только с macOS :)))) с Windows отказывается работать. Оно издевается? :)

Возможно :) В целом одно другому не мешает. У меня много конфигураций и с сертами и по psk, судя по вашему ответу, вы уже нашли мои ответы :) , где-то я прикладывал свои варианты конфигов.

anc ★★★★★ ()
Ответ на: комментарий от anc

Рано радовался, а вот другой юзверь с мака не может подключится к этой настройке. Симптомы те же, что и в первый раз. Фигня какая-то. Что всё так шатко то....

Выглядит так, буд-то клиентам не нравится фрагментированный пакет. видать NAT со стороны клиентов не в состоянии это пережить. Хотя при чём тут NAT... пакеты то «отдельные». Сервер разбил ответ на 2 пакета и отправил как 2 разных пакета. Для НАТа со стороны клиента это 2 разных пакета, а не один большой да ещё и фрагментированный.

апр 07 23:31:41 my-server charon[28669]: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
апр 07 23:31:41 my-server charon[28669]: 15[ENC] splitting IKE message (1788 bytes) into 2 fragments
апр 07 23:31:41 my-server charon[28669]: 15[ENC] generating IKE_AUTH response 1 [ EF(1/2) ]
апр 07 23:31:41 my-server charon[28669]: 15[ENC] generating IKE_AUTH response 1 [ EF(2/2) ]
апр 07 23:31:41 my-server charon[28669]: 15[NET] sending packet: from 176.210.100.6[4500] to 92.126.216.86[4500] (960 bytes)
апр 07 23:31:41 my-server charon[28669]: 15[NET] sending packet: from 176.210.100.6[4500] to 92.126.216.86[4500] (896 bytes)

Spider55 ()
Последнее исправление: Spider55 (всего исправлений: 2)
Ответ на: комментарий от Spider55

ТАААК. Этот момент я победил. Винда теперь коннектится на отлично по IKEv2. Проблема была в отсутвии CA-сертификата Let's Encrypt в папках ipsec. Я добавил символическую ссылку, а оказывается ipsec её игнорирует. А жаль...
как оказалось продукция огрызка запрашивает публичные корневые CA сертификаты, если таковых не знает. Винда же игнорирует это.
Одной проблемой меньше.

Spider55 ()
Ответ на: комментарий от Spider55

Проблема была в отсутвии CA-сертификата Let's Encrypt в папках ipsec. Я добавил символическую ссылку, а оказывается ipsec её игнорирует.

Думаю дело не в симлинке, а в правах.

Одной проблемой меньше.

Ещё какая-то осталась? Раз все заработало :)

anc ★★★★★ ()
Ответ на: комментарий от anc

ну IPSec+l2tp так и не работает на некоторых MAC, но фиг с ними.

И у некоторых MAC не коннектится к серверу по host. Но это уже никак не относится к ipsec. Это надо где-то спрашивать тематические macOS видимо. Этот кусок г**** если ему указать в интерфейсе hostname в качестве точки соединения не пытается к нему коннектится. В tcpdump даже попытки нет, а сразу ошибка в интерфейсе мол не удалось. В то же время nslookup и ping с этой же железки отлично резолвят адрес и делают свое дело. Ну и по IP он всё таки работает.

Spider55 ()
Ответ на: комментарий от Spider55

Интересный момент. Много маков, замечено такого косяка не было. Скорее наоборот от id когда указан fqdn тут бывало но не во всех вариациях.

anc ★★★★★ ()
Ответ на: комментарий от anc

Простите, но ещё не всё :)

А это... а как это всё работает? :)))) Как теперь роутить трафик? Как файрволить?
Вот поднялся ipsec ikev2 тунель. Даже по DHCP выдал IP. И всё вроде работает. Но... эм... сетевого интерфейса нового нет. Как роутится этот трафиГ? Со стороны КЛИЕНТА всё доступно, но вот клиент не сильно....

tcpdump внутри этого ipsec возможен? А как? :)

Spider55 ()
Ответ на: комментарий от Spider55

Как роутится этот трафиГ?

ip xfrm

Как файрволить?

iptables -m policy --pol ipsec .....
работает ли в варианте nftables честно не знаю.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от anc

спасибо. Буду читать. Не привычно конечно.... Интерфейсы были роднее :) ppp0 там всякие... или tun0.

Spider55 ()
28 мая 2020 г.

полетело в связке libreswan + xl2tpd

conn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 dpddelay=10 dpdtimeout=20 dpdaction=clear forceencaps=yes also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=1.1.1.1 leftprotoport=17/1701 right=%any rightprotoport=17/%any

1.1.1.1 замените на свой внешний IP адрес сервера

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.