Como impedir que pacotes de saída desconfigurados usem a rota padrão?

Como impedir que pacotes de saída desconfigurados usem a rota padrão?

Eu tenho um roteador. Possui algumas interfaces. Uma delas é a VPN chamada vpn0, uma é a rota padrão para a interface física, chamada out0 e uma interface de entrada in0.

Pacotes de in0 com porta de destino 993 nunca devem ser colocados em out0. Eu faço isso marcando os pacotes assim:

iptables -t mangle -A PREROUTING -i in0 -p tcp --dport 993 -j MASK --set-mark 100
iptables -t mangle -A PREROUTING -i in0 -p tcp --dport 993 -j CONNMARK --save-mark

e para desabilitar o encaminhamento em out0 eu faço o seguinte:

iptables -A FORWARD -i in0 ! -o vpn0 --match-mark 100 -j DROP -m conntrack --ctstate NEW

O problema que estou tendo é com pacotes de saída vindos do host. Para desfigurar pacotes vpn0, tenho estas regras:

iptables -t mangle  -A OUTPUT --protocol tcp --dport 993 --jump MARK --set-mark 100
iptables -t mangle -A OUTPUT --protocol tcp --dport 993 --jump CONNMARK --save-mark
iptables -t mangle -A OUTPUT --protocol tcp --dport 993 --jump RETURN    

O que funciona muito bem. Isso ocorre apenas quando o vpn0 não está funcionando. Tentei adicionar a regra:

iptables -A OUTPUT --protocol tcp --dport 993 -o out0 --match mark  --mark 100  --jump DROP -m conntrack --ctstate NEW

Mas isso descarta pacotes que sairiam da VPN. Eu verifiquei isso alterando DROP para LOG e a interface de saída é out0, não vpn0.

O que da?

informação relacionada