Zkusím to zjednodušit.
chain input je cíl pro pakety které končí na tomto routeru.
v chain forward se objeví všechny ostatní, ty co jím prochází zkrz.
src-nat se provádí až někde na konci zpracování paketů, kdežto dst-nat na začátku. Čili ve zbytku firewallu pracuješ s vnitřními IP, tvé veřejné tě moc nezajímají (krom speciálních případů je ani nevidíš).
Pravidla v jednom chainu se provádí sekvenčně, jako nudle příkazů.
Čili pokud chceš komplet zablokovat port 22, máš to správně. Drop na forwardu všeho s cílovým TCP portem 22. Zablokuješ tím sice i odchozí spojení, ale co už ...
Pokud chceš výjimku, musíš to dát před to. V podstatě to pravidlo zopakuješ, ale bude accept a musí mít i nějakou jinou podmínku co to zpřesní. Nejlépe address-list použitý v dst-address-list (píšu z hlavy).
Pokud ten address list dáš do zakazujícího pravidla, tak buď zakáže pakety s cílem definovaným v tom address listu, nebo naopak všechny ostatní, použiješ-li negaci.
No problem.
Každé pravidlo má i čítače, můžeš sledovat kde ti to přibývá.
Novější ROS má i možnost každé pravidlo logovat. U starších si to musíš udělat sám - zkopíruješ ho a jako action dáš LOG (a musí být před tím pravidlem co něco dělá).
A obecně, chceš-li radu, musíš podat též nějaké informace. Pokud možno kompletní. Věštit neumíme a ty dvě pravidla co jsi nám poskytl jsme vysvětlili. Do zbytku tvého routeru nevidíme.
Negaci address listu používám běžně. Chybu tam budeš mít někde ty.