Задача следующая.
Есть камера ip-камера Hikvision DS-2CD2043G0-I, роутер Mikrotik hAP ac lite (RB952UI-5AC2ND) и 4G USB модем Huawei E8372
Так как оператор Киевстар больше не выдаёт белые ip адреса при подключении к интернет, а нам необходимо получить доступ к камере и роутеру, мы вынуждены строить l2tp туннель в виртуалке с белым ip.
Купить виртуалку под VPN можно тут
Будем считать что у вас уже настроен Mikrotik хотя бы базовыми настройками.
Подключаем 4G UDB модем. В Interface List должен появиться интерфейс lte1. Если у вас другой UDB модем, то возможно устройство будет называться по другому.
Никаких дополнительных настроек мы не делали.
Для начала, необходимо «поднять» туннель между VPS и нашим роутером.
Ставим l2tp сервер и другие необходимые пакеты
[bash title=»код»]yum install -y ppp xl2tpd bind-utils[/bash]
Конфигурируем
[bash title=»код»]nano /etc/ppp/options.xl2tpd[/bash]
[bash title=»код»]ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1280
mru 1280
lock
lcp-echo-failure 10
lcp-echo-interval 60
connect-delay 5000
logfile /var/log/ppp/ppp.log[/bash]
[bash title=»код»]nano /etc/xl2tpd/xl2tpd.conf[/bash]
[bash title=»код»][global]
port = 1701
[lns default]
ip range = 10.0.0.200-10.0.0.255
local ip = 10.0.0.1
refuse chap = yes
refuse pap = yes
require authentication = yes
name=vpn-server
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes[/bash]
[bash title=»код»]nano /etc/ppp/chap-secrets[/bash]
[bash title=»код»]# Secrets for authentication using CHAP
# client server secret IP addresses
reg1 vpn-server пароль 10.0.0.10
reg2 vpn-server пароль 10.0.0.11[/bash]
В этом файле мы назначаем локальные ip нашим регистраторам или камера при подключении с разных мест. Чтобы при ребуте сервера не переназначались локальные Ip
Запускаем l2tp сервер
[bash title=»код»]service xl2tpd start[/bash]
Не забываем про автозапуск.
[bash title=»код»]chkconfig xl2tpd on[/bash]
Мы можем завести на одну виртуалку сразу несколько туннелей. В данном случае мы будем использовать логин reg1, которому будет присвоен локальный ip 10.0.0.10 при подключении.
На Mikrotik добавляем l2tp Client в PPP или из Interface List.
Вкладка Dial Out
Connect To: наш Ip или доменное имя виртуалки
User reg1 и наш пароль.
Мы не используем шифрование IPsec, поэтому больше ничего не меняем.
Можем поставить галочку на Allow Fast Path
Добавляем наши интерфейсы в Interface List в качестве WAN и маскарадим в IP — Firewall — NAT
[bash title=»код»]/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface list member
add interface=bridge_lan list=LAN
add interface=ISP1 list=WAN
add interface=lte1 list=WAN
add interface=l2tp-out list=WAN[/bash]
[bash title=»код»]chain=srcnat action=masquerade out-interface-list=WAN log=no log-prefix="" ipsec-policy=out,none[/bash]
Пробрасываем порты на Mikrotik.
[bash title=»код»]/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.0.50 to-ports=554 protocol=tcp dst-address=10.0.0.10 dst-port=554 log=no log-prefix=""
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.0.50 to-ports=8000 protocol=tcp dst-address=10.0.0.10 dst-port=8000 log=no log-prefix=""
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.0.50 to-ports=8888 protocol=tcp dst-address=10.0.0.10 dst-port=80 log=no log-prefix=""[/bash]
Где 192.168.0.50 локальный адрес ip-камеры, внутренней сети Mikrotik
to-ports=554 — rtsp порт ip-камеры
dst-address=10.0.0.10 — локальный адрес l2tp клиента Mikrotik
[bash title=»код»]/ip firewall mangle add chain=input action=mark-connection new-connection-mark=reg-conn passthrough=yes in-interface=l2tp-out_cam1 log=no log-prefix=""
/ip firewall mangle add chain=output action=mark-routing new-routing-mark=reg-route passthrough=no connection-mark=reg-conn log=no log-prefix=""
/ip firewall mangle add chain=forward action=mark-connection new-connection-mark=reg-conn-f passthrough=no in-interface=l2tp-out_cam1 log=no log-prefix=""
/ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark=reg-route passthrough=yes connection-mark=reg-conn-f in-interface=bridge log=no log-prefix=""[/bash]
И в конце создаём route
dst-address=0.0.0.0/0
Gateway = 10.0.0.1 — это Remote address нашего l2tp соединения (т.е. адрес l2tp Centos сервера)
Routing Mark = reg-route
В итоге порт прокинут. Пакеты побежали по всем правилам которые мы создали.
На виртуалке (вашем серверве с белым ip):
Для того чтобы наш CentOs 6 или CentOs 7 почувствовал себя не просто хостом в сети а полноценным роутером, нужно указать ему что он может пробрасывать трафик через себя.
Сделаем это, изменим строчку в файле /etc/sysctl.conf, а именно:
net.ipv4.ip_forward = 0
на
net.ipv4.ip_forward = 1
[bash title=»код»]nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p[/bash]
Если вы используете iptables, то необходимо открыть порты и настроить маршрутизацию.
[bash title=»код»]iptables -A FORWARD -p udp —sport 1701 -j ACCEPT
iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 554 -j ACCEPT
iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 8000 -j ACCEPT
iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 8291 -j ACCEPT
iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 8888 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 554 -j DNAT —to 10.0.0.10:554
iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 8000 -j DNAT —to 10.0.0.10:8000
iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 8291 -j DNAT —to 10.0.0.10:8291
iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 8888 -j DNAT —to 10.0.0.10:8888[/bash]
Если всё сделали правильно, вы сможете подключатся к вашему Mikrotik через Winbox, а также получите доступ к камере Hikvision DS-2CD2043G0-I через белый ip вашего VPS.