Desabilitando o rp_filter em uma interface

9

Eu tenho um servidor Ubuntu 16.04 que está agindo como um roteador com várias interfaces (VLAN). Por padrão, rp_filter (filtragem de caminho reverso) está habilitado para todas as interfaces. Eu quero continuar assim, mas faça uma exceção para exatamente uma interface. (Os pacotes dessa interface devem ter permissão para ter um endereço IP de origem que não corresponda a nenhum endereço de destino de roteamento dessa interface.)

Digamos que essa interface tenha o nome ens20.4 , seu vlan-raw-device seja ens20 e a interface de destino (para testar o fluxo de pacotes) seja denominada ens20.2 (embora deva funcionar para qualquer interface de destino ).

Eu tentei definir a propriedade rp_filter somente para ens20.4 , sem sucesso:

echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter

Portanto, para fins de teste, também desativei rp_filter para o vlan-raw-device e a interface de destino de teste:

echo 0 > /proc/sys/net/ipv4/conf/ens20/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens20.2/rp_filter

Ainda não há sucesso, os pacotes com um endereço IP de origem "falsificado" ainda são descartados. Somente se eu desabilitar rp_filter para as interfaces all , os pacotes passarão:

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

No entanto, eu ainda quero manter a filtragem de caminho inverso para todas as outras interfaces - o que estou perdendo?

    
por Cybran 22.11.2016 / 18:53

1 resposta

10

Informações disponíveis: link

Observe a última frase que explicaria suas tentativas:

The max value from conf/{all,interface}/rp_filter is used when doing source validation on the {interface}.

Então, isso deve funcionar:

for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 > "$i"
done
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter

Agora max (conf / {all, ens20.4} / rp_filter == 0: sem validação de fontes. Apenas verifique se as outras interfaces ainda estão protegidas.

Você também pode verificar o rpf "loose" com o valor 2. Caso o pacote seja normalmente roteado por outra interface, isso seria melhor do que nenhuma validação.

    
por 22.11.2016 / 20:51