Много често се изисква да правите едновременно NAT (виж NAT HOWTO) и филтриране на пакети. Добрата новина е, че те работят доста добре заедно.
Изградете своя пакетен филтър, като напълно пренебрегване факта, че използвате NAT. Адресите на изпращача и получателя, които ще види пакетния филтър ще бъдат `истинските' адреси. Например, ако правите DNAT за да изпращате всички връзки за 1.2.3.4 на порт 80 към 10.1.1.1 на порт 8080, то пакетния филтър ще види пакети отиващи към 10.1.1.1 на порт 8080 (истинското направление), а не към 1.2.3.4 на порт 80. По подобен начин може да игнорирате и употребата на masquerading: ще изглежда, че пакетите 'идват' от техните истински вътрешни IP адреси (примерно 10.1.1.1), и отговорите ще се връщат пак там.
Може да използвате `state' разширенията без да натоварване филтъра допълнително, защото използването на NAT изисква употребата на механизмите за преследяване състоянието на връзките. За да подобрим простият пример за маскиране от NAT HOWTO, като забраним всички нови връзки идващи от интерфейса ppp0 interface, може да използваме това:
# Маскирай всичко излизащо през ppp0
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Забрани NEW и INVALID идващи от ppp0.
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP
# Включване на IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward