fix(#2363): open UDP 67 on the bridge — host firewall dropped DHCP requests
This commit is contained in:
parent
2cdd5f334e
commit
e13a2cb33a
2 changed files with 14 additions and 3 deletions
|
|
@ -66,12 +66,16 @@ agent containers.
|
||||||
|
|
||||||
## Firewall posture
|
## Firewall posture
|
||||||
|
|
||||||
`networking.firewall.interfaces.<bridge>.allowedUDPPorts = [ 53 ]`
|
`networking.firewall.interfaces.<bridge>.allowedUDPPorts = [ 53 67 ]`
|
||||||
`networking.firewall.interfaces.<bridge>.allowedTCPPorts = [ 53 80 443 ]`
|
`networking.firewall.interfaces.<bridge>.allowedTCPPorts = [ 53 80 443 ]`
|
||||||
|
|
||||||
- Port 53 opens the resolver on the bridge interface only. Other
|
- Port 53 opens the resolver on the bridge interface only. Other
|
||||||
interfaces stay closed. The hive resolver isn't an external-facing
|
interfaces stay closed. The hive resolver isn't an external-facing
|
||||||
service.
|
service.
|
||||||
|
- Port 67 (UDP) admits DHCP requests to the dnsmasq pool. dnsmasq
|
||||||
|
receives DHCP via a regular UDP socket (it does not use a
|
||||||
|
netfilter-bypassing raw socket), so the hole is mandatory — without
|
||||||
|
it containers never get a lease and fall back to 169.254.x.x.
|
||||||
- Ports 80 and 443 let isolated agents reach nginx (gateway
|
- Ports 80 and 443 let isolated agents reach nginx (gateway
|
||||||
container, shared host netns) for the forge sub-domain, per-agent
|
container, shared host netns) for the forge sub-domain, per-agent
|
||||||
UI proxies, and any other HTTP services.
|
UI proxies, and any other HTTP services.
|
||||||
|
|
|
||||||
|
|
@ -163,9 +163,16 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# DNS only on the bridge interface — no external amplification surface.
|
# DNS + DHCP on the bridge interface only — no external amplification
|
||||||
|
# surface. UDP 67 is required for the dnsmasq DHCP pool: dnsmasq
|
||||||
|
# receives DHCPDISCOVER via a regular UDP socket (no netfilter-bypassing
|
||||||
|
# raw socket like ISC dhcpd), so without this hole the host INPUT chain
|
||||||
|
# drops the broadcasts and every container falls back to IPv4LL.
|
||||||
networking.firewall.interfaces.${cfg.bridgeName} = {
|
networking.firewall.interfaces.${cfg.bridgeName} = {
|
||||||
allowedUDPPorts = [ 53 ];
|
allowedUDPPorts = [
|
||||||
|
53
|
||||||
|
67
|
||||||
|
];
|
||||||
allowedTCPPorts = [ 53 ];
|
allowedTCPPorts = [ 53 ];
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue