Я настраиваю сервер 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 *
Если вы заботитесь о перенаправлении только 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#RETURNTARGET
в любом случае на это, возможно, уже был дан ответ, но вы можете использовать это в своем / 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 для любых портов, это можно ограничить, установив значение i. е. 10.8.0.3/32 вместо 10.0.0.0/8 для одного ip для nat любого порта на eth0, который должен быть заменен вашим интерфейсом
Кроме того, для пересылки определенного диапазона портов вы можете использовать
--dport 20000:22000
в этом примере будет перенаправлен порт от 20 до 22k