Hetzner - DokuWiki

KVM mit Nutzung aller IPs - the easy way/ru

Настройка KVM в Ubuntu 10.04 «Lucid Lynx».

Inhaltsverzeichnis

Вступление

Данная статья содержит инструкции, объясняющие как можно использовать все адреса подсети IP-адресов для виртуальных машин при использовании системы виртаулизации KVM.

Проблема заключается в том, что это не просто. Например, на странице KVM using all IPs from the subnet, указано, что для частной подсети IP-адресов необходимо использовать интерфейс типа «мост» на каждой из виртуальных машин.

Ниже предлагается очень простое решение, позволяющее использовать все адреса подсети. У нас имеется: AA.BB.CC.DD в качестве основного IP-адреса, AA.BB.CC.XX в качестве шлюза; и у нас есть дополнительная подсеть: DD.EE.FF.160-167.

Хост-система

В файле /etc/network/interfaces, добавьте мост br0 с настройками от eth0:

auto  br0
iface br0 inet static
 address   AA.BB.CC.DD
 netmask   255.255.255.255
 bridge_ports none
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 up route add -host DD.EE.FF.160 dev br0
 up route add -host DD.EE.FF.161 dev br0
 up route add -host DD.EE.FF.162 dev br0
#... и так далее, добавляя отдельный маршрут для каждого IP-адреса

Очень важно прописать каждый IP-адрес. Достаточно будет добавить целую подсеть одной записью (route add -net DD.EE.FF.160/29), но тогда вы теряете два IP-адреса, а именно 160 (адрес сети) и 167 (широковещательный адрес), а мы этого как раз и хотим не допустить.

Гостевая система (KVM)

Сетевой интерфейс гостевой машины привязывается к «br0». В конфигурации сети виртуальной машины указывается маршрут до хост-системы, который имеет тип «точка-точка», так как виртуальная машина не может быть настроена непосредственно через шлюз Hetzner из-за того, что её MAC-адрес неизвестен. Ниже смотрите пример содержимого файла /etc/network/interfaces:

auto eth0
iface eth0 inet static
      address DD.EE.FF.163
      netmask 255.255.255.255
      gateway AA.BB.CC.DD
      pointopoint AA.BB.CC.DD
      # dns-* options are implemented by the resolvconf package, if installed
      dns-nameservers 213.133.98.98 213.133.99.99
#        dns-search example.com

Также очень важно назначить каждой виртуальной машине различные виртуальные MAC-адреса из диапазона «52:54:00:XX:XX:XX» с помощью «-net nic,macaddr=». Если у виртульных машин совпадают MAC-адреса, это приводит к потере пакетов. Если вы позже захотите сменить MAC-адрес, то необходимо будет очистить ARP кэш на хост-системе, на виртуальных машинах и в клиенте, с помощью которого вы проводите тестирование. В Linux это делается с помощью «ip neigh flush all».

И это всё? Не совсем. Ещё кое-что необходимо изменить на хост-системе:

Изменения на хост-системе

Для того, чтобы хост-система не отправляла сообщения типа «icmp redirect», в ядре необходимо отключить следующее:

/sbin/sysctl -w net.ipv4.conf.eth0.send_redirects=0

Или, что ещё лучше, создать файл /etc/sysctl.d/10-no-icmp-redirects.conf:

# В используемой нами сетевой схеме, хост-система может
# слать всем гостевым системам сообщения типа «ICMP redirect»
# предлагая им непосредственно шлюз Hetzner.
# Но это невозможно: Hetzner отбросит пакеты, приходящие
# с виртуальных интерфейсов, так как у них нет зарегистрированных
# MAC-адресов (например, они будут отличаться от главного интерфейса).
net.ipv4.conf.all.send_redirects=0

Также необходимо активировать передачу пакетов между интерфейсами. Добавьте строку или удалите символ комментария в соответствующей строке файла /etc/sysctl.conf: net.ipv4.ip_forward=1 (или, как вариант, создайте отдельный «conf-файл» в /etc/sysctl.d).



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.