Задача следующая.
Есть камера 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 сервер и другие необходимые пакеты
yum install -y ppp xl2tpd bind-utils
Конфигурируем
nano /etc/ppp/options.xl2tpd
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
nano /etc/xl2tpd/xl2tpd.conf
[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
nano /etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses reg1 vpn-server пароль 10.0.0.10 reg2 vpn-server пароль 10.0.0.11
В этом файле мы назначаем локальные ip нашим регистраторам или камера при подключении с разных мест. Чтобы при ребуте сервера не переназначались локальные Ip
Запускаем l2tp сервер
service xl2tpd start
Не забываем про автозапуск.
chkconfig xl2tpd on
Мы можем завести на одну виртуалку сразу несколько туннелей. В данном случае мы будем использовать логин 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
/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
chain=srcnat action=masquerade out-interface-list=WAN log=no log-prefix="" ipsec-policy=out,none
Пробрасываем порты на Mikrotik.
/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=""
Где 192.168.0.50 локальный адрес ip-камеры, внутренней сети Mikrotik
to-ports=554 — rtsp порт ip-камеры
dst-address=10.0.0.10 — локальный адрес l2tp клиента Mikrotik
/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=""
И в конце создаём 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
nano /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p
Если вы используете iptables, то необходимо открыть порты и настроить маршрутизацию.
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
Если всё сделали правильно, вы сможете подключатся к вашему Mikrotik через Winbox, а также получите доступ к камере Hikvision DS-2CD2043G0-I через белый ip вашего VPS.