Eu li a página de manual ip
e ainda não entendo o que src
é e não consegui encontrar muita documentação.
Por favor, se você puder explicar detalhadamente ou apontar para algum link, é uma boa resposta.
Eu li a página de manual ip
e ainda não entendo o que src
é e não consegui encontrar muita documentação.
Por favor, se você puder explicar detalhadamente ou apontar para algum link, é uma boa resposta.
Respostas:
Ao adicionar uma rota a um host com hospedagem múltipla, convém ter controle sobre o endereço IP de origem do qual o host está enviando ao iniciar as comunicações usando esta rota. É para isso que serve o src .
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 garantir que não esteja 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 tenha uma rota de volta para 192.168.1.0/24 ou porque você não deseja que seu tráfego siga essa rota 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á fornecendo afetaria apenas o tráfego originado no seu próprio host. Se um pacote externo estiver sendo roteado, obviamente já teria um endereço IP de origem, para que fosse transmitido inalterado (a menos que você esteja usando o NAT, é claro, mas isso é um assunto totalmente diferente). Além disso, essa configuração pode ser substituída por um processo que escolhe especificamente vincular a um endereço específico em vez de usar os padrões ao iniciar conexões (bastante raro).
O src
atributo é uma dica usada pelo algoritmo de seleção de endereço . É significativo quando um host possui vários endereços IP, o que geralmente ocorre, mas nem sempre, quando ele possui várias interfaces. Embora existam outras regras que influenciam a seleção de endereços, e um aplicativo de rede também possa substituir o algoritmo de seleção usando chamadas do sistema bind()
, o src
atributo é uma maneira de usar uma consulta à tabela de roteamento para responder à pergunta: "Se eu quiser iniciar um conexão com o host X, qual dos meus endereços devo usar? "
Aqui está um exemplo para ilustrar o uso e efeito do src
atributo. 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 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
Esse host pode se comunicar com qualquer um dos outros 252 endereços nesta sub-rede / 24 a partir de qualquer endereço, mas, por padrão , usará 10.1.0.16 ao iniciar uma conexão com 10.1.0.32 a 10.1.0.63 e usar 10.1.0.2 para todos os descansar.
Se o host estiver respondendo, em vez de iniciar, ele responderá 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 src
atributo da rota de retorno.