Почему я теряю сетевое подключение для виртуальной машины за пределами /24?

У меня есть куча виртуальных машин (Ubuntu Server 14.04), размещенных на одном реальном сервере (Ubuntu Server 14.04 с KVM). Количество виртуальных машин растет, и скоро у меня их будет более 254.

Тестировать,

  1. Я изменился в /etc/network/interfaces реального сервера сетевая маска от 255.255.255.0 в 255.255.254.0, IP-адрес реального сервера 192.168.1.30,

  2. Я сделал аналогичную операцию с virsh net-edit default, который изменил маску virbr0 в 255.255.254.0,

  3. Я изменил маску коммутатора на 255.255.254.0 также.

  4. Я изменил конфигурацию тестовой виртуальной машины следующим образом:

    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
    

Это текущее состояние:

  1. Я не могу пинговать 192.168.2.35 с реального сервера: он просто застрял в "PING 192.168.2.35 (192.168.2.35) 56(84) байт данных". При остановке (Ctrl+C) он жалуется: "Передано 143 пакета, получено 0, потеря пакета 100%, время 142134мс".

  2. Виртуальная машина 192.168.2.35 не может ничего пропинговать (ни коммутатор, ни реальный сервер, ни google.com), выдает ошибку "connect: Network is reachable" для первых двух или "ping: unknown host google.com" для последней.

  3. Виртуальная машина может пинговать себя.

Что не так с моей конфигурацией?

1 ответ

Решение

Я до сих пор не понимаю, почему / 22 вместо / 23

Потому что вы неправильно рассчитали свои подсети и пытаетесь использовать IP-адреса из двух разных подсетей.

Или, другими словами, если вы используете / 23-битную маску, ваш начальный адрес для диапазона должен быть первым адресом для этого диапазона. 192.168.1.1 не является начальным адресом для любой сети, описываемой 23-битной маской, потому что именно так работает математика.

С 23-битной маской действительными сетями являются следующие.

$ 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

В конфигурации вашего интерфейса, хотя вы, кажется, address 192.168.2.35, а также gateway 192.168.1.1, Учитывая, что маска вашего шлюза и адрес находятся в совершенно разных подсетях. Конечно, ваши широковещательные и сетевые адреса также неверны.

Если вы используете 22-битную маску, вы получите диапазон, включающий 192.168.1.x и 192.168.2.x. Имейте в виду, что ваши широковещательные и сетевые значения по-прежнему неверны, их также необходимо исправить.

$ 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  
Другие вопросы по тегам