要做 Network Address Translation (请参阅 NAT HOWTO) 以及封包过滤﹐已是很平常之事了。好消息是﹐将它们混合起来使用实是完全没问题的。
当你设计封包过滤的时候﹐可以完全不用理会您要做怎样的 NAT 。于封包过滤中看到的来源与目的地﹐只会是 `真正的' 来源和目的地。举例来说﹐如果您做 NAT ﹐要将所有连到 1.2.3.4 port 80 的连线送到 10.1.1.1 port 8080 去﹐这样封包过滤会看哪些送到 10.1.1.1 port 8080 (真正的目的地)﹐而不是 1.2.3.4 port 80。类似的﹐您也可以忽略封包伪装﹕封包会看起来是来自真正的内部 IP 地址(比方 10.1.1.1)﹐回应也看起来送回那里。
您可以运用 `state' 比对延伸(match extension)而无需让封包过滤做额外的工作﹐因为无论如何﹐ NAT 都会要求连线追踪。为了增强在 NAT HOWTO 里面那个简单的封包伪装例子﹐去挡掉来自 ppp0 界面的任何新连接﹐您可以这样做﹕
# Masquerade out ppp0
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Disallow NEW and INVALID incoming or forwarded packets from ppp0.
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 0 -m state --state NEW,INVALID -j DROP
# Turn on IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward