Interface virtual e IPs diferentes

1

Eu criei uma interface virtual em wlan0 com o comando ifconfig e aqui está o que eu tenho:

wlan0     Link encap:Ethernet  IndirizzoHW c4:46:19:69:b7:a5  
          indirizzo inet:192.168.1.4  Bcast:192.168.1.255  Maschera:255.255.255.0
          indirizzo inet6: fe80::c646:19ff:fe69:b7a5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:277003 errors:0 dropped:2 overruns:0 frame:0
          TX packets:121609 errors:0 dropped:0 overruns:0 carrier:0
          collisioni:0 txqueuelen:1000 
          Byte RX:329915637 (329.9 MB)  Byte TX:17663121 (17.6 MB)

wlan0:1   Link encap:Ethernet  IndirizzoHW c4:46:19:69:b7:a5  
          indirizzo inet:172.16.1.4  Bcast:172.16.255.255  Maschera:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Eu fiz a mesma coisa um segundo pc na minha rede local e fazendo ping 172.16.1.7 tudo funciona.

Mas eu não entendo uma coisa, porque eu tenho dois IPs, qual deles é escolhido para enviar o pedido icmp? o original 192.168.1.4 ou o que criei 172.16.1.4 ?

    
por zer0uno 07.03.2015 / 18:10

3 respostas

1

É determinado pelas regras de política de roteamento no kernel. Você pode verificar o que o kernel irá usar se você executar:

$ ip route get 172.16.1.7
172.16.1.7 dev wlan0 src 172.16.1.4

Você pode exibir a tabela de roteamento (que também mostra o endereço de origem que será usado para o tráfego nessa rota) com ip route show ou ip ro .

Ao usar ping com -I , você pode especificar qual interface usar:

ping -I 172.16.1.4 172.16.1.7
    
por 09.03.2015 / 12:52
0

As "interfaces virtuais" ( wlan0:1 etc.) são apenas a maneira antiga de dizer ao kernel que mais de um endereço IPv4 está associado a uma interface de rede. Em um kernel moderno, essas interfaces realmente não existem e elas não são mostradas quando você usa ip addr . Em vez disso, apenas todos os endereços IPv4 designados são listados (mostrados aqui para uma extremidade de um par veth):

$ sudo ifconfig veth0b:1 add 10.0.0.2
$ sudo ifconfig
veth0b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.1  netmask 255.255.255.0  broadcast 0.0.0.0
    inet6 fe80::801e:15ff:fe73:e98a  prefixlen 64  scopeid 0x20<link>
    ether 82:1e:15:73:e9:8a  txqueuelen 1000  (Ethernet)
    RX packets 58  bytes 7700 (7.5 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 15  bytes 1174 (1.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth0b:1:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.2  netmask 0.0.0.0  broadcast 0.0.0.0
    ether 82:1e:15:73:e9:8a  txqueuelen 1000  (Ethernet)

$ ip addr show dev veth0b
2: veth0b@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
     link/ether 82:1e:15:73:e9:8a brd ff:ff:ff:ff:ff:ff link-netnsid 0
  inet 10.0.0.1/24 scope global veth0b
     valid_lft forever preferred_lft forever
  inet 10.0.0.2/0 scope global veth0b:1:0
     valid_lft forever preferred_lft forever
  inet6 fe80::801e:15ff:fe73:e98a/64 scope link 
     valid_lft forever preferred_lft forever

Em particular, você não pode escolher "interfaces virtuais" como uma interface para ligar:

$ ping -I veth0b:1 10.0.0.254
ping: invalid source address veth0b:1

Mas você pode escolher o endereço IP de origem para o ping (o que equivale à mesma coisa):

$ ping -I 10.0.0.1 10.0.0.254
$ ping -I 10.0.0.2 10.0.0.254

Isso não tem nada a ver com roteamento ou gateways; o roteamento é decidido pelo endereço de destino somente , a menos que o roteamento de políticas esteja em vigor e, em qualquer dos casos, que ocorra após um aplicativo ligar a uma interface ou selecionar uma fonte específica.

    
por 01.10.2017 / 16:31
-1

ping tem interface defualt, você tem que fazer:

ping -I wlan0:1 your_target
    
por 07.03.2015 / 20:46