diff --git a/nftables.conf b/nftables.conf index 9a12dfe..d4ee35f 100644 --- a/nftables.conf +++ b/nftables.conf @@ -142,8 +142,18 @@ table ip nat { chain postrouting { type nat hook postrouting priority srcnat; - ip saddr 10.15.0.0/16 masquerade - ip saddr 172.17.0.0/16 masquerade + # oifname "enp0s6" é OBRIGATÓRIO aqui — sem isso, tráfego + # container-para-container que passa pelo POSTROUTING do host + # (o Docker liga br_netfilter, então tráfego intra-bridge + # também atravessa essa chain) fica mascarado com o IP do + # gateway (10.15.0.1) em vez do IP real do container de + # origem. Foi assim que a comunicação nginx->redis/mariadb/ + # anatomia-web ficou corrompida: cada lado via a conexão com + # o IP errado, o que quebrou o eBPF sockmap (que decide o + # redirect com base nesses IPs) e teria corrompido qualquer + # log/ACL por IP entre containers também. + oifname "enp0s6" ip saddr 10.15.0.0/16 masquerade + oifname "enp0s6" ip saddr 172.17.0.0/16 masquerade oifname "wg3" masquerade # Hairpin NAT (clientes locais acessando o IP público) oifname "enp0s6" ip daddr 10.15.0.45 tcp dport { 80, 443 } masquerade