Estou bloqueando a saída da minha caixa Linux, fazendo com que a cadeia OUTPUT seja negada por padrão.
Meus pares wireguard são da sub-rede 10.1.0.0/16
. Originalmente, pensei que poderia apenas -A OUTPUT -d 10.1.0.0/16 -j ACCEPT
e, embora isso seja necessário, não é suficiente por si só.
Conforme confirmado pelo rastreamento, a conexão UDP física com o peer wireguard também precisa de permissão, o que faz sentido pensando bem.
Agora, eu poderia continuar e permitir manualmente a porta wireguard dos endpoints de mesmo nível. Mas eu me pergunto se existe algum mecanismo mais automático, que relacione os pacotes UDP físicos ao pacote de túnel já permitido e o permita automaticamente?
WireGuard fornece os meios para lidar com isso com iptables : definindo uma marca de firewall nos pacotes de envelope de saída. Isto está disponível através do
wg
comando de baixo nível e, portanto, também disponível comwg-quick
:wg-quick
fornece um exemplo para ser usado emPostUp
:Para o caso de uso deste problema (que tem uma lógica invertida, pois usa uma política de descarte padrão e não requer distinção do caso local), seria algo assim no arquivo de configuração:
Ou esta regra pode ser adicionada fora da configuração do WireGuard, provavelmente usando diretamente o nome da interface do WireGuard (por exemplo:
wg0
) em vez de%i
e o valor da marca do firewall 0xcafe na regra, em vez de consultar o valor do WireGuard.Se o peer estiver em roaming, a regra ainda será capaz de rastreá-lo em busca de pacotes de envelopes de saída.
Se, por "UDP físico" você quer dizer tráfego para o peer fora do túnel VPN, não. Embora seja possível associar tráfego em portas diferentes ao mesmo endereço via iptables (port-knocking é um bom exemplo), neste caso, os fluxos de tráfego dentro e fora do túnel vão para endereços IP diferentes.