DMZ через OpenVPN

Я настраиваю сервер OpenVPN. Я хочу, чтобы он перенаправлял любое входящее соединение (кроме портов 22 (ssh) и 1194 (сам VPN-сервер)) к клиенту, подключенному к VPN.

Сервер VPN будет жить на vpn.example.com. Клиент находится на 10.8.0.2, шлюз VPN - на 10.8.0.1.

Как мне настроить DMZ для этого?

Сноски:

Я нашел, как перенаправить один порт через VPN здесь: переадресация портов с OpenVPN

Суть в том, чтобы бежать iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p tcp --dport PORT_TO_REDIRECT -j DNAT --to-destination 10.8.0.2

Тем не менее, это работает только для одного порта за раз, я очень люблю решение, как --dport *

2 ответа

Если вы хотите перенаправить только tcp на ваш клиент, вы можете использовать:

iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p tcp --dport ! 22 -j DNAT --to-destination 10.8.0.2

Это перенаправит все tcp-пакеты, кроме тех, к порту 22 (sshd). Это должно работать до тех пор, пока вы используете OpenVPN на udp (обычный случай). Если вы хотите перенаправить также udp, добавьте:

iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p udp --dport ! 1194 -j DNAT --to-destination 10.8.0.2

И еще есть icmp: вы, вероятно, захотите перенаправить хотя бы часть из этого тоже.

Вместо того, чтобы указывать трафик (почти весь в вашем случае) для перенаправления, может быть проще обратить проблему:

iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p udp --dport 1194 -j RETURN
iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -j DNAT --to-destination 10.8.0.2

-j RETURN означает остановить обработку текущей цепочки. Первые 2 правила выше определяют случаи "короткого замыкания" вашего правила перенаправления. Все, что не соответствует первым двум правилам, затем перенаправляется.

Одна удобная ссылка на iptables: https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html

В любом случае на этот вопрос уже можно было ответить, но вы можете использовать это в вашем /etc/network/interfaces

 post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
 post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE

это правило устанавливает полный nat для любых портов, это можно ограничить, установив, например, 10.8.0.3/32 вместо 10.0.0.0/8 для одного ip на nat любого порта на eth0, который должен быть заменен вашим интерфейсом

Кроме того, для переадресации определенного порта вы можете использовать

--dport 20000:22000

в этом примере порт от 20 до 22k будет перенаправлен

Другие вопросы по тегам