» » Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС

Информация к новости
  • Просмотров: 42272
  • Автор: sluggard
  • Дата: 12-04-2012, 00:08
12-04-2012, 00:08

Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС

Категория: Оборудование умного дома

Если Вы читали мои предыдущие заметки, то Вы уже знаете о том что у меня на даче стоит сервер видео наблюдения, который подключен к интернету через роутер DIR-620 с usb модемом Huawei E171.

Вся затея теряет смысл если мы не сможем подключаться к серверу из любого места и смотреть за состоянием датчиков или просматривать записи с камер. Вот тут мне и подложили собаку господа из МТС.

Как оказалось, у МТС нет безлимитных тарифов с реальным Ip адресом, по которому можно было получить доступ к серверу. Узнав об этом я слабо сказать "опечалился", но мой воспаленный мозг нашел хоть и корявое, но все же решение данной проблемы!

Вот она, рыба моей мечты - VPN тунель!

Итак, приступим!
Дома у меня стоит DIR-320 (старый!) с прошивкой dd-wrt и поддержкой OpenVPN (как ее установить - google Вам в помощь, все описано до мельчайших подробностей). Выглядит он вот так:
Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС


На даче стоит DIR-620 с прошивкой keenetic (как превратить DIR-620 в ZyXEL Keenetic).
Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС


Теперь переходим к настройкам.

Сервером у нас будет выступать DIR-320, так как он имеет статический внешний ip-адрес.
Клиентом будет DIR-620, он будет соединяться с DIR-320.

VPN версия прошивки DD-WRT предлагает веб-интерфейс к конфигурации демона OpenVPN с полным набором сертификатов и ключей.

Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС


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

Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС


Начнём с маршрутизатора сервера, в качестве которого выступает DIR-320. Нам потребуется два скрипта, Startup и Firewall.

Примеры скриптов для серверного устройства:
cd /tmp
echo "
proto udp          
port 2001
dev tun0
secret /tmp/static.key
verb 3
comp-lzo
keepalive 15 60
daemon
" > main-client1.conf
echo "
-----BEGIN OpenVPN Static key V1-----
d8b9a3ea013eed9b475aa6eb5aff9c8d
5faa88bf55117b89ed4a0f23dc9b7416
(Ваш статический ключ!)
1b1814a595720cd420484161b6cfa871
233ff7bd1da8a822ceee98ffe80b5175
bec32b2291df3c6904b42f7f14937a0d
-----END OpenVPN Static key V1-----
" > static.key
ln -s /usr/sbin/openvpn /tmp/myvpn
/tmp/myvpn --mktun --dev tun0
ifconfig tun0 10.0.1.1 netmask 255.255.255.0 promisc up
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2
sleep 5
/tmp/myvpn --config main-client1.conf

iptables -I INPUT 2 -p udp --dport 2001 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -I INPUT 3 -i tun0 -p icmp -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE


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

Установим OpenVPN на роутер DIR-620 командой:
opkg install openvpn


Создадим конфигурационный файл:
nano /media/DISK_A1/system/etc/openvpn/openvpn.conf


И вставим в него следующие строки:

remote xxx.xxx.xxx.xxx #Внешний ip-адрес нашего DIR-320
port 2001
proto udp 
dev tun0
secret /media/DISK_A1/system/var/static.key 
ifconfig 10.0.1.2 10.0.1.1 
keepalive 15 60 
verb 3
comp-lzo 
persist-key 
persist-tun
tun-mtu 1380
mssfix 1300


Сохраняем файл (F2,Y, Enter). Затем чуть подправим скрипт запуска:
nano /media/DISK_A1/system/etc/init.d/K11openvpn

В нём надо добавить правила iptables в конце разделов start:
iptables –A INPUT -p udp --dport 2001 -j ACCEPT 
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.1.1

и stop:
iptables –D INPUT -p udp --dport 2001 -j ACCEPT 

Пример:
Голь на выдумки хитра или как получить доступ к серверу с USB модемом от МТС

Сохраняем этот скрипт, переименовываем для автоматического запуска и сразу же запускаем.
mv /media/DISK_A1/system/etc/init.d/K11openvpn /media/DISK_A1/system/etc/init.d/S11openvpn 
/media/DISK_A1/system/etc/init.d/S11openvpn start


Теперь создадим группу правил для брандмауэра:
nano /media/DISK_A1/system/etc/firewall.d/fw.sh


В этот файл надо скопировать следующие строки:
#!/bin/sh
iptables -I FORWARD 1 --source 10.0.1.0/24 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE


После сохранения делаем файл запускаемым и тут же выполняем его:
chmod +x /media/DISK_A1/system/etc/firewall.d/fw.sh
/media/DISK_A1/system/etc/firewall.d/fw.sh


В примерах у основного маршрутизатора внутренний интерфейс 192.168.0.1/24, внешний ххх.ххх.ххх.ххх, адрес туннельного интерфейса 10.0.1.1, у клиентского 192.168.1.1/24 и 10.0.1.2 соответственно. В качестве транспорта выбран протокол UDP, включена компрессия и каждые 15 секунд проверяется, отвечает ли маршрутизатор на другом конце туннеля.

Теперь осталось на роутере DIR-320 настроить проброс портов и по внешнему ip-адресу ххх.ххх.ххх.ххх будет доступен сервер подключенный к роутеру DIR-620!

Читайте продолжение истории!
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите код: *