Буду краток. Есть машинка с 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
А теперь картина маслом. Пытаюсь из-под клиента (Windows 7) законнектиться по VPN к серверу. Подключение виснет на стадии "Установка связи с ... с использованием "WAN Miniport (L2TP)"". Висит, висит, а потом вываливает ошибку 809: мол, удалённый сервер не отвечает.
Смотрю ситуацию с клиентской и серверной стороны. С клиентской - Wireshark'ом. И вот что я вижу.
Непрерывная долбёжка от клиента с пакетами 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)
(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