Как оказалось, PPTP не всегда будет работать из-за особенностей подключения клиента к интернет. Возможно, что канал PPTP просто не возможно создать. На замену PPTP можно использовать OpenVPN. Я расскажу о том, как я настроил всю инфраструктуру. Для начала исходные данные:
- Дома стоит роутер D-link DIR-825ac. Это роутер для раздачи интернет по дому. От него потребуется DMZ и статический адрес на второй (vpn server) роутер. Адресация домашней сети 192.168.0.0/30. Для второго роутера сделаем статический BIND to MAC (по маку второго роутера) и присвоим адрес: 192.168.0.15. Включаем DMZ на этот IP адрес. Таким образом второй роутер становится видим для интернет. Естественно у меня подключен статический IP адрес от провайдера. Без него я не смогу снаружи подключиться к создаваемому серверу.
- Второй роутер D-link DIR-632 с прошивкой DD-WRT VPN. Он подключен WAN портом к LAN порту основного домашнего роутера. Забинденный IP 192.168.0.15 будет WAN адресом второго роутера. Все запросы из интернет идут на WAN второго роутера.
- Внутренняя адресация второго роутера: 10.0.10.0/30 Именно этот роутер будет нашим OpenVPN сервером.
- Ко второму ротеру кабелем подключен по LAN видеорегистратор D-link DNR-322L. Это наш “облачный” видеорегистратор, на который будут записываться камеры удаленных клиентов.
- На даче стоит роутер Vigor FLY 210. В вигор воткнута Yota без статического адреса. Адресация локальной сети на даче – 192.168.0.0/30.
- К Vigor Fly по локальной сети подключен второй роутер Linksys E7200 с прошивкой DD-WRT VPN. LAN порт Vigor FLY является WAN портом Linksys. То есть для Linksys внешний адрес будет 192.168.0.7.
- Внутренняя (локальная) сеть на Linksys: 10.0.0.0/30.
- Именно к Linksys по WiFi подключены IP-камеры D-link DCS-942L. Камеры имеют IP адреса: 10.0.0.2 и 10.0.0.3.
Отобразим всю инфраструктуру графически:
Я хочу, чтобы видеорегистратор в домашней локальной сети обращался к камере на даче за видеопотоком. Что для этого надо сделать? Надо поднять тунель между сетями дома и дачи, настроить роутинг.
Последовательность настройки OpenVPN:
- Скачиваем на комп к себе openvpn и генерируем сертификаты сервера, клиента, тлс ключ и какой-то спец ключ. Этих инструкций в инете дофига. С этим проблем не возникает обычно. На выходе имеем:
– Public Server Cert
– CA Cert
– Private Server Key
– DH PEM
– TLS Auth Key - На роутере-сервере идем в Services-VPN-OpenVPN Server/Daemon и там же делаем настройки:
Start Type – System
Config as – Server
Server mode – Router (TUN)Network – 10.1.1.0Netmask – 255.255.255.0Port – 1194Tunnel Protocol – TCPEncryption Cipher – Вариант 1 – Blowfish CBC, Вариант 2 – None (точно также на клиенте нужно будет делать. Разные настройки – ничего не заработает)Hash Algorithm – Вариант 1 – SHA1, Вариант 2 – NoneAdvanced Options – EnableTLS Cipher – AES-256-SHALZO Compression – YesRedirect default Gateway – DisableAllow Client to Client – EnableAllow duplicate cn – EnableTunnel MTU setting – 1500Tunnel UDP Fragment – (пусто)Tunnel UDP MSS-Fix – DisableCCD-Dir DEFAULT file – пустоClient connect script – пустоStatic Key – пустоPKCS12 Key – пустоPublic Server Cert – вставляем публичный сертификат сервер, начиная включительно со строки —–BEGIN CERTIFICATE—– и заканчивая включительно —–END CERTIFICATE—–CA Cert – вставляем сертификат удостоверяющего центра аналогично выше.Private Server Key – аналогично выше приватный ключ сервераDH PEM – некий ключ, чтобы трафик не расшифровалиAdditional Config – route 10.0.0.0 255.255.255.0 10.1.1.2 Это означает, что на сервере будет добавлен маршрут на подсеть 10.0.0.0 (дача) и весь трафик на нее будет идти через шлюз 10.1.1.2 – это ип, который получит клиент при подключении к впн серверу 10.1.1.1.TLS Auth Key – вставляем ключ —–BEGIN OpenVPN Static key V1—– из ta.keyПосле этого нажимаем Save. Но это не все………. Самое хитрое впереди! - Качаем в интернет программу putty и подключаемся по telnet к роутеру-серверу. Логинимся под админом (рутом). И делаем следующее:
cd /tmp/openvpn/ccd
vi user1
вписываем в созданный файл текст:
iroute 10.0.0.0 255.255.255.0
push “route 10.0.10.0 255.255.255.0”
Сохраняем файл. Имя файла – это имя клиента из сертификата клиента (name). То есть имя файла и имя клиента из сертификата – должны быть одинаковы. Роутер лезет за этим файлом после того, как получит от клиента клиентский сертификат.
!!! UPD: Если файл после ребута стирается, то надо в Administration -> Commands ввести эту команду, а потом нажать “Save startup”:echo "iroute 10.0.0.0 255.255.255.0" > /tmp/openvpn/ccd/user1 echo "push \"route 10.0.10.0 255.255.255.0\"" >> /tmp/openvpn/ccd/user1
- Ребутим роутер или на вебморде нажимаем Apply settings.
- Отключаем Файрвол или ищем в инете как править iptables.
- Идем на клиентский роутер, отключаем файрвол и идем Services-VPN. Далее на этой странице делаем:
OpenVPN Client – EnableServer IP/Name – вводим статический IP адрес, выданный провайдером серверному роутеру.
Port – 1194Tunnel Device – TUNTunnel Protocol – TCPEncryption Cipher – ТАКЖЕ КАК НА РОУТЕРЕ-СЕРВЕРЕHash Algorithm – ТАКЖЕ КАК НА РОУТЕРЕ-СЕРВЕРЕnsCertType verification – не отмечаемAdvanced Options – EnableTLS Cipher – AES-256 SHALZO Compression – YESNAT – DisableBridge TAP to br0 – DisableIP Address – пустоSubnet Mask – пустоTunnel MTU setting – 1500Tunnel UDP Fragment – пустоTunnel UDP MSS-Fix – DisableTLS Auth Key – —–BEGIN OpenVPN Static key V1—– из сгенеренного файлаAdditional Config – topology subnet (хотя может это и не нужно)CA Cert – вставляем из файлаPublic Client Cert – вставляем из файлаPrivate Client Key – вставляем из файлаНажимаем Apply settings
- Можно на компе где-ньть поставить Syslog сервер, чтобы детально смотреть, что происходит. Это очень помогает отловить ошибки. Я использовал для отладки: Kiwi Syslog Daemon.
- После установки соединения надо проверять пинги во все стороны со всех сторон. У меня в итоге все заработало.
- Теперь на видеорегистраторе я подключаю камеру по IP: 10.0.0.2 и получаю видео!
На возню со всем этим у меня ушло очень много времени… сначала с сертификатами и куда что вставлять. Потом с тунелем – обязательно создавать файл с iroute – без этого сети не видно. Обязательно topology subnet. И вообще все что выше сделано – это выстраданное решение.
Вопрос – а почему бы не купить готовое? А вы попробуйте!! Нифига дешевого нет, платить надо ежемесячно! Хранение 30 дней – 500 руб в месяц! А тут – делаешь все сам, контролируешь сам, архив – на очень много дней.
Вопрос – много роутеров! Ну можно оставить 2 роутера – сервер и клиент. Но мне нужно было сделать так, чтобы исходный интернет (роутер) не трогать. То есть вы приходите куда угодно, втыкаете клиент-роутер и камеры, которые уже на этот клиент-роутер настроены и ВСЕ! У вас все работает. Клиент-
Для таких вещей использую mikrotik. Очень рекомендую. Надёжно и универсально. Можно писать скрипты…управлять питанием камеры (poe) и т.д. Есть порт для usb-модема.
Да, на микротике удобнее значительно, пое есть. Но когда статью писал, что было под рукой, на том и делал… может и про него как-ньть напишу