
Я запускаю сервер openvpn на своем VPS с публичным IP. Есть сервер backend, подключенный к VPN. Вот IP-адреса VPN: VPS: 10.8.0.1 сервер backend: 10.8.0.2. eth0 — публичный интерфейс, tun0 — интерфейс VPN
Теперь я хотел бы перенаправить, например, порт 22 на внутреннем сервере на порт 2200 на VPS. Вот что я сделал на VPS (на основе нескольких руководств и уже заданных вопросов):
- открыл порт 2200
- включена переадресация IPv4
поместите это в /etc/ufw/before.rules (да, я использую ufw и все работает правильно):
*нат
:ПРЕДВАРИТЕЛЬНЫЙ ПЕРЕХОД ПРИНЯТЬ [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
говорит, что порт «фильтруется», и когда я пытаюсь подключиться по ssh к порту 2200, он просто зависает и ничего не делает, я даже не получаю никаких ошибок - это также происходит, когда я пытаюсь подключиться по ssh с VPS на внутренний сервер через VPN (что обычно работает). Что я упускаю?
решение1
Для тех, кто все еще ищет решение.
В зависимости от вашей политики FORWARD (предполагая, что это DROP)
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
Также можно добавить это правило для локально инициированных соединений: x --> x:80
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