ping de um dispositivo vlan tem Host de destino inacessível

0

Eu uso um dispositivo vlan eth0.100 como 192.168.1.100. A eth0 tem endereço 10.137.16.108

Parece bom trabalhar quando eu ping com endereço.

$ ping 10.137.16.108 -I 192.168.1.1

PING 10.137.16.108 (10.137.16.108) from 192.168.1.100 : 56(84) bytes of data.
64 bytes from 10.137.16.108: icmp_seq=1 ttl=64 time=0.153 ms
64 bytes from 10.137.16.108: icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from 10.137.16.108: icmp_seq=3 ttl=64 time=0.060 ms
^C
--- 10.137.16.108 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.058/0.090/0.153/0.045 ms

mas se eu usar o nome do dispositivo eth0.100 para fazer o mesmo ping, recebo Destination Host Unreachable.

$ ping 10.137.16.108 -I eth0.100

PING 10.137.16.108 (10.137.16.108) from 192.168.1.100 eth0.100: 56(84) bytes of data.
From 192.168.1.100 icmp_seq=1 Destination Host Unreachable
From 192.168.1.100 icmp_seq=2 Destination Host Unreachable
From 192.168.1.100 icmp_seq=3 Destination Host Unreachable
^C
--- 10.137.16.108 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4024ms

Eu acho que isso é um problema sobre a tabela arp

$ arp

 Address            HWtype  HWaddress   Flags Mask            Iface
 10.137.16.108        (incomplete)                          eth0.100

Porque eu preciso do nome do dispositivo vlan para usar SOL_SOCKET & SO_BINDTODEVICE para enviar soquete bruto Você poderia me ajudar.

Obrigado

    
por Xie Peter 30.08.2016 / 20:11

1 resposta

0

Atualização:

Meu alvo é querer manipular o controle de tráfego de uma largura de banda de dispositivos compartilhados para 10 ou mais pequenos vm ou programa. Eu usei o comando vconfig para criar interfaces virtuais e usar o comando tc. O desenvolvimento feito com o vconfig parece bom quando eu uso o endereço para o tráfego entre o host e o virtual dev. Mas parece ter problema quando eu uso o rótulo virtual dev para o tráfego por protocolo ip.

Eu acho uma maneira de esclarecer meu problema. Como este post: [ Como posso criar uma interface ethernet virtual em uma máquina sem um adaptador físico?

A solução é usar o kit de ferramentas iproute2. Faz uma interface virtual de pares.

ip link add veth0 type veth peer name veth1

Adicione endereço para o dispositivo virtual.

sudo ip addr add 10.1.1.1/24 dev veth1 && ip set dev veth1 up
sudo ip addr add 10.1.1.2/24 dev veth1 && ip set dev veth2 up

Então eu posso usar o nome dev como veth2 para pingar o 10.1.1.1 parece funcionar.

ping 10.1.1.1 -I veth2

 PING 10.1.1.1 (10.1.1.1) from 10.1.1.1 veth2: 56(84) bytes of data.
 64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.021 ms
 64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.041 ms
 ^C
 --- 10.1.1.1 ping statistics ---
 5 packets transmitted, 5 received, 0% packet loss, time 3999ms

Eu acho que o dispositivo virtual tipo veth tem endereço Mac fictício. Pode ser que esteja trabalhando para ARP e RARP.

veth1     Link encap:Ethernet  HWaddr 1a:8d:89:82:da:68  
      inet addr:10.1.1.1  Bcast:0.0.0.0  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

veth2     Link encap:Ethernet  HWaddr 2e:11:c9:ad:9c:e7  
      inet addr:10.1.1.1  Bcast:0.0.0.0  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Obrigado pela sua ajuda.

Peter

    
por 03.09.2016 / 23:02

Tags