Я запускаю сервер openvpn на своем VPS с общедоступным IP. К VPN подключен внутренний сервер. Это IP-адреса в VPN: VPS: 10.8.0.1 внутренний сервер: 10.8.0.2. eth0 - это общедоступный интерфейс, tun0 - это интерфейс VPN.
Теперь я хотел бы перенаправить, например, порт 22 на внутреннем сервере на порт 2200 на VPS. Вот что я сделал на VPS (на основе нескольких руководств и уже заданных вопросов):
поместите это в /etc/ufw/before.rules (да, я использую ufw, и он работает правильно):
* нац
: PREROUTING ACCEPT [0: 0]
: ПРИНЯТИЕ ПОСТРОУТИРОВКИ [0: 0]
-A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.8.0.2:22
-A POSTROUTING -d 10.8.0.2 -p tcp --dport 22 -j SNAT --to-source VPS-public-IP: 2200
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j МАСКАРАД
Перезагрузил ufw или даже все перезагрузил ...
Пробовал другие решения, закомментировав некоторые строки (например, первое правило POSTROUTING выше). Очевидно, ничего не помогло.
Выход nmap VPS-public-IP -p 2200
говорит, что порт `` отфильтрован '', и когда я пытаюсь подключиться к порту 2200 по ssh, он просто зависает и ничего не делает, я даже не получаю никаких ошибок - это также происходит, когда я пытаюсь выполнить ssh с VPS на внутренний сервер через VPN (который нормально работает). Что мне не хватает?
Для людей, которые все еще ищут решение.
iptables -t nat -A PREROUTING -p tcp -d xx.xx.xxx.xxx --dport 80
-j DNAT --to-destination yyy.yyy.yy.yy:80
iptables -A FORWARD -p tcp -d yyy.yyy.yy.yy --dport 80 -j ACCEPT
Result: x:80 --> X --y:80--> Y
iptables -t nat -A POSTROUTING -p tcp -d yyy.yyy.yy.yy --dport 80
-j SNAT --to-source xx.xx.xxx.xxx
Result: x:80 --> X <--y:80--> Y
iptables -A FORWARD -p tcp -s yyy.yyy.yy.yy --sport 80 -j ACCEPT
Result: x:80 <--> X <--y:80--> Y
iptables -t nat -A OUTPUT -p tcp --dport 80 -d xx.xx.xxx.xxx
-j DNAT --to-destination yyy.yyy.yy.yy:80
Result:
x:80 ->- X <--y:80--> Y
|_____V