23 July 2010

Объединяем две локальные сети через интернет. Vpn lan to lan. Asus wl520gu+dd-wrt и FreeBSD+mpd5

System administration
Введение.
Мне повезло работать в организации которая развивается, и время от времени возникают новые задачи, позволяющие и мне расти. На этот раз мне было необходимо объединить головной офис и второй филиал. Задача для меня не новая, но к её решению я решил подойти иначе нежели раньше.
На текущий момент в головном офисе установлена FreeBSD + mpd5 в качестве PPTP сервера. В первом филиале аналогично(за исключением того что используется как vpn клиент). Так же есть 8 точек где установлено по одному компьютеру с ОС Windows XP «цепляющихся» к головному стандартным клиентом этой ОС.
Мне необходимо создать еще один туннель между двумя сетями, но любимую ОС FreeBSD я использовать не могу, в силу ограниченного места для установки роутера во втором филиале(это магазин розничной торговли, все оборудование приютилось на узеньком стелаже). К тому же хотелось попробовать прошивку dd-wrt, о которой так много слышал, в деле.

Начало.
Итак мы имеем:
VPN сервер: FreeBSD 7.3(Release i386) + mpd5(Version 5.3)
VPN клиент: Asus wl520gu + dd-wrt(DD-WRT v24-sp2 (10/10/09) vpn)
*таки прошивка пока что стандартная, а dd-wrt еще только предстоит «навернуть», чем и займемся.

Прошивка роутера.
Во многих статьях, найденных мною, авторы почему-то опускали описание процесса прошивки маршрутизатора, ссылаясь на простоту этого действа. Я потратил около получаса на чтение документации на официальном сайте, написано весьма доходчиво. Но я все таки опишу, по шагам, то что я делал.

1.Необходимо выполнить аппаратный сброс, так называемый 30/30/30. Это необходимо для того чтобы попасть в инженерный режим. Получить возможность «залить» прошивку.
При включенном питании роутера нажимаем кнопку reset, держим 30 секунд, не отпуская кнопку отключаем питание и держим еще 30 секунд, не отпуская кнопки включаем питание и вновь удерживаем кнопку reset 30 секунд.
Хинт: по умолчанию ip роутера 192.168.1.1. Если «пингануть» его до аппаратного сброса 30/30/30 то ttl будет равен 64, после сброса ttl становится равным 100.

2.Качаем прошивку dd-wrt.v24_mini_asus.trx
*другие прошивки/прошивки для других моделей роутеров доступны на dd-wrt.com/site/support/router-database

3.Следующим шагом у нас идет заливка скачанной прошивки. Для этого нам понадобится утилита tftp(tftp — trivial file transfer program). Поскольку у меня на нетбуке установлена Ubuntu, то установка сводится к одной команде
sudo aptitude install tftp
переходим в папку с файлом прошивки
cd Загрузки
подключимся к роутеру
tftp 192.168.1.1
выбираем бинарный режим
mode binary
отправляем файл с прошивкой
put dd-wrt.v24_mini_asus.trx

Теперь ВНИМАНИЕ, после того как программа проинформирует вас о окончании процесса передачи файла, включите секундомер и ЖДИТЕ РОВНО ПЯТЬ ЗЕМНЫХ МИНУТ.

4.По прошествии 5 минут, отключаем железяку от питания, и ждем 30-40 секунд. Включаем, проверяем, если при «пинговании» видим ttl=64, то можно уже чуть-чуть радоваться =)

5.Идем на 192.168.1.1, нас попросят изменить имя пользователя и пароль. Меняем и вновь перезагружаем маршрутизатор(этот шаг я выполнил больше из-за перестраховки).

Теперь можно полазить по web интерфейсу, поверьте он весьма и весьма приятен и интересен
image
image
image
image

Далее можно залить какую-то другую прошивку от dd-wrt используя уже web интерфейс. В моем случаем это dd-wrt.v24_vpn_generic.bin. Тут уже точно ничего сложного, но не забывайте про ПЯТЬ ЗЕМНЫХ МИНУТ =)))
*здесь заботливые создатели покажут нам таймер отсчитывающий секунды с 300

После чего настраиваем под себя. Повторюсь, web интерфейс весьма хорош. На каждой страничке есть подсказка, не примените воспользоваться!

Настройка VPN
В результате экспериментов конфиг mpd5 принял следующий вид
pptp_vpn_filial2:
create bundle static pptp1
set ipcp ranges 10.255.255.11/32 10.255.255.12/32
set ipcp dns 192.168.0.5
set iface route 192.168.4.0/24
set iface enable proxy-arp
set iface enable on-demand
set bundle enable compression
set ccp yes mppc
set mppc yes e128
set mppc enable compress
set bundle enable crypt-reqd
set mppc yes stateless
create link static lpptp1 pptp
set link action bundle pptp1
set link no pap
set link yes chap
set auth authname "onotole"
set auth password "ololololo"
set link mtu 1460
set link keep-alive 0 0
set link max-redial -1
set pptp peer 172.17.59.12
set link enable incoming


настройки ASUS'а на скрине
image
Вот пожалуй и все. Трафик из сети в сеть бегает и шифруется.

— НЕБОЛЬШОЙ АПДЕЙТ---
После установления соединения dd-wrt'овый pppd(в соответствии со соим конфигом /tmp/pptpd_client/options.vpn) шлет каждые две секунды lcp эхо реквесты(подробнее смотрите в rfc 1661 ppp) и после того как сервер ему не ответит в третий раз пресылает Terminate-Request в итоге соединение рвется. За такое поведение отвечают параметры lcp-echo-interval и lcp-echo-failure в конфиге. Их нам и нужно убрать к чертям исключить, для этого идем на веб интерфейс Administration --> Commands и вбиваем такой скрипт:
(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 )&

Жмем Save startup, после чего ребутим роутер.
Tags:dd-wrtfreebsdmpd5vpnpptp
Hubs: System administration
+14
35.6k 99
Comments 33
Top of the last 24 hours