Qual endereço IP uma interface de rede usa?

Qual endereço IP uma interface de rede usa?

Qual IP uma interface usa quando o host atua como cliente?

Digamos que eu configurei a eth0 com 2 endereços IP: 192.168.1.7 e 192.168.1.8

O comando route mostra algo assim:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.240.0   0.0.0.0         255.255.240.0   U     256    0        0 eth0
...

Isso basicamente significa que quando tento me conectar a qualquer host da 192.168.240.0rede ele usa a interface eth0. Ok, mas... Qual endereço IP dessa interface?

Se o host atuar como um servidor e um cliente se conectar ao meu computador usando o endereço IP 192.168.1.7que entendo que a eth0 usará 192.168.1.7para se comunicar com o cliente, mas e se eu for o cliente?


EDITAR

Os endereços IP são inventados, não consigo adicionar outro endereço IP a uma interface no meu Ubuntu WSL porque recebo este erro:

$ ip address add 192.168.1.7/24 dev eth0
RTNETLINK answers: Permission denied

A saída de ip r sé algo assim:

$ ip r s
none 224.0.0.0/4 dev eth0 proto unspec metric 256
none 255.255.255.255 dev eth0 proto unspec metric 256
none 224.0.0.0/4 dev eth1 proto unspec metric 256
none 255.255.255.255 dev eth1 proto unspec metric 256
...

EDITAR 2

Atualizei para WSL2 e agora o comando para adicionar endereços IP funciona (com sudo).

$ ip -4 a s dev eth0
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.249.181/20 brd 192.168.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.7/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.8/24 scope global secondary eth0
       valid_lft forever preferred_lft forever

Responder1

Para Linux, a resposta à sua pergunta édado aqui:

O endereço de origem inicial de um pacote de saída é escolhido de acordo com a seguinte série de regras.

A aplicação pode solicitar um determinado IP, o kernel usará a dica src do caminho de rota escolhido ou, na falta desta dica, o kernel escolherá o primeiro endereço configurado na interface que esteja na mesma rede que o endereço de destino ou o roteador nexthop.

Responder2

O cliente procurará as ROTAS correspondentes ao endereço ao qual está tentando se conectar. Se, como no seu exemplo, houver mais de uma rota correspondente, ele escolherá a entrada de rota com a métrica mais alta e enviará o pacote para fora da interface encontrada na tabela de rotas, usando o endereço IP dessa interface.

Você truncou a saída da rota e não disse a que estava se conectando - então não posso dizer qual interface será.

No servidor... bem, as coisas ficam um pouco mais complicadas lá. Tenho hosts Centos e Redhat com múltiplas interfaces na mesma sub-rede. Eles responderão no mesmo endereço/interface para o qual os pacotes foram enviados. Mas também tenho sistemas Ubuntu e Debian recentes que revisitarão a tabela de roteamento para encontrar a interface e o endereço a serem usados, ignorando o endereçamento no pacote do cliente. O cliente irá ignorar os pacotes que retornam de um endereço IP com o qual não está se comunicando.

informação relacionada