Однажды мне понадобилось пробросить порт к VPN серверу который имел серый IP адрес и находился за NAT.
Допустим на сервере используется правило для NAT:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens3f1 -j SNAT --to-source 172.16.5.2-172.16.5.100 --persistent
Теперь на один из NAT IP адресов пробросим порт к локальному устройству с OVPN (10.0.0.2):
iptables -t nat -A PREROUTING -d 172.16.5.5/32 -i ens3f1 -p tcp -m tcp --dport 1194 -j DNAT --to-destination 10.0.0.2:1194
Еще пример для L2TP:
iptables -t nat -A PREROUTING -d 172.16.5.5/32 -i ens3f1 -p udp --dport 500 -j DNAT --to-destination 10.0.0.2:500
iptables -t nat -A PREROUTING -d 172.16.5.5/32 -i ens3f1 -p udp --dport 1701 -j DNAT --to-destination 10.0.0.2:1701
iptables -t nat -A PREROUTING -d 172.16.5.5/32 -i ens3f1 -p udp --dport 4500 -j DNAT --to-destination 10.0.0.2:4500
Локальным устройством был MikroTik, соответственно на нем должны быть открыты порты которые пробрасываются через NAT, а также обновлена прошивка до последней версии чтобы избежать уязвимостей.
Смотрите также мои статьи:
Настройка удаленного доступа в Mikrotik
Настройка IPTables