Dd wrt pptp client

Пару слов в качестве предисловия
Знакомство с dd-wrt началось с роутера dir-300 b1. Желание заменить заводскую прошивку возникло после внезапного слета настроек локального адреса. Случилось это в первый день эксплуатации:)
Почему именно dd-wrt? Сам я больше люблю tomato, но dir-300 с ней не дружит. Вникать в тонкости настройки других прошивок (включая dd-wrt) особо желания не было. В итоге, наверное, пиар сделал свое черное дело. dd-wrt самая популярная из бесплатных альтернативных прошивок. Решено было залить ее. Про встроенный vpn-сервер узнал на стадии настройки. А как вы понимаете, если есть возможность использовать vpn, то грех ее не использовать.
Сразу оговорюсь, трепанацию прошивке я не проводил, в тонкости и особенности не вникал. Настройку необходимых функций проводил на минимально необходимом для работы уровне.

Итак, предпологается, что вы уже имеете прошитый dd-wrt роутер. Интернет исправно работает через этот роутер хотя бы на одном компьютере.

Первое что делаем — заходим в настройки через веб-интерфейс
и переходим в раздел Services и там в подраздел VPN. В зависимости от версии прошивки, внешний вид разделов может изменятся, хотя общий смысл должен оставаться неизменным. У меня подраздел VPN выглядит следующим образом:

Влючаем vpn-сервер переведя переключатель в положение enable напротив PPTP Server
Сразу же появятся дополнительные опции настройки.
Попорядку сверху вниз:

Broadcast support — поддержка передачи шировещательных рассылок через vpn. Без необходимости лучше не включать, т.к. широковещательный трафик может существенно снизить быстродействие vpn канала. Особенно будет заметно на низкоскоростных подключениях.
MPPE Encryption протокол шифрования данных в vpn сетях. С включенной опцией мне не удалось добится подключения к pptp серверу dd-wrt. Рекомендую оставить опцию включенной. Позже я еще вернусь к ней.
DNS1 DNS2 WINS1 WINS2 соответственно dns и wins сервера внутри нашей локальной сети. У меня таких нет, поэтому оставляю поля пустыми
MTU и MRU максимальный размер блока передоваемых/принимаемых данных. Параметры подбирают для оптимизации быстродействия и стабильности работы vpn соединения. Не рекомендую без необходимости изменять эти параметры.
Server IP Это IP адрес нашего pptp сервера, т.е. локальный ip-адрес нашего роутера. Я не менял адрес роутера по умолчанию, поэтому у меня это 192.168.1.1
Client IP(s) диапозон IP-адресов, которые будут выдаваться vpn-клиентам. Сдесь одно требование — этот диапозон не должен пересикаться с локальными адресами в вашей сети.
Max Associated Clients Максимальное количество vpn подключений. Я не изменял этот параметр.
CHAP-Secrets В это поле вносятся учетные данные наших vpn-клиентов — логины и пароли. Формат ввода следующий:
логин " пароль "
Обратите снимание, что пробел есть не только после логина, но и между кавычками и паролем!
Для тестовых целей я ввел логины/пароли для двух пользователей
логин user1 c паролем user1 и
логин user2 с паролем user2
Небольшое замечание насчет паролей. На стадии тестирования не используйте пароли содержащие спецсимволы и буквы заглавным шрифтом.

В итоге у меня получились вот такие настройки:

внизу страницы жмем кнопку Apply Settings. Затем переходим в раздел Administration и внизу страницы жмем кнопку Reboot Router. На этом настройка роутера закончена.
Настройка vpn-подключения на компьютере выглядит следующим образом. В качестве удаленного клиента я использую компьютер на базе windows xp. Запустите Мастер новых подключений (Панель управления — Сетевые подключения — Мастер новых подключений)

Выбирайте «Подключить к сети на рабочем месте»

Далее «Подключение к виртуальной частной сети»

Введите название подлючения

В следующем окне необходимо ввести внешний IP-адрес роутера. Адрес можно посмотреть например на самом роутере в верхнем правом углу или в разделе Status -> WAN


Обратите внимание, что переподключение может происходит при каждом сохранении настроек роутера. Соответственно, если у вас динамический внешний IP, придется его постоянно изменять в настройках подключения на стороне клиента! Для решения проблемы используйте службы динамического dns типа dyndns.org.

Завершив создание подключения, переходим к его настройке.
Вводим любую пару логин/пароль (помните, те что вводили в поле CHAP-Secrets при настройке роутера) и жмем кнопку свойства

Переходим в закладку Безопасность и снимаем галочку «Требуется шифрование данных (иначе отключаться)». Помните, при настройке роутера, я указал, что мне не удалось запустить подключение с включенной опцией MPPE Encryption. так вот это и есть то самое шифрование данных, от которого мне пришлось отказаться:( Обязательно пробуйте подключаться с включенным шифрованием!

Жмем Ок. Вот собственно и все! Пробуйте подключиться!

Пару дополнений к теме

1. ВАЖНО! Как оказалось, описанный выше глюк с опцией MPPE Encryption относится только к данной версии прошивки. А именно v24 PreSP2 [Beta] Build: 21061. Так же в этой версии прошивки не работает подключение по SSH. Статью редактировать не стал, т.к. есть вероятность, что подобные глюки проявятся и в других версиях прошивки. Учитывайте это!

2. Мониторить подлюченных клиентов можно в разделе Status -> LAN

3. Не хотите, чтобы на стороне клиента весть трафик шел через vpn-подключение, необходимо запретить изменение шлюза по умолчанию при подключении vpn. Делается это в свойствах vpn-подключения. Закладка Сеть, затем в свойствах Протокол Интернета (TCP/IP) кнопка Дополнительно. Снять галочку Использовать основной шлюз в удаленной сети



One Reply to “DD-WRT. Настройка VPN сервера”

По поводу шифрования
«я указал, что мне не удалось запустить подключение с включенной опцией MPPE Encryption.»
В «Свойствах» сетевого соединения «WAN-Miniport (PPTP)» > «Параметры» > «Параметры PPP…» > «Включить расширения LCP» — Убрал галку (то бишь выключил) и Win 10 прицепилась с «самым стойким» шифрованием. На других системах не пробовал.

Понадобилось как-то обьеденить локальные сети двух небольших офисов. При этом, необходимо было, чтобы каждая сеть использовала свой канал в сеть интернет, а вот трафик для локальных сетей шел через VPN-тунель между офисами. Это возможно, если IP-адресация офисов отличается. В моем случае IP-адресация в офисе №1 была 192.168.0.0/24, а в офисе №2 — 192.168.1.0/24.

В офисе №1 в роли маршрутизатора был сервер с установленной FreeBSD и настроенным по этой статье PPTP VPN-сервером на базе MPD5. К тому же, в этой точке был статический маршрутизируемый IP-адрес. В офисе №2 в качестве маршрутизатора был задействован TP-LINK TL-WR741ND. Соответственно, решил отталкиваться от существующей аппаратной части, чтобы минимизировать финансовые затраты.

На маршрутизатор TP-LINK TL-WR741ND была установлена прошивка DD-WRT. Рассматривать процес перепрошивки роутера не буду, чтобы не отвлекаться от основной задачи (да и в Сети информации предостаточно по этому вопросу).

Ссылка на настройку PPTP VPN-сервер на базе MPD5 указывалась выше. Отталкиваемся от того, что сервер корректно настроен, принимает входящие подключения и работает. Теперь дело за малым — настроить PPTP-клиента на DD-WRT. Настройки — на скриншоте:

Иногда бывает, что тунель никак не хотел "подыматься". Связано это с присутствием опций lcp-echo-interval и lcp-echo-failure в конфигурационном файле PPTP-клиента DD-WRT (/tmp/pptpd_client/options.vpn). Решением выступает запуск следующего скрипта на DD-WRT:

(while [ ! -f /tmp/pptpd_client/options.vpn ]; do sleep 10; done
sed /lcp/d /tmp/pptpd_client/options.vpn > /tmp/pptpd_client/temp.vpn
cp /tmp/pptpd_client/temp.vpn /tmp/pptpd_client/options.vpn )&

Выполнить этот скрипт необходимо в окне ввода комманд: Тех.обслуживание -> Команды. После внесения скрипта в текстовое поле, жмем кнопку "Сохр. параметры запуска" и перезагружаем маршрутизатор. Теперь тунель подымается и работает без обрывов.

Маршрут к сети офиса №1 DD-WRT добавляет самостоятельно (адресацию сети мы задали в настройках PPTP-клиента). А вот маршрут к сети офиса №2 на маршрутизаторе под управлением FreeBSD необходимо будет добавить. И здесь возникла загвоздка.

При использовании MPD в роли PPTP-клиента, для добавления маршрутов я использовал скрипт /usr/local/etc/mpd5/if-up.sh примерно следующего содержания:

А в конфигурационный файл /usr/local/etc/mpd5/mpd.conf в секцию pptp_client добавлялась строка:

set iface up-script /usr/local/etc/mpd5/if-up.sh

Однако MPD в роли сервера ни в какую не хотел выполнять скрипт при коннекте клиента, поэтому пришлось воспользоваться костылем — установил quagga и добавил с ее помощью статический маршрут, который автоматически активировался при подключении клиента.

После этих нехитрых манипуляций внутренние ресурсы офисов были доступны друг для друга. Однако во время работы неоднократно наблюдал обрывы передачи данных при поднятом тунеле, что не очень радует. Причем протестировал в разных режимах на двух маршрутизаторах — проблема идентична. Поэтому дополнительно протестировал качество работы DD-WRT в качестве PPTP-сервера.

Re: DD-WRT как PPTP-клиент

Проблему дисконнектов я решил вот таким скриптом

Перед запускам проверяем поднят ли ppp (в моем случае ppp1)

Если не поднят, то стартуем pptpd_client

Ожидаем появления файла /tmp/pptpd_client/ip-up

Вписываем в него код по маршрутизации (при необходимости)

Настройка роутера с прошивкой DD-WRT вполне логична и проста, однако есть много недоработок в программном обеспечении, а конкретнее в WEB морде, через которую происходят все манипуляции настроек. Безусловно в большинстве случаев обычный пользователь не столкнется с такими задачами, где понадобитс больший функционал чем заложено в оболочке. Однако одна проблема у многих Российских пользователей вызовает большие проблемы, потому что много провайдеров до сих пор используют vpn соединения с использованием статического адреса, а вот этот тип подключения и является слабым местом DD-WRT. Рассмотрим два варианта решения этой проблемы, первый способ максимально приближен к полноценному подключению, т.е. мы добавляем статические настройки к штатному впн подключению (которые по умолчанию не доступны) и пользуемся всеми вытекающими прелестями и второй способ, рекомендованный разработчиком DD-WRT. Мы не зря поставили рекомендованный способ на второе место, потому что с ним следуют новые проблемы как с мониторингом так и с маршрутизацией (если они конечно необходимы).

Настройка vpn, pptp, l2tp подключения в dd-wrt со статическим ip адресом. Способ 1.

В закладке setup->basic setup выбираем тип нашего подключения PPTP или L2TP эти данные можно узнать у провайдера и вписываем адрес сервера, логин и пароль, а в поле Use DHCP ставим галочку в положение NO (можно не выключать — не принципиально) и сохраняемся. Пока подключения конечно же не будет, нужно установить статику.

Далее в закладке Administration -> Commands, копируем и вставляем скрипт, в которм вместо 10.1.0.254 пишем адрес ШЛЮЗА провайдера, вместо 255.255.255.0 соответственно маску и вместо 10.1.0.20 ваш IP адрес.

#!/bin/sh
mkdir -p /tmp/cron.d
cat /tmp/fix-pptp-settings.sh
if [ "$1" = "—check" ];then
if [ "$(nvram get wan_gateway)" != "10.1.0.254" ]; then
while read param; do
nvram set $param
sleep 2
done
wan_gateway=10.1.0.254
wan_netmask=255.255.255.0
wan_ipaddr=10.1.0.20
EOF
fi
elif [ "$1" = "—daemon" ];then
while true; do
$0 —check
sleep 60
done
fi
ENDOFFILE
chmod 700 /tmp/fix-pptp-settings.sh
sh -c "/tmp/fix-pptp-settings.sh —daemon &"

Жмем Save Startup (сохранить автозапуск).

Из плюсов:

  1. Подключение отобразится в статусе.
  2. Не нужно вручную добавлять маршруты.
  3. аботает проброс портов из веб морды.

Настройка vpn, pptp, l2tp подключения в dd-wrt со статическим ip адресом. Способ 2.

В закладке setup->basic setup выбираем тип нашего подключения Static IP и заполняем согласно данным, предоставленным провайдером. Сохраняем.

Далее в разделе Services->VPN активируем PPTP Client (устанавливаем галочку Enable) и вписываем наши данные: сервер, имя пользователя и пароль. Для экономии ресурсов роутера в поле MPPE Encryption пишем nodeflate (если провайдер использует шифрование, то в этом поле нужно указать какое именно) и сохраняем. Будьте внимаетельны, данный тип подключения не покажет состояние подключено в статусе, а само соединение может уставновиться в течении минуты.

Из плюсов:

Из минусов:

  1. Состояние подключения не отображается.
  2. Проброс портов делается с помощью специальных команд.

[an error occurred while processing the directive]
Карта сайта