SUrov_IBM Posted December 11, 2016 Уважаемые гуру, доброго Вам времени суток. Предыстория: Встала задача собрать VPN сервер, работающий по протоколу L2TP over IPSec, на основе CISCO 2811. Причём как для подключения старых ОС Windows (XP), так и более поздней линейки. Большого труда это не составило, всё заработало, используя разный тип шифрования. Если кому-то будет интересен конфиг, напишите, выложу его здесь. В качестве DHCP сервера для VPN клиентов, выступает Windows 2008 R2 сервер. Маршрутизатор перебрасывает Unicast запросы DHCP серверу и всё прекрасно работает. Собственно суть проблемы: Возникла необходимость передачи статических маршрутов на сторону клиента. В MS Windows 2003 сервер, была опция DHCP "249", передающая ОС Windows XP статические маршруты (синтаксис был человеческим, и не выглядел в виде абракадабры HEX). Насколько я понял, в Windows 2008 R2 сервер, эта опция была заменена на DHCP "121", для более поздних линеек ОС. Windows XP опцию DHCP "121" игнорирует, а в самом DHCP сервере Windows 2008 R2 опция DHCP "249" отсутствует. Возможно, её можно прописать вручную, в качестве строкового параметра, но как говорится «Буратино был тупой» (в силу посредственного знания M$ Windows сервер) и не совсем понятно как это сделать. Получается, что надо использовать совместно две опции DHCP "249" и "121" для разных типов клиентских систем? Опцию DHCP "249" насколько я понимаю, всё равно придётся указать в коде HEX. Может, существует калькулятор для подобного расчёта? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted December 11, 2016 Тут есть нюанс: 1 (в конце есть калькулятор), 2. В ранних версиях Windows для передачи маршрутов использовалась опция 249, содержимое которой формировалось по определенному алгоритму. Для остальных устройств (и, кажется, для последних версий Windows) используется опция 121, содержимое которой формируется в соответствии с RFC. Но на определенных версиях Windows принимается опция 121, но ее содержимое ожидается в формате опции 249. Скорее всего тут должно быть какое-то решение. Но я спустя некоторое время отказался от dual access pppoe (dhcp + pppoe) и забыл про эту проблему. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dmp.user Posted December 11, 2016 Может проще на стороне клиента запускать сценарий, который поднимет vpn и пропишет нужные маршруты через него. Вряд ли сложно получится. Да и в старых системах XP, большинство пользователей под административными правами сидят - маршруты прописать получиться без предупреждений UAC более поздних систем. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SUrov_IBM Posted December 11, 2016 Может проще на стороне клиента запускать сценарий, который поднимет vpn и пропишет нужные маршруты через него. Вряд ли сложно получится. Да и в старых системах XP, большинство пользователей под административными правами сидят - маршруты прописать получиться без предупреждений UAC более поздних систем. Dmp.user, доброго Вам времени суток. Конечно же, так проще, но как пелось в песне пионерского отряда – «Нет, мы легких путей не искали», тем более схема собрана и вполне работоспособная, осталось только разобраться с настройкой M$ DHCP сервера под Windows 2008 R2. Если по существу, то планировалось создать VPN сервер, имеющий минимальные настройки с клиентской стороны и достаточно защищённый (L2TP+IPSec) протокол. К сожалению, не всегда есть возможности передать конечным пользователем, какой либо сценарий или заранее сконфигурированный пакет, поэтому например попытка использования OpenVPN, даже не рассматривалась. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 11, 2016 ггг велкам: http://netlab.dhis.org/wiki/ru:software:perl:dhcp_server db_get_routing Если кратко то: если в запросе от клиента в списке опций есть 121 то писать маршруты надо туда. Если 121 опции нет, то нужно посмотреть есть ли там 249. Если опций 121 и 249 нет то нужно посмотреть опцию 33, в неё можно писать маршруты только до хостов - /32 маска прибита гвоздями. Формат 121 и 249 - один и тот же. У опции 33 формат отличается. Посмотреть как формируются 121 и 249 можно в mk_classless_routes_bin_mask. Опция 33 пакуется прямо в db_get_routing: IP_DST,IP_GW засовываются в пакет и всё. Касательно маршрутов. Если у тебя все маршруты идут через твой впн сервер то на нём и пропиши их. Для остальных устройств (и, кажется, для последних версий Windows) используется опция 121, содержимое которой формируется в соответствии с RFC. Но на определенных версиях Windows принимается опция 121, но ее содержимое ожидается в формате опции 249. Впервые такое слышу. Где описаны различия и в чём они заключаются? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SUrov_IBM Posted December 11, 2016 Касательно маршрутов. Если у тебя все маршруты идут через твой впн сервер то на нём и пропиши их. Ivan_83, доброго Вам времени суток. Да, все маршруты идут через маршрутизатор (VPN сервер), но задумка такова, что бы со стороны клиента можно было отключить «Использовать основной шлюз по умолчанию». Тем самым избегая прохождения трафика клиента в публичный Интернет через построенный VPN тоннель. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dmp.user Posted December 11, 2016 С настройкой OpenVpn простому пользователю справиться сложно, да. Но они же настраивают обычный VPN - инструкцию ведь даете, учетку для входа. Даже галку снять, чтобы по-умолчанию весь роутинг в VPN не пошел - тоже нужно знать, где это в настройках зарыто. Для простоты можно и обычный батник в несколько строк вместе с учеткой отдать и никаких пакетов, которые нужно ставить и настраивать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SUrov_IBM Posted December 11, 2016 ггг велкам: http://netlab.dhis.org/wiki/ru:software:perl:dhcp_server Спасибо за ссылку, обязательно посмотрю, так как сам очень люблю UNIX системы (в частности FreeBSD). Но, к сожалению, в рамках данного поста мне необходимо попробовать реализовать данную схему именно за счёт M$ DHCP сервера (даже не средствами самого маршрутизатора). Проще говоря, это связано с административным ограничением, DHCP сервер находится в ведении "Windows системных администраторов" и никакого UNIX они не признают. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dmp.user Posted December 11, 2016 Костыль Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 12, 2016 Да, все маршруты идут через маршрутизатор (VPN сервер), но задумка такова, что бы со стороны клиента можно было отключить «Использовать основной шлюз по умолчанию». Кстати, может пригодится: http://netlab.dhis.org/wiki/ru:software:win:rras:conn_import_export Удобно раздавать этим настроенные соединения, остаётся только логин/пароль вбить. Но, к сожалению, в рамках данного поста мне необходимо попробовать реализовать данную схему именно за счёт M$ DHCP сервера (даже не средствами самого маршрутизатора). Проще говоря, это связано с административным ограничением, DHCP сервер находится в ведении "Windows системных администраторов" и никакого UNIX они не признают. Тогда придётся ручками генерить маршруты и забивать их в базу дхцп сервера, ну или как то автоматизировать это. Могу ещё попробовать dnsmasq собрать под венду попробовать, но не уверен что там без портирования соберётся. ) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...