Encontrei essas duas linhas em um script:
echo "1" > /proc/sys/net/ipv4/ip_forward/
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
A primeira linha ativa o encaminhamento de IP, o que faz minha máquina funcionar como um roteador.
Eu gostaria de entender exatamente o que a segunda linha faz. Ele desliga send_redirects
na interface eth0
, mas o que isso significa? O que há send_redirect
neste contexto?
Responder1
'ip_forward' serve para habilitar o encaminhamento de pacotes para IPv4.
'Enviar redirecionamentos' será habilitado somente se o nó atuar como um roteador. Ou seja, um host não deve enviar uma mensagem de redirecionamento ICMP. É usado por roteadores para notificar o host sobre um caminho de roteamento melhor disponível para um destino específico. Depois disso, o host atualiza a entrada do cache de rota e encaminha os pacotes subsequentes diretamente pelo caminho/rota ideal sugerido por meio da mensagem de redirecionamento ICMP.
No entanto, este mecanismo de atualização de informações de roteamento é arriscado e é uma preocupação para a comunidade de segurança, pois os redirecionamentos ICMP podem ser adulterados/falsificados por software malicioso/atacante para redirecionamento para o caminho desejado.
Consulte RFC 1122 (Seção 3.3.1 e apêndice A) para obter mais detalhes e cláusulas como 'Uma mensagem de redirecionamento DEVE ser descartada silenciosamente se o novo endereço de gateway especificado não estiver na mesma (sub) rede conectada por meio da qual o redirecionamento chegou ou se a origem do redirecionamento não for o gateway de primeiro salto atual para o destino especificado'
Responder2
Os redirecionamentos acontecem quando você tem vários roteadores na mesma LAN. Por exemplo, digamos que temos uma rede com um host e dois roteadores. O host pode enviar um pacote para o roteador A e o roteador A pode então precisar enviar esse pacote pela mesma LAN para o roteador B porque sua tabela de roteamento determina isso. O roteador A pode então enviar uma mensagem de redirecionamento ao host para informá-lo de que seria mais eficiente se enviasse pacotes para aquele destino específico diretamente ao roteador B.
Quando você desliga, send_redirect
seu roteador não envia essas mensagens de redirecionamento.