L2TP: глухое молчание

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Abyrvalg
мл. сержант
Сообщения: 113
Зарегистрирован: 2009-03-04 10:24:44

L2TP: глухое молчание

Непрочитанное сообщение Abyrvalg » 2017-06-10 16:33:21

Привет тебе, достопочтенный All!

Буду краток. Есть машинка с FreeBSD 11.0-RELEASE-p1. Пытаюсь соорудить на ней VPN-сервер с шифрованным каналом связи. Для этих целей за неимением лучшего выбрал L2TP + IPSec. Ставил по этой инструкции, но, говоря честно. ядро не пересобирал, потому что обновления у меня бинарные и очень стрёмно всё это трогать... mpd5 и racoon ставил из портов (с помощью portmaster); полагаю, что все нужные патчи там применились.

В /etc/pf.conf прописаны правила:

Код: Выделить всё

pass in on $ext_if proto tcp from any to any port 1723 keep state
pass in on $ext_if proto { tcp, udp } from any to any port 1701 keep state
pass in on $ext_if proto udp from any to any port isakmp keep state
pass in on $ext_if proto udp from any to any port 4500 keep state
pass in on $ext_if proto esp from any to any keep state


На роутере тоже всё как надо прописано. Доступность всех этих портов из инета проверял open port checker'ом.

А теперь картина маслом. Пытаюсь из-под клиента (Windows 7) законнектиться по VPN к серверу. Подключение виснет на стадии "Установка связи с ... с использованием "WAN Miniport (L2TP)"". Висит, висит, а потом вываливает ошибку 809: мол, удалённый сервер не отвечает.

Смотрю ситуацию с клиентской и серверной стороны. С клиентской - Wireshark'ом. И вот что я вижу.

wireshark.png


wireshark2.png


Непрерывная долбёжка от клиента с пакетами SCCRQ (запрос на начало контрольного соединения). А в ответ - ни ответа, ни привета.

Может, на самом деле пакеты не доходят? Но нет. Вот tcpdump на серверной стороне:

Код: Выделить всё

$ sudo tcpdump -i nfe0 -vv "host xxx.yyy.zz.aa and not port 22"
tcpdump: listening on nfe0, link-type EN10MB (Ethernet), capture size 262144 bytes
15:27:43.700152 IP (tos 0x0, ttl 118, id 27197, offset 0, flags [none], proto UDP (17), length 128)
    client.host.ru.l2f > 192.168.1.100.l2f: [udp sum ok]  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(S) *BEARER_CAP() FIRM_VER(1537) *HOST_NAME(User-) VENDOR_NAME(Microsoft) *ASSND_TUN_ID(7) *RECV_WIN_SIZE(8)
15:27:44.702122 IP (tos 0x0, ttl 118, id 27201, offset 0, flags [none], proto UDP (17), length 128)
    client.host.ru.l2f > 192.168.1.100.l2f: [udp sum ok]  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(S) *BEARER_CAP() FIRM_VER(1537) *HOST_NAME(User-) VENDOR_NAME(Microsoft) *ASSND_TUN_ID(7) *RECV_WIN_SIZE(8)
15:27:46.714435 IP (tos 0x0, ttl 118, id 27203, offset 0, flags [none], proto UDP (17), length 128)
    client.host.ru.l2f > 192.168.1.100.l2f: [udp sum ok]  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(S) *BEARER_CAP() FIRM_VER(1537) *HOST_NAME(User-) VENDOR_NAME(Microsoft) *ASSND_TUN_ID(7) *RECV_WIN_SIZE(8)
15:27:50.722921 IP (tos 0x0, ttl 118, id 27206, offset 0, flags [none], proto UDP (17), length 128)
    client.host.ru.l2f > 192.168.1.100.l2f: [udp sum ok]  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(S) *BEARER_CAP() FIRM_VER(1537) *HOST_NAME(User-) VENDOR_NAME(Microsoft) *ASSND_TUN_ID(7) *RECV_WIN_SIZE(8)
15:27:58.726083 IP (tos 0x0, ttl 118, id 27213, offset 0, flags [none], proto UDP (17), length 128)
    client.host.ru.l2f > 192.168.1.100.l2f: [udp sum ok]  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(S) *BEARER_CAP() FIRM_VER(1537) *HOST_NAME(User-) VENDOR_NAME(Microsoft) *ASSND_TUN_ID(7) *RECV_WIN_SIZE(8)
15:28:08.741420 IP (tos 0x0, ttl 118, id 27223, offset 0, flags [none], proto UDP (17), length 128)
    client.host.ru.l2f > 192.168.1.100.l2f: [udp sum ok]  l2tp:[TLS](0/0)Ns=0,Nr=0 *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(S) *BEARER_CAP() FIRM_VER(1537) *HOST_NAME(User-) VENDOR_NAME(Microsoft) *ASSND_TUN_ID(7) *RECV_WIN_SIZE(8)


(192.168.1.100 - это адрес внешнего интерфейса сервера; и клиент, и сервер сидят за своими NAT'ами)
(client.host.ru - доменное имя клиента (разумеется, изменено), ему соответствует белый IP-адрес)

Итак, пакеты от клиента до сервера доходят. Но они не обрабатываются. Притом что:

Код: Выделить всё

$ tail /var/log/mpd5.log
Jun 10 13:11:22 server mpd: Multi-link PPP daemon for FreeBSD
Jun 10 13:11:22 server mpd:
Jun 10 13:11:22 server mpd: process 44442 started, version 5.8 (root@server.int 22:45  7-Jun-2017)
Jun 10 13:11:22 server mpd: CONSOLE: listening on 127.0.0.1 5005
Jun 10 13:11:22 server mpd: web: listening on 0.0.0.0 5006
Jun 10 13:11:22 server mpd: L2TP: waiting for connection on 192.168.1.100 1701


Почему mpd никак не реагирует на поступающие пакеты? Что я делаю не так?
Последний раз редактировалось f_andrey 2017-06-10 21:32:19, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

Abyrvalg
мл. сержант
Сообщения: 113
Зарегистрирован: 2009-03-04 10:24:44

L2TP: глухое молчание

Непрочитанное сообщение Abyrvalg » 2017-06-13 20:14:08

Братцы, неужели никто не настраивал VPN-сервер на Фре?

Abyrvalg
мл. сержант
Сообщения: 113
Зарегистрирован: 2009-03-04 10:24:44

L2TP: глухое молчание

Непрочитанное сообщение Abyrvalg » 2017-06-19 15:28:36

Продолжение истории... В общем, до mpd дело не доходит. Всё застревает на racoon. Поэтому я привожу конфиги и куски из лога с нижайшей просьбой к сведущим людям взглянуть и подсказать, где грабельки...

/var/log/racoon.log прицеплен отдельным вложением.
178.254.254.254 - vpn-сервер
217.99.99.99 - vpn-клиент
(ip-адреса изменены)
Оба под nat'ом.
Аутентификацию пытаюсь провернуть по парольной фразе.

/usr/local/etc/racoon/racoon.conf

Код: Выделить всё

path pre_shared_key "/usr/local/etc/racoon/psk.txt";
log debug;

padding
{
        maximum_length 20; # maximum padding length.
        randomize off; # enable randomize length.
        strict_check off; # enable strict check.
        exclusive_tail off; # extract last one octet.
}

listen
{
        isakmp 192.168.1.100;
        isakmp_natt 192.168.1.100 [4500];
        #isakmp 192.168.1.100 [500];
        #admin [7002]; # administrative port for racoonctl.
        #strict_address; # requires that all addresses must be bound.
}

timer
{
        # These value can be changed per remote node.
        counter 5; # maximum trying count to send.
        interval 20 sec; # maximum interval to resend.
        persend 1; # the number of packets per send.
        # maximum time to wait for completing each phase.
        phase1 30 sec;
        phase2 15 sec;
}

remote anonymous
{
        exchange_mode main, aggressive;
        situation identity_only;
        lifetime time 24 hour;
        nonce_size 16;
        initial_contact on;
        proposal_check obey; # obey, strict, or claim
        ike_frag on;
        #generate_policy on;
        nat_traversal on;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
}

sainfo anonymous
{
        pfs_group 2;
        encryption_algorithm 3des, des;
        authentication_algorithm hmac_sha1, hmac_md5;
        compression_algorithm deflate;
}


/usr/local/etc/mpd5/mpd.conf

Код: Выделить всё

startup:
        # configure mpd users
        set user admin password
        # configure the console
        set console self 127.0.0.1 5005
        set console open
        # configure the web server
        set web self 0.0.0.0 5006
        set web open
        log +ALL -EVENTS -FRAME

default:
        load l2tp_server

l2tp_server:
        set ippool add priv_access 192.168.1.200 192.168.1.250
        create bundle template C
        set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 192.168.1.200/30 ippool priv_access
        set ipcp dns 192.168.10.254
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set mppc yes stateless
        create link template N l2tp
        set link action bundle C
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 10 60
        set link mtu 1460
        set l2tp self 192.168.1.100
        set link enable incoming


Не оставьте в беде...
Вложения
racoon.txt
Лог-файл.
(100.17 КБ) 9 скачиваний

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 34889
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

L2TP: глухое молчание

Непрочитанное сообщение Alex Keda » 2017-06-19 22:21:07

я l2tp с шифрованием так и не смог завести
правда, тестили яблоком - я под него и делал

склоняюсь выделить из личных запасов какойнить железный шлюз, типа ZyWall - благо валяется который год ненужный - и забыть как о страшном сне...
Убей их всех! Бог потом рассортирует...

Abyrvalg
мл. сержант
Сообщения: 113
Зарегистрирован: 2009-03-04 10:24:44

L2TP: глухое молчание

Непрочитанное сообщение Abyrvalg » 2017-06-20 23:41:05

А есть ли какие-либо программные альтернативы l2tp в плане создания шифрованного канала связи между двумя компами? Я плохо в этом соображаю :(

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

L2TP: глухое молчание

Непрочитанное сообщение gumeniuc » 2017-06-25 23:27:04

Я могу нести полную ересь, но если мне не изменяет память, были на БСД некоторые проблемы с UDP checksum.
Для решения проблемы необходимо было:
- пропатчиться и пересобрать ядро
- в sysctl отключить опцию проверки UDP checksum (net.inet.udp.checksum).

Также помню баг в ракуне...(мать его)... при отключении клиента не удалялись IPSecSA. Соответственно при переподключении клиента шла ругань на разные SPI. Решалось какими-то патчами ракуна. Я остался очень недоволен этим решением и со временем (к моему большому счастью) купили ASA. На этом геморрой с L2TP+IPSex был окончен.

Попробуйте развернуть на тестовой ВМ всё по инструкции и проверьте результат с патчами.
Да шо ему сделается...

opt1k
лейтенант
Сообщения: 966
Зарегистрирован: 2007-12-05 9:45:18
Откуда: Mytischi

L2TP: глухое молчание

Непрочитанное сообщение opt1k » 2017-06-30 1:14:26

Из альтернатив openvpn, pptp, stronswan


Вернуться в «FreeBSD/UNIX для начинающих»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость