
Quero ver como a tabela de roteamento muda em um sistema Linux, quando um redirecionamento ICMP é recebido. Para isso eu uso
icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address
(que retorna sucesso), mas o resultado de
route -n
continua o mesmo. Claro que verifiquei a saída de
cat /proc/sys/net/ipv4/conf/eth1/accept_redirects
que é 1. Esta é uma máquina Ubuntu 12, com a última versão estável do kernel, sem firewall instalado.
Então a pergunta: o que poderia estar errado?
Responder1
De acordo comDocumentação/rede/ip-sysctl.txt, por padrão, os redirecionamentos são aceitos apenas para os gateways que já estão listados na tabela de roteamento.
redirecionamentos_seguros - BOOLEAN Aceite mensagens de redirecionamento ICMP apenas para gateways, listado na lista de gateway padrão. secure_redirects para a interface será habilitado se pelo menos um dos conf/{all,interface}/secure_redirects está definido como TRUE, ele será desativado caso contrário padrão VERDADEIRO
Responder2
Uma suposição: a chamada de icmpush
não usa a interface externa eth1
, mas sim a localhost lo
para que o kernel não reconheça que se trata de um redirecionamento correto do gateway. Além disso, em versões muito antigas do kernel Linux essas rotas não eram exibidas na resposta do route -n
. Como observei, a resposta de route -nC
poderia ser a forma correta de incluir também a rota de redirecionamento temporário.
@grawity, sobre aceitar redirecionamentos enviados em resposta a outro pacote: você leu isso em algum lugar? porque eu estaria realmente interessado nisso.