Ситуация следующая. Арендовал у хостера VDS на ubuntu 22.04 с белым ip, настроил на нём vpn-server (10.15.0.1), а дома на ПК за натом настроил vpn-client (10.15.0.2). На сервере запустил реверс-прокси (nginx в контейнере), и обращение к ip сервера летает через vpn к клиенту, отдавая страницу с последнего. Теперь к проблеме: Отправляю netflow трафик на сервер (порт 2055). На нём-же смотрю утилитой iptraf-ng, что приходит на интерфейс ens0 - почти каждую секунду есть netflow-трафик от микротика:
UDP (1492 bytes) from <ip микротика>:2055 to <ip сервера>:2055 on ens3
Вроде всё ок. Нужно перенаправить этот-же трафик клиенту. В файле /etc/sysctl.conf раскомментировал строчку net.ipv4.ip_forward=1, перезагрузил, и давай писать в iptables. Пробовал так:
iptables -t nat -A PREROUTING -p udp -i ens0 --dport 2055 -j DNAT --to-destination 10.15.0.2:2055
и так:
iptables -t nat -A PREROUTING -p udp -d <ip сервера> --dport 2055 -j DNAT --to-destination 10.15.0.2:2055
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
даже пробовал делать так, по мануалу для tcp-трафика, только протокол поменял на udp:
iptables -t nat -A PREROUTING -i ens3 -p udp --dport 2055 -m state --state NEW -j DNAT --to 10.15.0.2:2055
iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -p udp -m udp --dport 2055 -j SNAT --to-source 10.15.0.1
Но результата нет - я не только не вижу приходящих udp-пакетов через iptraf-ng на клиенте, но и не вижу исходящих на сервере на интерфейсе tun0.
iptables до изменений имел вид:
iptables -L -nv -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2879 132K DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
Таблицы filter:
iptables -L -nv -t filter
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
В какую сторону копать? Как узнать, почему пакеты не улетают? В качестве транспорта для vpn выбран udp - может ли это оказывать влияние?
P.S. когда запускаю на сервере реверс-прокси nginx и получаю в браузере страничку с клиента, что характерно, пакетов на интерфейсе tun0 клиента тоже не наблюдается, но трафик бежит через порт 1194 (vpn) интерфейса eno4 (сетевуха на клиенте) теми-же udp пакетами. Но на всякий случай уточню, nfcapd на клиенте всё равно не видит трафика (все файлы пустые), и tcpdump тоже не видит трафика на порту 2055.