Estou tentando configurar um firewall nftables na minha distribuição archlinux que permite apenas o tráfego por meio de uma VPN (e bloqueia todo o tráfego IPv6 para evitar vazamentos de IPv6)
Eu tenho brincado com isso por um tempo agora e acabei com uma configuração que me permite navegar na web, mesmo que, até onde eu entendo, até agora, não deveria me deixar fazer isso. O conjunto de regras é bem curto e se parece com isso:
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
jump base_checks
ip saddr VPN_IP_ADRESS udp sport openvpn accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy drop;
ip daddr VPN_IP_ADRESS udp dport openvpn accept
oifname "tun0" accept
}
chain base_checks {
ct state { related, established} accept
ct state invalid drop
}
}
Eu tentei encontrar meu caminho com tentativa e erro e tinha muitas outras regras lá, mas apenas com isso, eu posso me conectar ao servidor VPN primeiro e depois navegar na web. Depois que eu remover a última regra da cadeia de saída, ela não me permitirá mais navegar na web.
Eu sou completamente novo nisso e praticamente sem noção, tentando aprender. Infelizmente, a documentação sobre nftables não é tão extensa, então estou meio que preso no momento.
Pelo que entendi até agora, essa configuração deve permitir fazer uma conexão com a vpn, mas ela não deve permitir nenhum outro tráfego de entrada - ainda assim, posso navegar na web sem problemas.
Alguém sabe por que funciona e como devo proceder com a configuração do nftables para obter uma configuração mais completa?