Вот частичный вывод моих iptables:
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
22866 3280283 ufw-before-logging-output all -- * * 0.0.0.0/0 0.0.0.0/0
22866 3280283 ufw-before-output all -- * * 0.0.0.0/0 0.0.0.0/0
3307 353252 ufw-after-output all -- * * 0.0.0.0/0 0.0.0.0/0
3307 353252 ufw-after-logging-output all -- * * 0.0.0.0/0 0.0.0.0/0
3307 353252 ufw-reject-output all -- * * 0.0.0.0/0 0.0.0.0/0
3307 353252 ufw-track-output all -- * * 0.0.0.0/0 0.0.0.0/0
Chain ufw-before-output (1 references)
pkts bytes target prot opt in out source destination
2214 368749 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
7342 1051009 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
1884 204643 ufw-user-output all -- * * 0.0.0.0/0 0.0.0.0/0
Chain ufw-user-output (1 references)
pkts bytes target prot opt in out source destination
2 120 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Основываясь на моем понимании, правила соответствуют сверху вниз. Когда пакет соответствует завершающему действию (например, ПРИНЯТЬ), он остановится. Итак, почему пакет ssh может достичь правила 3 в цепочке ufw-before-output и быть отброшенным? Почему это не принято правилом 1 в Цепочке ufw-before-output?
Правило 1 в цепочке ufw прежде чем выводом имеет дополнительное условие того, чтобы быть только для локального интерфейса (lo). Два пакета, которые поражают ufw-user-output цепочечное правило ОТБРАСЫВАНИЯ, не были бы предназначены для локального интерфейса. Они были также, вероятно, новым соединением TCP syn пакеты и поэтому не удовлетворили СВЯЗАННОЕ, УСТАНОВЛЕННОЕ правило.