VPN-туннель между роутерами

Для чего нужен VPN-туннель между двумя роутерами? Чтобы объединить ресурсы локальных сетей в единую сеть. В примере, рассмотренном ниже, используются два обычных роутера, где первый – служит VPN-сервером, второй – клиентом, и создается туннель. При этом, роутер с VPN сервером – должен иметь постоянный IP. Если все, приведенное выше, для вас актуально, дальше — читаем внимательно.

Что мы получим?

Топология соединений – такая:

роутер с vpn сервером
Топология сети

На схеме, «красный» роутер – это «сервер», а «синий» – «клиент». Вместе — они образуют туннель. Заметим еще раз, что IP-адрес в «глобальной» сети у «сервера» — должен быть постоянным (фиксированным). Протокол VPN, других вариантов – не позволяет. Канал VPN через роутер — «сервер» – идет в Интернет, где его видит роутер-«клиент».

В примере, рассмотренном дальше, внутренний IP первого роутера: 192.168.0.1, адреса всех устройств – отличаются только в последней цифре. Внутренний IP «клиентского» роутера- уже отличается (вместо предпоследнего «0», там – «1»). Соответственно, после «прокладки» туннеля, мы объединим две локальных сети: 192.168.0.хх и 192.168.1.хх.

Теперь – вопросы практические

Сразу оговоримся: мы будем использовать «не заводские» прошивки. А именно, это dd-wrt. В качестве «сервера», возьмем WRT54GL от Linksys, он будет работать под управлением v24-vpn-generic:

vpn через роутер
Прошивка dd-wrt

Установка должна проходить в два этапа (сперва mini-build в качестве «первоначальной» прошивки, затем – собственно, «vpn»).

В качестве роутера «филиала» (то есть, «клиентского» роутера), может быть роутер с прошивкой dd-wrt на ядре 2.6-kernel (в названиях – обозначается «K2.6»). Вообще, прошивка нужна, возможно, и с более старым ядром (со встроенным «open-vpn» — оьязательно).

Примечание: ознакомьтесь с процессом установки данных прошивок! Для разных моделей, действия – будут различны. Рекомендуется только опытным пользователям.

Настроим туннель VPN

Как настроить VPN на роутере – рассматривают во многих обзорах. Там речь идет об оборудовании Cisco и прочем, способном создать «серьезную» сеть. Однако, прошивки dd-wrt позволят нам быстро включить wifi роутер с VPN – сервером (просто, пишется скрипт начальной загрузки).

В прошивке для «сервера», такой, как мы взяли, «open-vpn» — реализован. Vpn-демон, нужно просто включить и настроить скриптом. Чтобы создать туннель, роутер openvpn «с сервером» – нужен только один. А сейчас мы рассмотрим, как настроить VPN-«клиент».

Настройка VPN-клиента

Заходим в web-интерфейс. Вкладка «Administration» -> «Commands», позволяет устанавливать скрипт:

как настроить vpn на роутере
Заходим в web-интерфейс

Если нажать «Save Startup» — скрипт будет выполнен при начальной загрузке. А «Save Firewall» — это скрипт «файервола».

Стартовый скрипт для клиентского роутера:

cd /tmp

#перейти в каталог

echo »

#начинаем создание файла

remote 10.10.10.10

#первой строкой здесь – соединяемся с «сервером» (мы должны знать его IP)

proto udp

#выбрали протокол

port 1194

#и – значение порта (по умолчанию, в open-vpn старых версий — было «5000»)

dev tun0

#внутреннее «имя» устройства-туннеля

secret /tmp/ key.key

#этот файл — будет содержать ключ

verb 3

comp-lzo

keepalive 15 60

#это – чтобы автоматически подключался к «серверу» при обрыве (раз в 15 сек)

daemon

» > client1-main.conf

#файлик с конфигурацией — был сохранен

echo »

тут должен быть ключ (надо подставить)

» > key.key

#записали файлик с ключом

ln -s /usr/sbin/openvpn /tmp/myvpn

#указали на нужный нам демон (точнее, на файл)

/tmp/myvpn —mktun —dev tun0

#открытие туннеля, настройка

ifconfig tun0 10.0.1.2 netmask 255.255.255.0 promisc up

# значение для IP VPN

route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.1.1

#здесь мы объединили две сети

sleep 5

#ждем

/tmp/myvpn —config client1-main.conf

#применили настройки для tun0-туннеля

На этом – все. И заметим, что «адрес» туннеля – мы придумали сами (с другими IP — не связан никак).

Без скрипта файервола, как мы не старались – работать не будет. А скрипт – следующий:

iptables -I INPUT 2 -p udp —dport 1194 -j ACCEPT

#разрешение на прием

iptables -I FORWARD -i br0 -o tun0 -j ACCEPT

#теперь, полученные из туннеля пакеты (и направленные в него) – файервол «игнорирует»

iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

В результате, страница настроек — выглядит так:

роутер с vpn
Страница настроек

Настройки для «сервера»

Стартовый скрипт «серверной» части «туннеля» – выглядит проще:

Все – то же самое, но без «remote». До строки с «ifconfig».

Эта строка – будет с другим аргументом tun0:

ifconfig tun0 10.0.1.1 netmask 255.255.255.0 promisc up #серверный VPN IP не равен клиентскому

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

#и, при задании маршрутизации – мы добавили нужную сеть

#дальше все – аналогично, до последней строчки скрипта

Нажимается «Save Startup». А скрипт файервола – здесь нужен тоже, и он — полностью совпадает с «клиентским».

Настройка VPN через роутер, на этом – завершена. Изменения всех настроек, как и скрипты, вступят в силу после перезагрузки (что касается и «клиентского» роутера»).

Генерим ключ с помощью OpenVpn

Как видим, настройка роутера VPN (как «сервера», так и «клиента») — оказалась не очень и сложной. В каждом скрипте, в приведенных примерах, мы писали: «здесь должен быть ключ». Разумеется, эту запись, при внесении скрипта в роутер – не нужно копировать.

С генерировать ключ VPN, можно программой под Windows. Название – не будет оригинальным, это — программа «OpenVpn».

настройка роутера vpn
С генерировать ключ VPN

Скачайте ее с официального сайта (openvpn.net), один exe-файл (приблизительно 5 Мегабайт). Запустите на установку (выбрав галочки, как на рисунке).

Для генерации файла с ключом, в Windows-консоли, вы наберете: openvpn.exe —genkey —secret key.txt. Примечание: предварительно, командой «cd», надо зайти в папку этой программы (затем – в папку /bin).

wifi роутер с vpn
Командная строка

Ключ VPN – появится в созданном текстовом файле. Его «содержимое», вы копируете в каждый скрипт (ключ – один для «клиента» и «сервера»).

Результаты ваших действий

Каждый роутер с VPN – сервисом (будь это «сервер», или «клиент») – продолжает быть «роутером». Он — раздает сеть wi-fi, и т.д. Смысл «туннеля» — в «объединении» (все IP-адреса первой «локалки» – станут видимыми из другой, и обратно).

Конечно, все это – мы не придумали сами. Исходник статьи (на английском, но там — много лишнего) – взят с адреса: www.tux89.com/reseau/installation-de-openvpn-serveur-sur-le-routeur-dd-wrt/?lang=en.

Тесты скорости – демонстрируют, что канал VPN работает не так уж и быстро. Скорость доступа (между сетями), имеет границу в 5-6 Мбит/с. Возможно, сказались характеристики роутера Linksys (ведь Linksys WRT – являются «прародителями» dd-wrt). Любой современны D Link VPN роутер в качестве «сервера» — использовать с dd-wrt не удастся. Для dir-620, к примеру, подходит прошивка dd-wrt «от Asus RT-N13U B1». Но в этой прошивке, «open-wrt» — не предусмотрено. На более сильном железе, с прошивками «K2.6»-версий – результаты должны быть другими. Хотя, скорости в 3-5 Мегабит/с вполне хватит, если передавать небольшие файлы и данные.

Помните: установка «альтернативных» прошивок – лишает гарантии.

Если локальных сетей – больше двух

В этом случае, смысл – будет тот же. Взяв один «сервер», и n-1 роутер-«клиент» VPN, можно объединить n сетей. Будет проложен ровно «n-1» VPN-туннель, и по идее, вся «маршрутизация» — будет идти через «сервер» (а как же еще). Избежать серьезной нагрузки на «сервер», в этом случае – не удается. Для «домашнего» роутера – это будет приемлемо вряд ли (ну, максимум – 2-3 сети).

При добавлении нового «роутера» (то есть, локальной сети «n+1»), нужно вносить изменения в «серверный» скрипт. Такая настройка – для опытных администраторов.