fw isn’t the only firewall in the path. The server and each client run their own, called a host firewall. When something’s blocked, the question is always: where does the packet stop?
The method, for both faults: (1) does fw log the connection, (2) where does a capture on fw see the packet, (3) what do the host’s own rules say.
Fault 1: the server
1. Plant the fault
This blocks web traffic in the server’s own firewall.
The web page times out, even though fw allows web.
2. Did fw block it?
Only FW-NEW lines, no FW-DROP: fw let it through.
3. Where does the packet stop?
4. Check the server’s own firewall, and fix it
Fault 2: the client
5. Plant the fault
This blocks outgoing SSH in client-a’s own firewall.
6. Capture on fw while client-a tries SSH
7. Check client-a’s own firewall, and fix it
The check script looks for leftover blocking rules too:
You should see
Fault 1, the server:
- The capture: the request comes in on
lanand goes out ondmz, again and again, and no reply ever comes back:
lan In IP 10.10.10.11.36424 > 10.10.20.10.80: Flags [S] ...
dmz Out IP 10.10.10.11.36424 > 10.10.20.10.80: Flags [S] ...
- The server’s rules:
DROP ... tcp dpt:80, with a packet count that went up with each try. After removing it:200.
Fault 2, the client:
- SSH:
Connection timed out. - The capture on fw:
0. The packet never left client-a. - The check:
FAIL ssh :22andFAIL no blocking rules left in client-a's own firewall. After removing it:6 passed, 0 failed.
What it means
Same symptom, a timeout, with three possible places to look. The capture on fw splits them:
| fw’s capture shows | The block is |
|---|---|
| Nothing at all | Before fw: the client’s own firewall (or its route) |
In on lan, nothing out on dmz, and a FW-DROP in the log | fw itself |
Out on dmz, no reply | After fw: the server’s own firewall |
Work from the middle out, and you find any firewall fault in three checks.