Meu servidor se conecta a alguns recursos estranhos via OpenVPN e toda vez que o cliente OpenVPN é iniciado, uma ovpn
interface é exibida.
Eu quero expor apenas portas selecionadas (digamos, MySQL) para esta interface, então tenho esta regra no meu iptables:
iptables -A INPUT -i ovpn -p tcp --dport 3306 -j ACCEPT
No entanto, como o cliente OpenVPN pode desconectar e reconectar sem intervenção, o ID do link (como mostrado por ip link show ovpn
) pode ser alterado.
A regra do iptables acima continuará funcionando depois que o link desaparecer e aparecer novamente (com um ID diferente)?
Sim, continuará funcionando, porque o iptables não usa o índice da interface, mas está fazendo uma comparação de string com o nome da interface atual ao avaliar o parâmetro
-i
/ .--in-interface
Na verdade, parece ser sempre avaliado , mesmo quando o parâmetro não é fornecido, mas a função embutida é bastante otimizada.Por outro lado, nftables (o atual candidato a sucessor de iptables ) oferece duas expressões diferentes:
iifname
: o equivalente direto de-i
, comparando o nome atual eiif
comparando o índice da interface, o que causaria um problema em seu caso de uso. Quando o iptables é traduzido em nftables (usando iptables-translate ou iptables-nft para a API iptables-over-kernel-nftables mais recente),-i
é traduzidoiifname
como esperado para compatibilidade.Sim vai. As regras não são excluídas quando a interface referenciada é excluída.
Mais sobre isso, existem regras curinga, por exemplo, você pode especificar "qualquer interface pppX" com a correspondência
-i ppp+
ou-o ppp+
. Não há nenhuma interface com esse nome, então não pode referenciar nada. Mas se houver tráfego envolvendo a interface ppp2, tal regra será aplicada imediatamente.Em geral, não importa, a regra foi criada antes da interface aparecer ou depois disso.