dadv: (chuck)
[personal profile] dadv

Допустим, у нас есть центральный офис компании и фиксированное количество удаленных, причем удаленные офисы подключены через Yota-подобных провайдеров: выход в сеть через NAT и с динамического адреса. Нам нужно связать удаленные офисы с центральным VPN-туннелями.

Протокол L2TP отлично подходит для такой задачи, инкапсулируя PPP в UDP-пакеты, которые хорошо проходят через всяческие NAT, и можно было бы спокойно использовать mpd-5.7. Но тут мы сталкиваемся с одним его ограничением, если хотим привязать каждый удаленный офис к отдельному бандлу (локальному туннельному интерфейсу): mpd умеет привязывать клиента к бандлу только по своему и/или клиентскому IP-адресу (ну, и по портам тоже). В данном случае для всех удаленных клиентов у нас один локальный внешний серверный IP, а адреса клиентов мы не знаем. Поэтому штатно привязать каждого клиента к "своему" отдельному бандлу mpd-5.7 в этом случае не может.

К счастью, в протоколе L2TP предусмотрена отправка hostname в первом же пакете, устанавливающим соединение. Соотвествующая команда в конфигурации клиентского mpd это set l2tp hostname "host.domain.net", без неё mpd автоматически подставляет системный hostname.

Пропатчил mpd-5.7, добавив команду вида set l2tp peermask "*.domain.net" - при наличии такой команды в описании бандла в конфигурации серверного mpd он будет проверять переданный клиентом hostname и выбирать бандл, только если hostname подпадает под маску (в дополнение к остальным проверкам). Используются shell-овые маски, проверка функцией fnmatch(). Можно, конечно, писать и полные имена хостов. Если в бандле нет этой команды, он, как и раньше, не проверяет hostname. Команда set l2tp peermask "*" примет любой hostname клиента. Если клиент не прислал hostname, а в бандле есть проверка hostname, то клиент не попадет в этот бандл.

http://www.grosbein.net/freebsd/patches/mpd5/patch-peermask

Update: принято в основное дерево, будет в релизе 5.8. Только команду переименовали в set l2tp pmask, а то конфликтовала с set l2tp peer (в mpd не может быть команды, совпадающей с началом другой команды).

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios