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: 2013-07-13 16:20 (UTC)
From: [identity profile] blacklion.livejournal.com
А ты такое в апстрим репортишь?

Date: 2013-07-13 16:24 (UTC)
From: [identity profile] dadv.livejournal.com
Да, но Дмитрия в IRC сегодня не было :-)

Date: 2013-07-13 16:29 (UTC)
From: [identity profile] blacklion.livejournal.com
:) Я там, кстати, найденную тобой багу в сабвёршене бэкпортнул в порт.

Date: 2013-07-13 16:30 (UTC)
From: [identity profile] dadv.livejournal.com
Спасибо :-)

Date: 2013-07-16 16:21 (UTC)
From: [identity profile] dadv.livejournal.com
Закомичено, будет в 5.8.
Желающим предложено сделать аналогичное для pptp, но там работы больше - нужна сначала команда set pptp hostname

Date: 2015-08-07 22:59 (UTC)
From: [identity profile] wishmaster2005.livejournal.com
Приветствую! Не подскажете, есть ли какая-то информация про MPD 5.8? Уже два года прошло и ничего. Есть ли смысл надеяться или проект больше особо не развивается?

Спасибо!

Date: 2015-08-10 06:44 (UTC)
From: [identity profile] dadv.livejournal.com
Проектом, по сути, сейчас занимается только один человек - Дмитрий Лухтионов (http://sourceforge.net/u/dmitryluhtionov/profile/), ему можно написать через SourceForge напрямую. Времени заниматься проектом у него мало. Для 5.8 планировалась поддержка RFC 4638, но дело идёт туго.

Date: 2015-08-10 13:38 (UTC)
From: [identity profile] wishmaster2005.livejournal.com
А Александр Мотин разве больше не майнтайнит проект? Жалко, конечно. Вроде в 5.8 много вкусностей планировалось помимо rfc4638, будет обидно, если они так и зависнут...

Date: 2015-08-11 05:33 (UTC)
From: [identity profile] dadv.livejournal.com
Алексей давно занимается другими делами - дисковую подсистему в FreeBSD сильно модернизировал, и прочим.
С Дмитрием при желании можно пообщаться напрямую в IRC на Rusnet, если есть интерес поговорить или даже помочь в разработке - напишу, где его там найти.

Date: 2015-08-12 05:14 (UTC)
From: [identity profile] wishmaster2005.livejournal.com
Я с удовольствием бы чем-нибудь помог, но, к сожалению, в программировании профан. Хотя, возможно, контакты пригодятся. А вообще, есть по MPD какие-то профильные сообщества? Я планирую обновлять несколько серверов, сейчас там старье, 5.3 и даже 5.2, думаю перейти на 5.7 и l2tp, скорее всего, понадобится консультация, в предыдущие разы с l2tp были некоторые проблемы.

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