Нужна помощь в создании правила iptable, которое будет перенаправлять все запросы диапазона IP-адресов 172.16.0.1 на 172.16.0.120 с диапазоном портов 20-8081 в службу localhost, прослушивающую порт 22215, но это правило не должно перехватывать IP-адрес 172.16.0.111 с портом 443 ( т. е. 172.16.0.111:443 должен иметь прямой доступ через Интернет).

iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT

После применения вышеуказанного правила все запросы, которые имеют ip и порт в указанном выше диапазоне, перенаправляются на 127.0.0.1:22215. Но я не понимаю, как исключить ip 172.16.0.111 с портом 443.

0
muru 19 Апр 2021 в 01:39

1 ответ

Лучший ответ

Правила брандмауэра обрабатываются сверху вниз. Поместите конкретные правила вверху, а общие правила (универсальные правила) внизу. Что бы вы ни делали с 172.16.0.111:443, его правило должно идти сверху (перед тремя опубликованными вами правилами)

iptables -I INPUT --src 172.16.0.111 -p tcp --dport 443 -j ACCEPT
iptables -I OUTPUT --src 172.16.0.111 ACCEPT
iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Примечание. Возможно, вы захотите ужесточить правило № 2, указав номер исходного или целевого порта.

0
Bruce Malaudzi 18 Апр 2021 в 18:21