NACL is a firewall at the subnet level. It controls what traffic is allowed in and out of an entire subnet.
Example:
Rule #100 → ALLOW 10.0.0.10/32
Rule #200 → DENY 10.0.0.10/32 ← never reached
The IP is allowed because rule #100 matches first.
| Default NACL | Custom NACL | |
|---|---|---|
| Created | Automatically with VPC | You create it |
| Default behavior | Allows ALL traffic | Denies ALL traffic |
| Recommendation | Don't modify it | Create custom ones instead |
| Security Group | NACL | |
|---|---|---|
| Type | Stateful | Stateless |
| Return traffic | Automatically allowed | Must explicitly allow |
Stateful (Security Group): You allow inbound traffic → the reply automatically goes out. No separate outbound rule needed.