masquerade на ppp интерфейсах

Автор Streka4ok, 05 января 2021, 19:00:04

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Streka4ok

Всем привет!
Имею VPS-ку на которой развернут L2TP + IPsec сервер.
К данному серверу, по туннелю, подключена ШеЛезяка Mikrotik BaseBox 5 с LTE модулем (получает IP за NAT-ом провайдера)
В доме, к локалке, подключена IP камера. Произведен проброс портов до VPN сервера по туннелю. Для наблюдения за хатой цепляюсь к белому IP VPS-ки и мониторю хату, НО, с какой проблемой столкнулся)
По началу к VPN серверу был подключен только я и имя туннельного соединения на VPN-сервере всегда было одинаковым "ppp0", НО, ситуация поменялась и появилась необходимость подцепить к VPN-ке еще пару LTE точек доступа.
Теперь у меня есть несколько туннельных соединений (ppp0, ppp1, ppp2 и т.д.) и мой скрипт (rc.local) уже не актуален! Пришлось докинуть пару строк Маскарада
Каждому клиенту в "chap-secrets" в соответствии с логином и паролем забиндил IP-адрес.

LTE - не самый стабильный вид связи и порой клиенты пере-подключаются! После таких сбоев им могут присвоится другие имена туннельного интерфейса (ppp1 -> ppp3) и статические правила iptables начинают отрабатывать не том интерфейсе.

Собственно - сам скриптик:
######################################################################
#!/bin/sh -e
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
sleep 30
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
### NEW
iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp2 -j MASQUERADE
### END-NEW
iptables -t nat -A PREROUTING -p tcp -i ens3 -d 37.77.СЕКРЕТ :P --dport СЕКРЕТ :P -j DNAT --to 10.1.1.10:СЕКРЕТ :P
iptables -t nat -A PREROUTING -p udp -i ens3 -d 37.77.СЕКРЕТ :P --dport СЕКРЕТ :P -j DNAT --to 10.1.1.10:СЕКРЕТ :P
iptables -t nat -A PREROUTING -p tcp -i ens3 -d 37.77.СЕКРЕТ :P --dport СЕКРЕТ :P -j DNAT --to 10.1.1.10:СЕКРЕТ :P
iptables -t nat -A PREROUTING -p udp -i ens3 -d 37.77.СЕКРЕТ :P --dport СЕКРЕТ :P -j DNAT --to 10.1.1.10:СЕКРЕТ :P
iptables -t nat -A PREROUTING -p tcp -i ens3 -d 37.77.СЕКРЕТ :P --dport СЕКРЕТ :P -j DNAT --to 10.1.1.10:СЕКРЕТ :P
iptables -t nat -A PREROUTING -p udp -i ens3 -d 37.77.СЕКРЕТ :P --dport СЕКРЕТ :P -j DNAT --to 10.1.1.10:СЕКРЕТ :P
exit 0
######################################################################

ТЕПЕРЬ ВОПРОС! Можно ли как то автоматизировать применение правила masquerade на динамических интерфейсах ppp% ???
(При создании ppp подключения - автоматическое применение masquerade к туннельному интерфейсу... Пахнет скриптиками и cron-ом  :-\ )
Или - наставьте меня на путь мудрый и скажите - как лучше в этой ситуации поступить?

ogost

А ваш микротик поддерживает wireguard? По-моему он проще в настройке, и интерфейс не отваливается при нестабильном коннекте.

Streka4ok

#2
Здравствуйте. Из коробки поддержки данного VPN протокола нет. Даже OpenVPN на Mikrotike немного иначе работает. Сама компания не всегда поспевает за новыми сетевыми новшествами и не успевает внедрить их сразу же.
Выбрал L2TP + IPsec (xl2tpd + strongswan) т.к. именно это комбинация чаще всего поддерживается из коробки на большинстве устройств, умеющих работать с сетью.

Я уже подумывал - а не накатить ли мне на VPS какой ни будь дистрибутив, делающий его облачным маршрутизатором) НО, помимо VPN-ки я так же держу на сервере Nginx и часто практикуюсь в различных сферах.

Поэтому и решил задать вопрос, можно ли как то забиндить туннельный интерфейс по аналогии с соответствием IP адреса к пользователю


Cообщение объединено 05 января 2021, 21:43:31

Ремарочка!
поддержка WireGuard была реализована 21 августа 2020 года, НО, в бетта-версии прошивки для маршрутизаторов Mikrotik.
Думаю, сменить протокол и перейти на бета-прошивку не самый лучший вариант )

ogost

У l2tp должен быть в конфигах способ указать название интерфейса

gardarea51

#4
Вроде достаточно сделать что-то вроде masquerade ppp+
Не помню уже честно говоря, но все ppp можно указать одной строкой в iptables.

ps: да, так и есть:
iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE

pps: а чтобы динамически выполнять какие-то действия при создании/падении некоего интерфейса ppp вам нужно смотреть в сторону /etc/ppp/ip-up.d/ /etc/ppp/ip-down.d/