LINUX.ORG.RU

История изменений

Исправление anc, (текущая версия) :

1. -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
2. -A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j REJECT --reject-with tcp-reset
3. -A FORWARD -m state --state INVALID -j DROP
4. -A FORWARD -i lo -o lo -j ACCEPT
5. -A FORWARD -j DROP
6. -A FORWARD -s 10.0.0.0/8 -i vmbr1 -m conntrack --ctstate NEW -j ACCEPT
7.-A FORWARD -d 10.0.0.3/32 -i eno3 -p tcp -m tcp --dport 456 -j ACCEPT


Проставил цифирки что бы было легче обьяснить.
На правиле
5. -A FORWARD -j DROP
Заканчивается вся обработка цепочки. Остальные уже не играют роли. Правила читаются последовательно, и применяются до первого совпадения типа DROP/REJECT/ACCEPT (не совсем так, есть ещё варианты но в вашем случае оно точно так).
Рассмотрим ваши правила. Улетающий пакет назовем его state NEW , как видите по цепочке он не попадает под строки 1. и 4. где ACCEPT, но попадает под строку 5. Всё, обработка цепочки завершена, пакет дропаем.
Строки 2 и 3 защита от флуда. Строка 4. Безмыслеена так как в цепочку FORWARD пакет не попадет.

ЗЫ Обращаю внимание на state NEW, это первый пролетевший пакет, а не SYN на примере tcp. Та же фигня с INVALID (на самом деле нет, тоже нюансы). А то многие думают иначе. В целом прочитайте iptables tutorial многое станет понятно.

Исправление anc, :

1. -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
2. -A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j REJECT --reject-with tcp-reset
3. -A FORWARD -m state --state INVALID -j DROP
4. -A FORWARD -i lo -o lo -j ACCEPT
5. -A FORWARD -j DROP
6. -A FORWARD -s 10.0.0.0/8 -i vmbr1 -m conntrack --ctstate NEW -j ACCEPT
7.-A FORWARD -d 10.0.0.3/32 -i eno3 -p tcp -m tcp --dport 456 -j ACCEPT


Проставил цифирки что бы было легче обьяснить.
На правиле
5. -A FORWARD -j DROP
Заканчивается вся обработка цепочки. Остальные уже не играют роли. Правила читаются последовательно, и применяются до первого совпадения типа DROP/REJECT/ACCEPT (не совсем так, есть ещё варианты но в вашем случае оно точно так).
Рассмотрим ваши правила. Улетающий пакет назовем его state NEW , как видите по цепочке он не попадает под строки 1. и 4. где ACCEPT, но попадает под строку 5. Всё, обработка цепочки завершена, пакет дропаем.
Строки 2 и 3 защита от флуда. Строка 4. Безмыслеена так как в цепочку FORWARD пакет не попадет.

ЗЫ Обращаю внимание на state NEW, это первый пролетевший пакет, а не SYN на примере tcp. Та же фигня с INVALID. А то многие думают иначе. В целом прочитайте iptables tutorial многое станет понятно.

Исходная версия anc, :

1. -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
2. -A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j REJECT --reject-with tcp-reset
3. -A FORWARD -m state --state INVALID -j DROP
4. -A FORWARD -i lo -o lo -j ACCEPT
5. -A FORWARD -j DROP
6. -A FORWARD -s 10.0.0.0/8 -i vmbr1 -m conntrack --ctstate NEW -j ACCEPT
7.-A FORWARD -d 10.0.0.3/32 -i eno3 -p tcp -m tcp --dport 456 -j ACCEPT


Проставил цифирки что бы было легче обьяснить.
На правиле
5. -A FORWARD -j DROP
Заканчивается вся обработка цепочки. Остальные уже не играют роли. Правила читаются последовательно, и применяются до первого совпадения типа DROP/REJECT/ACCEPT (не совсем так, есть ещё варианты но в вашем случае оно точно так).
Рассмотрим ваши правила. Улетающий пакет назовем его state NEW , как видите по цепочке он не попадает под строки 1. и 4. где ACCEPT, но попадает под строку 5. Всё, обработка цепочки завершена, пакет дропаем.
Строки 2 и 3 защита от флуда. Строка 4. Безмыслеена так как в цепочку FORWARD пакет не попадет.