При настройке службы L2TP VPN для удаленного доступа в Windows Routing and Remote Access мы столкнулись со странной проблемой с настройкой параметров на подключающихся клиентах. Способ предоставления этих настроек клиентам L2TP в RRAS через DHCP (Документ MS) - клиент L2TP отправляет пакет DHCPInform, который затем применяет настройки из параметров DHCP (параметр 15 для суффикса поиска DNS и параметр 121 для маршрутов разделения туннелей).
В большинстве оконечных точек VPN клиента L2TP, таких как Cisco ASA, служба L2TP создает ответ DHCP с настроенными настройками DNS и маршрутизации, но в RRAS вы используете ретранслятор DHCP, встроенный в RRAS, или сервер DHCP в локальной подсети, но эти параметры должен быть установлен в DHCP, а не через атрибут RADIUS, настройку RRAS или что-то еще. (слишком подробно о том, как работает DHCPInform и почему это так необходимо, см. эта сумасшедшая нить между парочкой наших завсегдатаев Server Fault)
Мы обнаружили, что ни один клиент Mac (или iOS, если на то пошло) не мог успешно получить эти параметры на нашем недавно настроенном VPN-сервере Windows Server 2016, вместо этого время ожидания для своих попыток получить DHCP от VPN-сервера (с /var/log/ppp.log
после включения подробного ведения журнала):
...
Fri Dec 1 12:09:18 2017 : sent [IP data <src addr 192.0.2.8> <dst addr 255.255.255.255> <BOOTP Request> <type INFORM> <client id 0x08000000010000> <parameters = 0x6 0x2c 0x2b 0x1 0xf9 0xf>]
Fri Dec 1 12:09:21 2017 : sent [IP data <src addr 192.0.2.8> <dst addr 255.255.255.255> <BOOTP Request> <type INFORM> <client id 0x08000000010000> <parameters = 0x6 0x2c 0x2b 0x1 0xf9 0xf>]
Fri Dec 1 12:09:24 2017 : No DHCP server replied
Наблюдая за сервером RRAS, как это происходит, DHCP Relay, кажется, видеть эти пакеты, но, как ни странно, сообщают о них как об отброшенных (числа в столбцах в кружках сразу увеличиваются, когда клиент регистрирует отправляемые запросы DHCP):
Повернув ручки регистрации RRAS на максимум, я ожидал, что журнал событий Windows прольет свет на причину отбрасывания (поскольку документация существует для всех этих событий), но ни одно из этих событий не регистрировалось. Наконец, после включения журналов трассировки RRAS, C:\Windows\system32\tracing\IPBOOTP.LOG
наконец, предоставил намек на то, почему DHCP-пакеты Mac были неприемлемы:
[9712] 12:09:10: dropping REQUEST with secs-since-boot 0 on interface 42 (192.0.2.8)
Почему DHCP-ретранслятор RRAS не выполняет свою работу и не отправляет DHCP-пакеты этих VPN-клиентов на DHCP-сервер?
Как оказалось, настройки по умолчанию для агента ретрансляции DHCP просто не работают для некоторых клиентов L2TP.
Когда вы настраиваете интерфейс для ретрансляции DHCP в RRAS (на «внутреннем» интерфейсе, куда идут клиенты VPN), параметры по умолчанию выглядят следующим образом:
Выглядит скромно, но причиной всей этой проблемы является настройка «Порог загрузки». В документация звучит так полезно!
Количество секунд, в течение которых агент ретрансляции ожидает перед пересылкой сообщений DHCP. Вы также можете щелкнуть стрелки, чтобы выбрать новую настройку. Значение по умолчанию - 4 секунды.
Эта опция полезна, если вы хотите, чтобы локальный DHCP-сервер отвечал первым, но если локальный DHCP-сервер не отвечает, вы хотите пересылать сообщения на удаленный DHCP-сервер.
Очевидно, этот вариант звучит так, как будто он имеет значение только тогда, когда вы делаете актуальный Ретрансляция DHCP внутри вашей сети. Даже не самое подробное из руководств Microsoft Для использования DHCP Relay для параметров VPN есть упоминания о необходимости обращать внимание на настройку порога загрузки.
Но бревна не лгут, и dropping REQUEST with secs-since-boot 0
казалось явным указанием на то, что сам агент DHCP-ретрансляции был виноват. Эта ошибка указала мне на Сообщение блога от любезного администратора из Лихтенштейна, который наконец показал мне, что происходит.
Параметр DHCP-ретрансляции "Порог загрузки" не задержка, как следует из документации - это жесткий фильтр пакетов, отбрасывающий все пакеты DHCP ниже порогового значения. Установка значения выше 0 не имеет смысла при использовании DHCP-ретранслятора для VPN-клиентов (на «внутреннем» интерфейсе) и нарушит способность многих реализаций L2TP-клиентов получать параметры DHCP, несмотря на отсутствие указаний на такое поведение в документация.
После установки порога загрузки для DHCP-ретранслятора на 0, клиенты Mac L2TP успешно получают настройки из параметров DHCP 15 (DNS-суффикс) и 121 (разделенные туннельные маршруты).