Qual é o objetivo da segunda pesquisa de rota após o OUTPUT?

1

De acordo com o diagrama de caminho do pacote , e seu description :

Table 6-2. Source local host (our own machine)

[...]

  1. Routing decision, since the previous mangle and nat changes may have changed how the packet should be routed.

[...]

há uma segunda pesquisa de rota após a cadeia OUTPUT, porque o NAT e outras coisas podem ter alterado a interface de saída real. Mas nos meus testes descobri que é impossível mudar a interface de saída depois de escolhida .

Por exemplo, você tem um aplicativo que envia um pacote UDP de um soquete não acoplado para algum destino: a tabela principal é consultada e uma origem, interface e gateway padrão são escolhidos. Em seguida, você define um fwmark e usa isso no roteamento baseado em política para tentar colocar o pacote em outra interface:

[root@localhost ~]# ip rule add fwmark 1 lookup 1
[root@localhost ~]# ip route add default dev lo table 1

O pacote terá essas pesquisas

#first lookup, assuming main NIC is in LAN with address 192.168.1.2/24, gateway 192.168.1.1
[root@localhost ~]# ip route get 8.8.8.8
8.8.8.8 from 192.168.1.2 via 192.168.1.1 dev eth0 
    cache 
#second lookup, source address and oif chosen
[root@localhost ~]# ip route get 8.8.8.8 oif eth0 from 192.168.1.2 mark 1
8.8.8.8 from 192.168.1.2 via 192.168.1.1 dev wlp3s0  mark 1
    cache 

Seu pacote ainda terá a interface de saída já escolhida. Observe que, se você não definir o parâmetro oif , obterá a interface correta:

[root@localhost ~]# ip route get 8.8.8.8 from 192.168.1.2 mark 1
8.8.8.8 from 192.168.1.2 dev lo  mark 1
    cache 

Então, qual é o ponto? Parece (e eu testei) que você pode efetivamente alterar apenas o gateway, mas você não pode usar blackhole ou unreachable .

    
por Lorenzo Pistone 03.10.2014 / 16:18

0 respostas