Entenda quando no dia a dia de uma mensagem ICMP "echo response" as tabelas de "ip rule" são consultadas

Entenda quando no dia a dia de uma mensagem ICMP "echo response" as tabelas de "ip rule" são consultadas

Eu tenho um PC com duas interfaces: eth0(endereço IP 192.168.1.16) e eth2(endereço IP 10.10.10.73). Além disso, tenho uma rota de host neste PC na maintabela que diz que se o endereço de destino for 172.16.1.1, use eth0a interface.

Agora, quando eu envio a "solicitação de eco" do ICMP de 172.16.1.1para 10.10.10.73( eth2interface), a "resposta de eco" do ICMP é enviada eth0(tenho o RPF desabilitado) usando 192.168.1.16como IP de origem. Tudo isso é esperado por causa desta rota de host.

No entanto, quando adiciono um ip ruleseletor from 10.10.10.73e uma ação lookup testlogo após o número da regra 0e a tabela testconter simplesmente uma rota padrão usando eth2a interface, a "resposta de eco" do ICMP é enviada da eth2interface.

Estou confuso como esse from 10.10.10.73seletor pode corresponder. Quando, no dia da vida de uma mensagem de "resposta de eco" ICMP, o IP de origem era 10.10.10.73para que a correspondência ocorresse?

Responder1

De acordo comLivro Roteamento de políticas usando Linux, os pacotes provenientes da máquina local destinados a sistemas externos entrarão no banco de dados de política de roteamento após passarem pelas cadeias de saída, e é aqui que seu from 10.10.10.73seletor corresponderá ao pacote de resposta de eco de saída 10.10.10.73destinado a 172.16.1.1.

travessia de pacotes

Dehttp://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH03.web.html:

Considere o caminho para um pacote de origem externa destinado a um serviço interno. Ele entra no sistema e é processado pelo estágio de manipulação e marcação de pacotes de entrada, Pré-Rota(1). Este estágio é onde você aplicaria operações de manipulação de pacotes, como fwmark e marcação TOS/QoS ou talvez o NetFilter NAT. O pacote então entra no RPDB para obter roteamento e é roteado para a cadeia Input(2). A cadeia de entrada fornece funções de firewall para pacotes destinados aos serviços da Máquina Local.

O cenário inverso é o caminho do pacote para um pacote de origem de serviço interno destinado a um sistema externo, tal como o pacote de resposta ao descrito no parágrafo anterior. Ele sai da Máquina Local e entra nas cadeias Output(4), que fornecem as funções de firewall. Em seguida, ele entra no RPDB para processamento de rota e sai do sistema através do estágio de manipulação e marcação de pacotes de saída, Post-Route(5).

Responder2

O seletor from 10.10.10.73corresponde porque a resposta de eco é emitida a partir deste endereço. No entanto, nesse caso, não é a maneira recomendada de proceder. Porque from 10.10.10.73pode se aplicar a tudo o que vai para outra interface que não a eth0, fazendo uma rota incorreta nesse caso. Você deve usar to 172.16.1.1em sua regra de IP.

A coisa que corresponde ao endereço de origem está relacionada ao fato de que usar ip rulea decisão de roteamento relacionada a uma tabela de pesquisa dedicada faz com que o pacote ignore o srcendereço padrão especificado pela rota desta interface, como o que você verá emip route list table local

O que acontece está na parte vermelha deste diagrama:diagrama de viagem de pacotes do kernel

Sem ip ruleo pacote chegar na sua máquina para o processo local, e por causa da rota padrão a resposta vem da eth0 (obviamente com o endereço IP eth0). Por causa do ip rule add from 10.10.10.73 table testprocesso de roteamento, altere a tabela de pesquisa e não use o endereço IP padrão da interface que mantém a rota para o destino, agora ele usa o endereço IP da interface de resposta.

informação relacionada