OZON Видео без внешнего IP

OZON видео с 1 февраля стал обязательным для ПВЗ, по информации от клиентов — штраф составляет 5тыс в неделю.

Профессиональная настройка MikroTik
Без предоплаты

Telegram: @Engineer_MikroTik

Конечно есть облачные IPYEY, но без использования облаков нужен белый IP адрес, который нельзя получить у большинства интернет провайдеров, например в малых населенных пунктах или просто LTE.

Сам сервис OZON видео требует подключение именно по белому IP в формате
rtsp://Логин:Пароль@БелыйIP:Порт/cam/realmonitor?channel=4&subtype=0

Лучшим решением будет подключить проводного провайдера с белым IP или купить SIM карту с белым IP. Но если такие варианты не подходят, остается арендовать сервер (либо ставить домой MikroTik и подключать белый IP) и строить туннель до MikroTik, который находится в ПВЗ.
Данный способ позволяет подключать несколько ПВЗ к одному серверу и использовать 1 внешний белый IP для заведения всех камер всех ПВЗ в OZON видео.
Причем в отличии от готовых облачных решений — данный подход варьируется от бесплатного сервера на домашнем MikroTik до хостинга за 5-20руб в сутки.
В статье будет использоваться отдельная таблица маршрутизации, OSPF, туннельные протоколы L2TP без IPsec, PPTP (резервный вариант) и SSTP (крайний вариант).
Wireguard является не дебагоспособным протоколом, в случае проблем его дольше всего диагностировать.

Сервер с белым IP

Для экономии и оптимизации можно установить домой MikroTik, например hAP AX2 или RB5009 если много ПВЗ, а так же подключить белый IP у провайдера.

Покупка VDS

Мы же будем настраивать CHR на VDSina хостинге (по ссылке скидка 10%).

Создаем стандартный сервер на Debian13 (не принципиально) и выбираем тариф исходя от количество камер и их потока (от 1 до 32Тб)
Создаем стандартный сервер на Debian13 (не принципиально) и выбираем тариф исходя от количество камер и их потока (от 1 до 32Тб)
1 камера с потоком 0.5Мбит съедает около 160-165Гб трафика в месяц
Ждем создания сервера
Ждем создания сервера
Получаем данные для входа от созданной VDS
Получаем данные для входа от созданной VDS

Установка CHR

Заходим через Putty на сервер
Заходим через Putty на сервер
И устанавливаем CHR в 1 присест
И устанавливаем CHR в 1 присест
apt install unzip && mount -t tmpfs tmpfs /tmp/ && cd /tmp && wget https://download.mikrotik.com/routeros/7.20.8/chr-7.20.8.img.zip && unzip chr-7.20.8.img.zip && dd if=chr-7.20.8.img of=/dev/vda bs=4M oflag=sync && echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger
Заходим в сервер через виртуальную консоль VNC
Заходим в сервер через виртуальную консоль VNC

Настройка CHR

Отказываемся читать лицензию, вводим login: admin без пароля
Отказываемся читать лицензию, вводим login: admin без пароля
Затем ОБЯЗАТЕЛЬНО ставим пароль на вход
Затем ОБЯЗАТЕЛЬНО ставим пароль на вход
Настраиваем сеть на ether1 интерфейсе, данные можно взять ниже
Настраиваем сеть на ether1 интерфейсе, данные можно взять ниже
/ip address/add interface=ether1 address=94.103.83.157/24
Аналогично добавляем шлюз
Аналогично добавляем шлюз
/ip route/add gateway=94.103.83.1
После этого сразу заходим через WinBox
После этого сразу заходим через WinBox
System > UsersИ меняем пароль
System > Users
И меняем пароль, а лучше добавляем нового администратора и удаляем старого
IP > ServicesОтключаем всё, кроме WinBox
IP > Services
Отключаем всё, кроме WinBox
Tools > BTest ServerОтключаем сервис проверки скорости
Tools > BTest Server
Отключаем сервис проверки скорости
IP > DHCP ClientОтключаем или удаляем
IP > DHCP Client
Отключаем или удаляем
IP > NeighborОтключаем обнаружение соседями
IP > Neighbor
Отключаем обнаружение соседями
Tools > MAC ServerОтключаем всё
Tools > MAC Server
Отключаем всё
IP > DNSУказываем DNS чтобы активировать CHR и работал NTP
IP > DNS
Указываем DNS чтобы активировать CHR и работал NTP
System > LicenseАктивируем учетной записью от https://mikrotik.com/client/
System > License
Активируем учетной записью от https://mikrotik.com/client/
System > ClockВыставляем Time Zone вручную
System > Clock
Выставляем Time Zone вручную
/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow
System > NTP ClientУказываем NTP сервера
System > NTP Client
Указываем NTP сервера
/system ntp client
set enabled=yes
/system ntp client servers
add address=0.ru.pool.ntp.org
add address=1.ru.pool.ntp.org
add address=2.ru.pool.ntp.org
add address=3.ru.pool.ntp.org

Interface List

Создаем интерфейс листы TUNNEL и WAN, в который сразу добавляем ether1
Создаем интерфейс листы TUNNEL и WAN, в который сразу добавляем ether1

Firewall

Filter Rules

Input
Разрешаем нужный трафик и блокируем все, что не разрешено
Разрешаем нужный трафик и блокируем все, что не разрешено
Открытый WinBox не совсем хорошо, но для этого примера приемлемо.
/ip firewall filter
add action=accept chain=forward comment=ERU connection-state=established,related,untracked
add action=accept chain=forward comment="ACL WAN" out-interface-list=WAN src-address-list=Access_WAN
add action=accept chain=forward comment="WAN DSTNATed" connection-nat-state=dstnat connection-state=new in-interface-list=WAN
add action=drop chain=forward comment="Drop all"
Forward
Разрешаем проброс портов DSTNATed и блокируем остальное
Разрешаем проброс портов DSTNATed и блокируем остальное
/ip firewall filter
add action=accept chain=forward comment=ERU connection-state=established,related,untracked
add action=accept chain=forward comment="ACL WAN" out-interface-list=WAN src-address-list=Access_WAN
add action=accept chain=forward comment="WAN DSTNATed" connection-nat-state=dstnat connection-state=new in-interface-list=WAN
add action=drop chain=forward comment="Drop all"

NAT

NAT разрешаем только по адрес-листуПробросы портов рассмотрим позже
NAT разрешаем только по адрес-листу
Пробросы портов рассмотрим позже
/ip firewall nat
add action=src-nat chain=srcnat comment="NAT WAN" ipsec-policy=out,none out-interface-list=WAN src-address-list=Access_WAN to-addresses=x.x.x.x
Если понадобится доступ в Интернет именно с внешнего сервера — это можно сделать добавив сеть или хост в адрес лист Access_WAN

Туннели

Использовать будем L2TP/PPTP/SSTP, выше мы открыли для них порты. Теперь настроим их пул адресов и профили.

IP > PoolСоздаем пул для выдачи PPP клиентам
IP > Pool
Создаем пул для выдачи PPP клиентам
/ip pool
add name=poolTUNNEL ranges=172.31.254.2-172.31.254.254
PPP > ProfilesДобавляем новый профиль с указанием ранее созданного pool адресов и Interface List
PPP > Profiles
Добавляем новый профиль с указанием ранее созданного pool адресов и Interface List
/ppp profile
add change-tcp-mss=yes interface-list=TUNNEL local-address=poolTUNNEL name=profileTUNNEL only-one=yes remote-address=poolTUNNEL use-compression=no use-ipv6=no use-mpls=no use-upnp=no
PPP > InterfaceАктивируем PPTP/L2TP/SSTP Server с указанием созданного профиля (не обаятельно)
PPP > Interface
Активируем PPTP/L2TP/SSTP Server с указанием созданного профиля (не обаятельно)
/interface l2tp-server server
set accept-proto-version=l2tpv2 authentication=mschap2 default-profile=profileTUNNEL enabled=yes max-mru=1400 max-mtu=1400 use-ipsec=yes
/interface pptp-server server
set default-profile=profileTUNNEL enabled=yes max-mru=1400 max-mtu=1400
/interface sstp-server server
set authentication=mschap2 default-profile=profileTUNNEL enabled=yes max-mru=1400 max-mtu=1400
Создаем учетные записи для ПВЗ из расчета роста в формате тип_туннеля_pvz_номер
PPP > Secrets
Создаем учетные записи для ПВЗ из расчета роста в формате тип_туннеля_pvz_номер
/ppp secret
add name=l2tp_pvz001 password=yugYJla$%iwket profile=profileTUNNEL service=l2tp
add name=pptp_pvz001 password=yugYJla$%iwket profile=profileTUNNEL service=pptp
add name=sstp_pvz001 password=yugYJla$%iwket profile=profileTUNNEL service=sstp
PPP > InterfaceПод них создаем статичные интерфейсы
PPP > Interface
Под них создаем статичные интерфейсы
/interface pptp-server
add name=pptp_pvz001 user=pptp_pvz001
/interface sstp-server
add name=sstp_pvz001 user=sstp_pvz001
/interface l2tp-server
add name=l2tp_pvz001 user=l2tp_pvz001

Маршрутизация OSPF

В нашем примере будет подключаться 1 ПВЗ, в котором сеть 192.168.1.0/24, по этому OSPF будет Backhone без деления на Area. Но при увеличении количество ПВЗ — деление на Area необходимо.

Routing > OSPF > InstancesСоздаем инстанс, где указываем Router ID и что мы анонсируем маршрут по умолчанию Originate Default: always
Routing > OSPF > Instances
Создаем инстанс, где указываем Router ID и что мы анонсируем маршрут по умолчанию Originate Default: always
/routing ospf instance
add disabled=no name=ospf-instance originate-default=always router-id=192.168.0.1
Routing > OSPF > AreasСоздаем backhone
Routing > OSPF > Areas
Создаем backhone
/routing ospf area
add disabled=no instance=ospf-instance name=ospf-area
Routing > OSPF > Instances TemplatesДобавляем созданные туннельные интерфейсыl2tp - cost10pptp - cost20sstp - cost30
Routing > OSPF > Instances Templates
Добавляем созданные туннельные интерфейсы
l2tp — cost10
pptp — cost20
sstp — cost30
/routing ospf interface-template
add area=ospf-area cost=10 disabled=no interfaces=l2tp_pvz001 type=ptp
add area=ospf-area cost=20 disabled=no interfaces=pptp_pvz001 type=ptp
add area=ospf-area cost=30 disabled=no interfaces=sstp_pvz001 type=ptp

Проброс портов

Мы заранее знаем, что на ПВЗ сеть 192.168.1.0/24, где 192.168.1.1 это сам MikroTik, а 192.168.1.200 — регистратор видеокамер или сама камера.

Делаем проброс WEB интерфейса с CHR на регистратор в ПВЗ
Делаем проброс WEB интерфейса с CHR на регистратор в ПВЗ
Слушаем tcp:81 на интерфейсе WAN
И направляем его на регистратор 192.168.1.200 с портом 80
И направляем его на регистратор 192.168.1.200 с портом 80
Аналогичный dstnat делаем ддя rtsp порта tcp:554
Аналогичный dstnat делаем ддя rtsp порта tcp:554
dst-nat до регистратора без замены порта
dst-nat до регистратора без замены порта
Можно менять порт, который слушаем на CHR, если у вас несколько камер, регистраторов и ПВЗ.
Так как MikroTIk в ПВЗ без белого IP, сделаем к нему доступ так же через проброс порта 8292
Так как MikroTIk в ПВЗ без белого IP, сделаем к нему доступ так же через проброс порта 8292
На стандартный 8291 до шлюза ПВЗ
На стандартный 8291 до шлюза ПВЗ

Подключение ПВЗ

В этой статье ПВЗ работает через USB модем, настройка которого «на скорую руку» описана в статье Быстрая настройка 4G LTE USB модема.

Туннели

Создаем аналогичный интерфейс лист TUNNEL
Создаем аналогичный интерфейс лист TUNNEL
/interface list
add name=TUNNEL
Затем профиль с указанием выше созданного интерфейс листа
Затем профиль с указанием выше созданного интерфейс листа
Создаем подключения к нашему CHR по L2TP/PPTP/SSTP с указанием profile_tunnel
Создаем подключения к нашему CHR по L2TP/PPTP/SSTP с указанием profile_tunnel
L2TP будет использоваться без IPsec, так как все равно RTSP видеотрафик, который идет до хостинга OZON не шифруется, а IPsec на старых устройствах типа RB2011/RB951 сильно грузит процессор.
Аналогично используем PPTP — он не безопасный, но нам нечего скрывать.
Убедимся, что туннели динамически добавились в интерфейс лист TUNNEL
Убедимся, что туннели динамически добавились в интерфейс лист TUNNEL

Таблица маршрутизации

Создаем Routing > Tables, который будет использоваться в маркировке маршрутов и соединений
Создаем Routing > Tables, который будет использоваться в маркировке маршрутов и соединений
/routing table
add disabled=no fib name=TUNNEL

Маркировка соединения и маршрута

IP > Firewall > MangleСлучаем в prerouting новый не маркированный трафик от туннелей, собранных в интерфейс лист TUNNEL
IP > Firewall > Mangle
Случаем в prerouting новый не маркированный трафик от туннелей, собранных в интерфейс лист TUNNEL
OZON Видео без внешнего IP
Маркируем как соединение con-TUNNEL
/ip firewall mangle
add action=mark-connection chain=prerouting comment="Mark Connection TUNNEL" connection-mark=no-mark connection-state=new in-interface-list=TUNNEL new-connection-mark=con-TUNNEL
В output ловим отмаркированный ранее трафик con-TUNNEL
В output ловим отмаркированный ранее трафик con-TUNNEL
OZON Видео без внешнего IP
И маркируем ранее созданной таблицей маршрутизации TUNNEL
/ip firewall mangle
add action=mark-routing chain=output comment="Mark Roution Out TUNNEL" connection-mark=con-TUNNEL new-routing-mark=TUNNEL
Теперь в prerouting маркированные соединения con-TUNNEL не из интерфейс листа TUNNEL
Теперь в prerouting маркированные соединения con-TUNNEL не из интерфейс листа TUNNEL
Аналогично маркируем таблицей маршрутизации TUNNEL
Аналогично маркируем таблицей маршрутизации TUNNEL
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Mark Routing !TUNNEL" connection-mark=con-TUNNEL in-interface-list=!TUNNEL new-routing-mark=TUNNEL

Динамическая маршрутизация OSPF

Так как туннели у нас резервируют друг друга, настроим динамическую маршрутизацию на OSPF, которая автоматически будет перестраивать маршрут при неработающих L2TP > PPTP > SSTP.
Создаем Instanse, где Router ID указываем шлюз на ПВЗ и ранее созданную таблицу маршрутизации
Routing > OSPF
Создаем Instanse, где Router ID указываем шлюз на ПВЗ и ранее созданную таблицу маршрутизации
/routing ospf instance
add disabled=no name=ospf-instance router-id=192.168.1.1 routing-table=TUNNEL
Создаем Area, она же backbone как и на CHR
Создаем Area, она же backbone как и на CHR
/routing ospf area
add disabled=no instance=ospf-instance name=ospf-area
Добавляем туннели с приоритетами как на CHRl2tp - cost10pptp - cost20sstp - cost30bridge делаем Passive для анонса сети до CHR
Добавляем туннели с приоритетами как на CHR
l2tp — cost10
pptp — cost20
sstp — cost30
bridge делаем Passive для анонса сети до CHR
/routing ospf interface-template
add area=ospf-area cost=20 disabled=no interfaces=pptp-out-chr type=ptp
add area=ospf-area cost=30 disabled=no interfaces=sstp-out-chr type=ptp
add area=ospf-area cost=10 disabled=no interfaces=l2tp-out-chr type=ptp
add area=ospf-area disabled=no interfaces=bridge passive
Видим маршрут по умолчанию в таблице TUNNEL через l2tp туннель
Видим маршрут по умолчанию в таблице TUNNEL через l2tp туннель

Подключение камеры OZON Видео

Напомню, что ранее мы создали проброс RTSP порта tcp:554 до 192.168.1.200, пора указать внешний IP нашего CHR в ссылке для подключения OZON камер.
Входим в кабинет OZON Видео
Входим в кабинет OZON Видео
Добавляем камеру в формате rtsp://Логин:Пароль@БелыйIP:Порт/cam/realmonitor?channel=4&subtype=0
Добавляем камеру в формате rtsp://Логин:Пароль@БелыйIP:Порт/cam/realmonitor?channel=4&subtype=0
Профессиональная настройка MikroTik
Без предоплаты

Telegram: @Engineer_MikroTik

Настройка MikroTik