Disable router DMZ, replace with explicit Virtual Server forwards #109

Open
opened 2026-05-24 21:45:48 +00:00 by coilysiren · 0 comments
Owner

Problem
The TP-Link Archer A20 (kai home router) has DMZ enabled pointing at 192.168.0.194 (kai-server). Every WAN port not already claimed by a Virtual Server rule forwards straight to kai-server. kai-server has no local firewall (ufw/nftables) in place, so anything listening on kai-server is reachable from the public internet. That includes SSH (22), k3s API (6443), kubelet (10250), and any dev server bound to a high port.

Current Virtual Server entries (intentional public exposure):

  • 3000-3003 - Eco
  • 34197 - Factorio

Missing forwards (currently working only because DMZ catches them):

  • 80 TCP - Traefik (eco-jobs-tracker.coilysiren.me, eco-mcp.coilysiren.me)
  • 443 TCP - Traefik (same)

Plan

  1. SSH into kai-server, run ss -tlnp and ss -ulnp to inventory all listening ports.
  2. For each port that should be publicly reachable, add an explicit Virtual Server entry in the router (192.168.0.1 -> Advanced -> NAT Forwarding -> Virtual Servers).
  3. At minimum: add 80/TCP and 443/TCP for Traefik.
  4. Disable DMZ (Advanced -> NAT Forwarding -> DMZ -> uncheck Enable, Save).
  5. Verify from off-network: Eco (3000-3003), Factorio (34197), eco-jobs-tracker.coilysiren.me, eco-mcp.coilysiren.me. Confirm SSH on 22 is now refused.

Origin
Surfaced 2026-05-24 while prepping the TP-Link Archer A20 firmware upgrade 1.1.1 -> 1.2.1. DMZ + no-local-firewall combo noticed when reviewing the NAT Forwarding -> DMZ screenshot. Not blocking the firmware upgrade itself.

**Problem** The TP-Link Archer A20 (kai home router) has DMZ enabled pointing at `192.168.0.194` (kai-server). Every WAN port not already claimed by a Virtual Server rule forwards straight to kai-server. kai-server has no local firewall (ufw/nftables) in place, so anything listening on kai-server is reachable from the public internet. That includes SSH (22), k3s API (6443), kubelet (10250), and any dev server bound to a high port. **Current Virtual Server entries (intentional public exposure):** - 3000-3003 - Eco - 34197 - Factorio **Missing forwards (currently working only because DMZ catches them):** - 80 TCP - Traefik (eco-jobs-tracker.coilysiren.me, eco-mcp.coilysiren.me) - 443 TCP - Traefik (same) **Plan** 1. SSH into kai-server, run `ss -tlnp` and `ss -ulnp` to inventory all listening ports. 2. For each port that should be publicly reachable, add an explicit Virtual Server entry in the router (192.168.0.1 -> Advanced -> NAT Forwarding -> Virtual Servers). 3. At minimum: add 80/TCP and 443/TCP for Traefik. 4. Disable DMZ (Advanced -> NAT Forwarding -> DMZ -> uncheck Enable, Save). 5. Verify from off-network: Eco (3000-3003), Factorio (34197), eco-jobs-tracker.coilysiren.me, eco-mcp.coilysiren.me. Confirm SSH on 22 is now refused. **Origin** Surfaced 2026-05-24 while prepping the TP-Link Archer A20 firmware upgrade 1.1.1 -> 1.2.1. DMZ + no-local-firewall combo noticed when reviewing the NAT Forwarding -> DMZ screenshot. Not blocking the firmware upgrade itself.
coilysiren added
P2
and removed
P1
labels 2026-05-31 07:00:40 +00:00
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/infrastructure#109
No description provided.