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 не может быть команды, совпадающей с началом другой команды).

Date: 2015-08-12 09:59 (UTC)
From: [identity profile] dadv.livejournal.com
По mpd есть, собственно, официальный сайт на SourceForge http://sourceforge.net/projects/mpd/ с баг-трекером и обсуждалкой, разработчики (в основном Дмитрий) получают сообщения оттуда.

Ещё можно подписаться на русскоязычную email-рассылку по адресу majordomo@uafug.org.ua (mailto:majordomo@uafug.org.ua?body=subscribe%20freebsd) - там есть достаточно опытного народа, эксплуатирующего mpd.

Ну и в ЖЖ-коммюнити ru_sysadmins, ru_root, ru_freebsd можно задавать вопросы. И ещё живет межсетевая (FIDO/NNTP) конференция RU.UNIX.BSD, хотя народу там немного.

Лично я все эти места читаю.
Edited Date: 2015-08-12 10:02 (UTC)

Date: 2015-08-12 10:53 (UTC)
From: [identity profile] wishmaster2005.livejournal.com
На SF как-то тухловато, последняя активность от Дмитрия - аж январь месяц. Я потому и спросил. По остальным посмотрю. Спасибо.

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