Hetzner - DokuWiki

KVM mit Nutzung aller IPs - the easy way

KVM-Setup auf Debian und Ubuntu

Inhaltsverzeichnis

Einleitung

Es gibt eine Anleitung im Wiki, die zeigt wie es möglich ist alle IP-Adressen eines Subnetzes für VMs auf KVM-Basis zu nutzen.

Das Problem dabei ist, daß dies nicht mit einfachen Mittel geschieht; zum Beispiel in der KVM mit Nutzung aller IPs aus Subnetz Seite wird ein privates Subnetz, "br"-Interfaces für alle virtuelle Machinen usw. benötigt.

Hier ist eine sehr einfache Methode um alle IP-Adressen zu benutzen. Wir haben: AA.BB.CC.DD als Haupt-IP, mit AA.BB.CC.XX als Gateway; und wir haben ein zusätzliches Subnetz, DD.EE.FF.160-167.

Host

In der /etc/network/interfaces legt man zusätzlich zu eth0 eine Bridge br0 an und übernimmt hierbei die IP-Adresse von 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
#... Und so weiter, jeweils ein "route" Befehl für jede IP-Addresse.

Wichtig ist, daß man alle IP-Adressen einzeln einträgt. Normalerweise könnte man ein Subnetz angeben (route add -net DD.EE.FF.160/29), aber dann verliert man doch zwei IP-Adressen, nämlich 160 (Netz-IP) und 167 (Broadcast) und das ist nicht was wir wollen.

Guest (KVM)

Die Netzwerkkarte der Guest-Maschinen wird ebenfalls an "br0" gebunden. In der Netzwerkkonfiguration der VM wird eine "pointopoint"-Route zum Hostsystem angelegt, da die VM aufgrund ihrer unbekannten MAC-Adresse nicht direkt über den Hetzner-Gateway kommunizieren kann. Dazu folgendes Beispiel der /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

Auch noch sehr wichtig: Allen VMs via "-net nic,macaddr=" eine andere virtuelle MAC aus dem Bereich "52:54:00:XX:XX:XX" geben. Wenn alle VMs die gleiche MAC haben kommt es zu Packet-Loss. Wenn man die MAC im nachhinein ändern möchte muss man drauf achten, dass man auf dem Host, den VMs und dem Client mit dem man testet den ARP-Cache leert. Unter Linux geht das mit "ip neigh flush all".

Fertig? Noch nicht ganz. Wir benötigen noch einige Änderungen auf dem Hostsystem:

Änderungen auf der Host

Um sicher zu gehen, daß des Hostsystem keine "icmp redirect" Messages verschickt, werden diese im Kernel deaktivert:

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

Oder, besser erstellt man Datei /etc/sysctl.d/10-no-icmp-redirects.conf:

# Because of our network setup, the Host machine could send ICMP
# "redirect" messages to all guests, telling them to find the Hetzner
# gateway directly. That is impossible: Hetzner would throw away the
# traffic from the virtual interfaces because of their non registered
# MAC addresses (i.e. different from the main interface).
net.ipv4.conf.all.send_redirects=0

Auch das IP-Forwarding muß aktiviert werden, daher das Kommentarzeichen vor der entsprechende Zeile in /etc/sysctl.conf entfernen bzw. diese hinzufügen: net.ipv4.ip_forward=1 (alternativ: Anlegen einer eigenen "conf"-Datei in /etc/sysctl.d).



© 2016. Hetzner Online GmbH. Alle Rechte vorbehalten.