ip rota mostra src campo

8

Eu li a página do manual de ip e ainda não entendi o que é src e não consegui encontrar muita documentação.

Por favor, se você pode explicar isso completamente ou apontar para algum link, é uma boa resposta.

    
por coredump 23.11.2012 / 18:17

2 respostas

8

Ao adicionar uma rota a um host com hospedagem múltipla, você pode querer ter controle sobre o endereço IP de origem do qual seu host está enviando ao iniciar comunicações usando essa rota. Isto é o que src serve.

Um pequeno exemplo: você tem um host com duas interfaces e os endereços IP 192.168.1.123/24 e 10.45.22.12/24. Você está adicionando uma rota para 78.22.45.0/24 via 10.45.22.1 e deseja ter certeza de que não está enviando para 78.22.45.0/24 usando o endereço 192.168.1.123 (talvez porque a rede 78.22.45.0/24 não possua o caminho de volta para 192.168.1.0/24 ou porque você não deseja que seu tráfego siga este caminho por um motivo ou outro):

ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12

Observe que o src que você está dando afetaria apenas o tráfego originado no seu próprio host. Se um pacote externo está sendo roteado, obviamente ele já teria um endereço IP de origem para que ele fosse transmitido inalterado (a menos que você esteja usando NAT, é claro, mas isso é um assunto totalmente diferente). Além disso, essa configuração pode ser substituída por um processo que especificamente escolhe vincular-se a um endereço específico, em vez de usar os padrões ao iniciar conexões (bastante raras).

    
por 24.11.2012 / 00:37
7

O atributo src é uma sugestão que é usada pelo algoritmo de seleção de endereços . É significativo quando um host tem vários endereços IP, o que geralmente é, mas nem sempre, quando há várias interfaces. Embora existam outras regras que influenciam a seleção de endereços, e um aplicativo de rede também pode substituir o algoritmo de seleção usando chamadas de sistema como bind() , o atributo src é uma maneira de usar uma consulta de tabela de roteamento para responder à pergunta " Se eu quiser iniciar uma conexão com o host X, quais dos meus endereços devo usar? "

Este é um exemplo para ilustrar o uso e o efeito do atributo src . Para enfatizar que isso está relacionado a endereços e rotas, não estritamente a interfaces, este host de exemplo tem apenas uma interface de rede, mas dois endereços. Além disso, os dois endereços estão na mesma sub-rede para enfatizar o fato de que não há outra maneira óbvia de escolher qual deles usar.

$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
    inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27  scope link  src 10.1.0.16
10.1.0.0/24  proto kernel  scope link  src 10.1.0.2

Este host pode se comunicar com qualquer um dos outros 252 endereços desta / 24 sub-rede de qualquer endereço, mas por padrão usará 10.1.0.16 ao iniciar uma conexão com 10.1.0.32 até 10.1. 0,63, e use 10.1.0.2 para todo o resto.

Se o host estiver respondendo, em vez de iniciar, ele responderá a partir do endereço de destino da solicitação. Por exemplo, se outro host em 10.1.0.32 se conectar a esse host em 10.1.0.2, a resposta virá de 10.1.0.2, mesmo que isso não corresponda ao atributo src da rota de retorno.

    
por 29.05.2013 / 16:24