Por que eu perco a conectividade de rede para uma máquina virtual fora de / 24?

2

Eu tenho um monte de máquinas virtuais (Ubuntu Server 14.04) hospedadas em um único servidor real (Ubuntu Server 14.04 com KVM). O número de máquinas virtuais cresce e em breve teremos mais de 254 delas.

Para testar,

  1. Alterei em /etc/network/interfaces do servidor real a máscara de rede de 255.255.255.0 para 255.255.254.0 . O endereço IP do servidor real é 192.168.1.30 .

  2. Eu fiz a operação semelhante com virsh net-edit default , que alterou a máscara de rede de virbr0 para 255.255.254.0 .

  3. Também alterei a máscara de rede do comutador para 255.255.254.0 .

  4. Alterei a configuração da máquina virtual de teste assim:

    auto eth0
    iface eth0 inet static
    address 192.168.2.35
    netmask 255.255.254.0
    network 192.168.1.0
    broadcast 192.168.2.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.13
    dns-search example.com
    

Este é o estado atual:

  1. Eu não consigo pingar 192.168.2.35 do servidor real: ele está apenas preso em "PING 192.168.2.35 (192.168.2.35) 56 (84) bytes de dados." Quando parado (Ctrl + C), ele reclama: "143 pacotes transmitidos, 0 recebidos, 100% de perda de pacotes, tempo 142134ms".

  2. A máquina virtual 192.168.2.35 não pode pingar nada (nem o comutador, nem o servidor real nem o google.com), jogando o erro "conectar: Rede inacessível" nos dois primeiros ou "ping : host desconhecido google.com "para o último.

  3. A máquina virtual pode efetuar ping em si mesma.

O que há de errado com minha configuração?

    
por Arseni Mourzenko 02.07.2014 / 01:25

1 resposta

7

I still don't understand why /22 instead of /23

Porque você calculou suas sub-redes erradas e está tentando usar IPs de duas sub-redes diferentes.

Ou, para colocar de outra forma, se você usar uma máscara de / 23 bits, seu endereço inicial do intervalo deverá ser o primeiro endereço desse intervalo. 192.168.1.1 não é um endereço inicial para qualquer rede descrita por uma máscara de 23 bits, porque é assim que a matemática funciona.

Com uma máscara de 23 bits, as redes válidas são as seguintes.

$ ipcalc 192.168.0.0/23
Address:   192.168.0.0          11000000.10101000.0000000 0.00000000
Netmask:   255.255.254.0 = 23   11111111.11111111.1111111 0.00000000
Wildcard:  0.0.1.255            00000000.00000000.0000000 1.11111111
=>
Network:   192.168.0.0/23       11000000.10101000.0000000 0.00000000
HostMin:   192.168.0.1          11000000.10101000.0000000 0.00000001
HostMax:   192.168.1.254        11000000.10101000.0000000 1.11111110
Broadcast: 192.168.1.255        11000000.10101000.0000000 1.11111111
Hosts/Net: 510

$ ipcalc 192.168.2.0/23
Address:   192.168.2.0          11000000.10101000.0000001 0.00000000
Netmask:   255.255.254.0 = 23   11111111.11111111.1111111 0.00000000
Wildcard:  0.0.1.255            00000000.00000000.0000000 1.11111111
=>
Network:   192.168.2.0/23       11000000.10101000.0000001 0.00000000
HostMin:   192.168.2.1          11000000.10101000.0000001 0.00000001
HostMax:   192.168.3.254        11000000.10101000.0000001 1.11111110
Broadcast: 192.168.3.255        11000000.10101000.0000001 1.11111111
Hosts/Net: 510

Na sua configuração de interface, você parece ter address 192.168.2.35 e gateway 192.168.1.1 . Dado que a máscara do seu gateway e endereço estão em sub-redes completamente separadas. É claro que suas configurações de transmissão e endereço de rede também estão incorretas.

Se você usar uma máscara de 22 bits, você obterá um intervalo que inclui 192.168.1.xe 192.168.2.x. Esteja avisado que seus valores de transmissão e de rede ainda estão errados, eles também precisam ser corrigidos.

$ ipcalc 192.168.2.0/22
Address:   192.168.2.0          11000000.10101000.000000 10.00000000
Netmask:   255.255.252.0 = 22   11111111.11111111.111111 00.00000000
Wildcard:  0.0.3.255            00000000.00000000.000000 11.11111111
=>
Network:   192.168.0.0/22       11000000.10101000.000000 00.00000000
HostMin:   192.168.0.1          11000000.10101000.000000 00.00000001
HostMax:   192.168.3.254        11000000.10101000.000000 11.11111110
Broadcast: 192.168.3.255        11000000.10101000.000000 11.11111111
Hosts/Net: 1022  
    
por 02.07.2014 / 02:49