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 будет перенаправлен