Предыстория:
Собственно, задача — объединить дом 1 и дом 2. На вооружении имеем схемы:
Дом 1: -internet пров. Beeline l2tp; psTV (196.168.2.13); dir615С2 (внут: 192.168.2.1, внеш: 95.24.х.х (будет клиентом VPN))
Дом 2: -internet пров. Interzet с белым ip; PS4 (192.168.1.13); dir615Е4 (внеш st.IP: 188.Х.Х.Х, внут: 192.168.1.1 (будет сервер VPN)
На обоих роутерах были установлены прошивки от dd-wrt. Процедура установки не сложная, в интернете много информации на эту тему.
Цель чтобы оборудование dir615с2 (далее «В») было доступно в локальной сети dir615Е4 (далее «А») и обратно.
Подготовка, проблемы, решение:
После установки dd-wrt и настройки подключения к интернету было замечено на роутере А отсутствие ping между клиентами, подключенными по lan (по wifi такой проблемы нет). Решается данная проблема двумя способами:
1. Установки прошивки dd-wrt от 04-18-2014-r23919
2. Заход во вкладку «Администратор — Команды » и выполнение команды:
swconfig dev eth0 set enable_vlan 1
swconfig dev eth0 set apply
Увлекшись настройками, почувствовал желание сделать автоматическое отключение и включение WIFI, то ли с целью эксперимента, то ли для уменьшения количества излучающих приборов в квартире. Для это было найдено несколько решений:
1. Использование команд ifup,ifdown и командами cron. Для это во вкладке «Администратор» в пункте Cron пишем:
0 7 * * * root /sbin/ifconfig ath0 up
0 0 * * * root /sbin/ifconfig ath0 down
Это позволит вкл. в 7:00 утра и выкл. 00:00 ночи. Но у меня как и у многих она не работала.
2. Этот метод заключается в использовании кнопки WPS/Перезагрузки на корпусе роутера. Для это в меню Services в пункте SES/AOSS/EZ-SETUP/WPS Button следует вкл. Turning off radio. Но каждый раз нажимать кнопку это не очень интересно.
3. Использование команды расписания работы WIFI:
nvram set radio0_timer_enable=1
nvram set radio0_on_time=000000011111111111111111
nvram commit
Где 0 — выкл, 1 — вкл., в моем примере он вкл. в 7:00 а выкл. в 01:00.
Теперь можно и приступить к настройке VPN. На «А» поднят сервер PPTP, а на «В» клиент. Убедится в работе VPN можно на вкладке «Статус — lan». В самом низу указывается, что клиент «В» подключен к серверу «А».
(Настройки сервера и клиента проводились в Web интерфейсе)
На сервере задавая имя и пароль следует ставить * через пробел.
Если у вас, так же как у меня, роутер на базе Atheros AR7240, то возможно клиент VPN будет при подключении оставаться со своим локальным IP (не принимая ip из диапазона сервера). В этом случае необходимо добавить noipdefault в поле мппе шифрование. Также не лишним будет добавить --nobuffer в поле ип пптп сервера через пробел для выкл. буферизации.
Теперь, когда у нас есть VPN-туннель, нам надо прописать маршрут в соседнею сеть.
«А» имеет сеть 192.168.1.0/24 и ip как сервер VPN 172.16.1.1
«В» имеет сеть 192.168.2.0/24 и ip как клиент VPN 172.16.1.51
Для доступа из «А» в «В» нужно задать:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 172.16.1.1
Для доступа из «В» в «А» нужно задать:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 172.16.1.51
Так как при переподключении клиента к серверу VPN маршрут будет сброшен и его надо будет повторно задавать, было принято решение о написании Shell-скрипта. Он бы проверял периодически на наличие маршрута и в случае его отсутствия проверял поднятие туннеля, и при его наличии задавал бы маршрут.
Выглядит он для сервера так:
#!/bin/sh
if
PPTP=`ip ro | awk '/192.168.2.0/ {print $1}'`;
test "$PPTP" = "192.168.2.0/24"
then
exit;
#Тут мы указали если есть в ip ro маршрут на сеть 192.168.2.0 то скрипт заканчивается иначе идем дальше
else
if
PPTPup=`ip ro | awk '/172.16.1.51/ {print $1}'`;
test "$PPTPup" != ""
then
route add -net 192.168.2.0 netmask 255.255.255.0 gw 172.16.1.1
else
exit;
# тут мы указали если в ip ro "VPN" соединение не равно пустоте то добавить маршрут и закончить скрипт
fi
fi
exit;
Для клиента меняем 192.168.2.0 на 192.168.1.0, 172.16.1.51 на 172.16.1.1, 172.16.1.1 на 172.16.1.51.
Теперь нам нужно сделать так, чтобы этот скрипт срабатывал по заданному интервалу. Это возможно сделать во вкладке «Администратор» в пункте Cron, пишем:
*/3 * * * * root /tmp/custom.sh
Это нам даст запуск скрипта каждые 3 минуты, каждый час и каждый день. На этом настройка VPN туннеля закончена.
Комментарии (7)
Goodkat
10.11.2015 15:49Эпловский bonjour будет работать?
Конкретно: закидывать контент и программы маме на айпад по сети.
В одной локальной сети работает.
Когда я пытался объединить два рутера в одну сеть, то itunes и устройства не видели другие устройства, принтеры и шары из другой квартиры, но по ip можно было достучаться до NAS-а, например, т.е. если знаешь адрес, то работало, а броадкаст — нет.isden
11.11.2015 09:52+1Емнип, через pptp броадкасты не работают (хотя уже очень давно это дело не трогал, может быть уже и работают). Можно попробовать openvpn.
ValdikSS
12.11.2015 03:00PPTP же Point-to-Point Tunnel Protocol, там нет броадкастов.
И вообще, в DD-WRT, вроде, есть EoIP, очень простой и без шифрования. Почему использовали не его, автор? Если вам нужна конфиденциальность, на безопасность PPTP положиться нельзя.Deav
12.11.2015 07:54В случае с pptp, удобна возможность подключиться с любого места и апарата, и иметь доступ к сети(примеру камерам оставляя их закрытыми из вне).
utya
Хорошая заметка, по раньше её бы лет так на 5 бы)
Какая скорость туннеля получилась?
Aclz
В случае с PPTP это даже как-то не интересно.