Как мне создать правила iptables со следующими требованиями?
ОС: Centos 6.5 / RH 6.5
Ответ на все такие вопросы в пути iptables
правила процессов, т.е. выигрывает первый диспозитивный матч. Это означает, что вы сначала пишете свое наиболее конкретное правило, переходя к наименее конкретному; например:
iptables -A INPUT -p tcp --dport 12001 -s a.b.c.d -j ACCEPT
iptables -A INPUT -p tcp --dport 12001 -j REJECT
# and similarly for UDP, then...
iptables -A INPUT -j ACCEPT
Первый разрешает трафик с указанного предпочтительного адреса (здесь a.b.c.d) на указанный порт (12001); второй отклоняет весь другой трафик к этому порту; третий позволяет все остальное.
В результате правило 2 не обязательно должно содержать исключение для одобренного трафика, поскольку правило 1 имеет уже разрешил это; разрешенный трафик никогда не увидит правило 2, поэтому оно вас не беспокоит. Точно так же правило 3 не должно иметь дело с отказом от большей части трафика на порт 12001, потому что правило 2 уже имеет дело с этим.