Разные, на мой взгляд, интересные замечания, связанные с компьютерами в частности и техникой вообще.

воскресенье, 12 июля 2009 г.

Lynksys, dd-wrt, vpn и локальные маршруты.

Есть некая локальная сеть. Довольно крупная, поэтому адреса локальных ресурсов занимают довольно большое количество подсетей. А выход в интернет осуществляется через vpn-подключение. И понадобился способ выпустить локальную сеть(офиса, или несколько домашних компов - неважно) в инет, при этом, чтобы локальные ресурсы были доступны напрямую, а не по vpn-каналу.
Конечно, это проще простого решается с помощью роутера с Linux, но каждому желающему такой роутер не поставишь. Вот и вспомнилась мне железка, с которой в своё время уже приходилось работать - Linksys WRT54-GL и свободная прошивка dd-wrt.

Что нам понадобится.
1. Сам Linksys WRT54-GL.
2. Список локальных сетей(в моём случае, его можно взять с сайтов местных провайдеров).
3. Прошивки dd-wrt последней версии(на момент написания этой заметки - 24) mini и standart. Всегда можно взять с официального сайта dd-wrt.
4. Немного времени.

Настройка:
1. Прошивка устройства.
В этот раз почему-то lynksys не захотел прошиваться сразу. Упорно был сбой при попытки запихнуть в него standart-версию. Решается просто. Сперва вшивается mini, а потом standart.
2. Настройка сети.
На вкладке Basic Setup для wan-интерфейса выставляем режим Static IP. Там прописывается ip-адрес, выдаваемый Вам провайдером и маску подсети. Шлюз не ставить!
Для Router IP, выставляем адрес и маску сети, по которому Linksys будет доступен в домашней локалке. И снова шлюз не ставить. Тут же надо указать dns-сервер, выданный провом.
Далее, по желанию. Я лично настроил раздачу адресов по локалке с помощью dhcp. Здесь всё.
Теперь решаем проблему, на которой затыкается большинство, судя по гуглу. Шлюз провайдера и vpn-сервер находятся в разных подсетях. Если указать default gateway, то vpn потом не будет работать. Если же его не указывать, то он и не подключиться. Но что мешает прописать отдельный маршрут к vpn-серверу через шлюз? Итак, идём на вкладку Setup -> Advanced Routing и добавляем нужный маршрут.
3. Настройка vpn.
Вкладка Services -> PPTP.
Ставим enable для PPTP Client, где и прописываем адрес vpn-сервера, логин и пароль. Если нужно, то опции шифрования.
4. Добавление маршрутов.
Последний штрих. Добавляем маршруты локальной сети.
Вкладка Administration -> Commands.
Все маршруты вписываем в поле commands в виде:
ip route add xx.xx.xx.xx/xx via yy.yy.yy.yy
Думаю, ясно, что это. Одно уточнение. Маска должна быть указана именно в виде битов, а не привычным для многих квартетным форматом - Linksys его не понимает.

Всё готово. Единственный ньюанс - внесение изменений в случае смены маршрутов в локалке. На роутере с linux у меня это решено простым скриптом, который по крону скачивает файл с маршрутами с сайта провайдера, и в соответсвии с ним вносит изменения в таблицу маршрутов. Вот, следующим шагом, думаю запихать этот скрипт в linksys(придётся немного переделать, потому как dd-wrt это всё-таки не полноценный linux).