Hallo whiggy
"Firewall" bezeichnet nur ein Konzept und nicht eine bestimmte Technologie. m0n0wall verwendet Stateful Packet Filtering: es wird jedes Paket untersucht und dann entschieden, ob es weitergeleitet oder verworfen wird - und dies ausschliesslich aufgrund der Informationen in den Headern und einer Zustandstabelle. Die Nutzdaten werden also nicht angeschaut. Das "Stateful" bedeutet, dass sich m0n0wall die offenen Verbindungen merkt und sicherstellt, dass z.B. bei TCP jede neue Verbindung mit SYN/SYNACK beginnt. Zudem wird Stateful Packet Filtering für UDP und andere IP-Protokolle gebraucht (sonst könnte man bei einem UDP-Paket vom Internet gar nicht mehr sagen, ob es eine Antwort auf ein vorhergehendes UDP-Paket von einem Rechner im LAN darstellt oder nicht).
Somit ist m0n0wall schon eine "richtige Firewall". NAT/PAT hat auch so gut wie nichts mit Paketfilterung zu tun; es wirkt halt einfach als Firewall, indem auf der WAN-Schnittstelle eingehende Pakete, die zu Verbindungen gehören, welche nicht von einem Rechner im LAN aufgebaut wurden, gar nicht weitergeleitet werden können, weil die Zieladresse im LAN unbekannt ist.
Was du mit "richtige Firewall" meinst, ist wohl eine Application-Level-Firewall: die untersucht den Verkehr bis zum Application-Layer und kann daher auch kompliziertere Dinge tun, die durch reines Inspizieren einzelner Pakete nicht machbar sind: wie eben z.B. sicherzustellen, dass über Port 80 nur HTTP gemacht wird. Dafür müssen ggf. mehrere Pakete zusammengesetzt werden, bevor eine Entscheidung getroffen werden kann: man kann nicht mehr einfach Paket für Paket entscheiden.
Sowas wäre auf Embedded-Computern (der primären Zielplattform von m0n0wall) aber gar nicht mit vernünftigem Datendurchsatz möglich: da braucht es entweder leistungsfähigere PCs oder dann (wie bei vielen kommerziellen Herstellern) spezielle Hardware (ASICs).
Hoffe, mit diesen Ausführungen geholfen zu haben.
Weitere Infos gibt's z.B. unter
http://de.wikipedia.org/wiki/Firewall.
Gruss,
Manuel