Доброго времени суток!
Помогите найти ошибку в правиле IPTABLES. Как то, все не очевидно получается. По логике должно работать, а все не работает.
#!/bin/sh
# для удобства, особенно если интерфейсов несколько
INET_IFACE="
eth0
"
# доверенные сервера
PRIV_IP="
192.168.0.102
192.168.0.103
"
# перечень портов только для разрешённых диапазонов. ограничение до 15 портов.
TCP_PORTS_PRIV="873,1379,3306,4567,4568,4444"
UDP_PORTS_PRIV=""
# перечень портов в кавычках через запятые пробелов, которые нужно разрешить (отдельно TCP и UDP)
TCP_PORTS="80,123,22,53"
TCP_PORTS_OUT="80,123,22,53,25"
# тоже для удобства
IPTABLES="/sbin/iptables"
IPTABLES6="/sbin/ip6tables"
# стандартные действия
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
#IP6 полностью блокируем. Он нам не нужен.
$IPTABLES6 -P INPUT DROP
$IPTABLES6 -P OUTPUT DROP
$IPTABLES6 -P FORWARD DROP
# удаляем все имеющиеся правила
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
$IPTABLES -Z
$IPTABLES -t nat -Z
$IPTABLES -t mangle -Z
# tcp, прошедшие основную проверку
$IPTABLES -N allowed
# открыты для всех порты
$IPTABLES -N allowed_ports_in
# открыты для всех порты OUTPUT
$IPTABLES -N allowed_ports_out
# все пакеты соотв. протоколов таблицы INPUT
$IPTABLES -N tcp_packets_in
$IPTABLES -N tcp_packets_out
# Доверенные IP
$IPTABLES -N trust_ip_in
$IPTABLES -N trust_ip_out
# принимаем все пакеты, относящиеся к уже установленным соединениям
$IPTABLES -A allowed -p TCP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -j RETURN
for ip in $PRIV_IP;
do
$IPTABLES -A trust_ip_in -s $ip -i $INET_IFACE -p TCP -m multiport --dports $TCP_PORTS_PRIV -j RETURN
$IPTABLES -A trust_ip_in -i $INET_IFACE -p TCP -j DROP
done
for ip in $PRIV_IP;
do
$IPTABLES -A trust_ip_out -d $ip -o $INET_IFACE -p TCP -m multiport --sports $TCP_PORTS_PRIV -j RETURN
$IPTABLES -A trust_ip_out -o $INET_IFACE -p TCP -j DROP
done
#Разрешенные порты для всех
$IPTABLES -A allowed_ports_in -p TCP -m multiport --dports $TCP_PORTS -j ACCEPT
$IPTABLES -A allowed_ports_in -p TCP -j RETURN
#Разрешенные порты для всех OUTPUT
$IPTABLES -A allowed_ports_out -p TCP -m multiport --sports $TCP_PORTS_OUT -j ACCEPT
$IPTABLES -A allowed_ports_out -p TCP -j RETURN
# здесь отрываем порты для всех наших серверов
# INPUT tcp_packets_in
$IPTABLES -A tcp_packets_in -p TCP -j allowed_ports_in
$IPTABLES -A tcp_packets_in -p TCP -j trust_ip_in
$IPTABLES -A tcp_packets_in -p TCP -j ACCEPT
# OUTPUT tcp_packets_out
$IPTABLES -A tcp_packets_out -p TCP -j allowed_ports_out
$IPTABLES -A tcp_packets_out -p TCP -j trust_ip_out
$IPTABLES -A tcp_packets_out -p TCP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $INET_IFACE -j allowed
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets_in
$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j allowed
$IPTABLES -A OUTPUT -p TCP -o $INET_IFACE -j tcp_packets_out
Это вырезка из всего кода. Тут проблема заключается в этих двух циклах. Там на отказ не хочется подключаться указанный в переменной $PRIV_IP сервер к порту, указанному в $TCP_PORTS_PRIV. Стоит Galera cluster вроде все это его порты. Так же пробую подключиться по telnet (Так быстрее можно определить, открыт порт или нет). telnet 192.168.0.104 3306 не подключается. 192.168.0.104 это сервер, на котором запускается этот скрипт(iptables)
Помогите разобраться в чем проблема!?
ТС не появлялся на Форуме более полугода по состоянию на 13/07/2019 (последняя явка: 28/07/2017). Модератором раздела принято решение закрыть тему.
--zg_nico