KVM auf Hetzner EQ

terrorfrosch

New Member
Hallo Alle,

Meine Frage ist die folgende:

Ich möchte auf einem Heztner EQ Server mit den zusätzlichen drei IP Adressen (Hetzner hat hier leider gewaltig gekürzt) drei KVM Maschinen aufbauen. Leider bekomme ich die Maschinen nicht ins Netz.

Folgende Konfiguration benutze ich zur Zeit auf dem Server (Ip Adressen geändert)
Code:
# Bridged for virtuals
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto virbr0
iface virbr0 inet static
      address 244.196.44.67
      network 244.196.44.64
      netmask 255.255.255.192
      broadcast 244.196.44.127
      gateway 244.196.44.65
      pointopoint 244.196.44.65
      bridge_ports eth0
      bridge_fd 9
      bridge_hello 2
      bridge_maxage 12
      bridge_stp off
Zum Erstellen der virtuellen Maschinen nutze ich die libvirt. libvirt nutzt die virbr0 und legt das interface vnet0 (vnet1, vnet2 für die weiteren virtuellen Maschinen) an.

Die Netzwerkconfiguration der virtuellen Maschinen (die zusätzlichen Adressen befinden sich im gleichen Netz wie die Hauptadresse) sieht wiederum folgendermaßen aus:
Code:
iface eth0 inet static
       address 244.196.44.118
       network 244.196.44.64
       netmask 255.255.255.192
       broadcast 244.196.44.127
       gateway 244.196.44.65

In der Firma habe ich einen VHost genauso aufgebaut stehen, mit dem einzigen Unterschied, dass das Netzwerk ein anderes (192.168.0.0/24) ist. Hier läuft alles problemlos, nur bei Hetzner komme ich nicht von Aussen an die vServer und ebenfalls mit den vservern nicht nach aussen. Lediglich der Host kann den vserver und der vserver den host pingen.

Muss ich irgendwelche Routen setzen, damit das ganze funzt?
 
Mein Account für das Hetznerforum wartet nun schon seit Donnerstag Abend darauf frei geschaltet zu werden. Leider tut sich da garnix und somit komme ich auch leider nicht an die Infos. Ich brauch aber relativ zeitnah eine Lösung.

Alle Dinge, die in dem Hetznerwiki zu finden sind, sind momentan für mich nicht zu gebrauchen.

Folgendes habe ich bereits heraus gefunden (und hoffentlich auch richtig verstanden):

Bridging wird nicht funktionieren, weil das virtuelle Interface in dem Fall mit einer eignen Mac Adresse fragt/antwortet und der Router von Hetzner diese Anfrage ignoriert, solange die Mac nicht mit der gespeichert für das eth0 übereinstimmt. Also bleiben mir nur noch zwei Möglichkeiten.
Routing oder NAT. Und genau jetzt fängt es an zu haken. Was Linux angeht bin ich einigermaßen firm, aber in die Materie Routing, Bridging, NAT steige ich dieses Mal zum erstem mal richtig ein. Entsprechend groß sind auch derzeit noch meine Lücken.

Vielleicht mag mir ja jemand ein wenig unter die Arme greifen.
Würde ich auf Routing zurück greifen, müsste ich eine der zusätzlichen IPs Adressen als Gateway opfern (obwohl alle vier, die Haupt IP und die drei zusätzlichen IPs alle im gleich subnetz liegen?). Damit blieben mir also nur noch zwei virtuelle Server übrig, was definitiv mindestens einer zu wenig ist. Fällt also raus (es sein denn, jemand klärt mich auf, dass ich hier nen Denkfehler mache).

Bessere Alternative wäre dann wohl NAT, aber wie genau funzt das jetzt?

Alle IP Adressen laufen auf eth0 auf und werden über eine iptables Tabelle an die entsprechende IP des internen Netzes weitergeleitet? Wenn ich das richtig verstehe, müsste ich doch in dem Fall sogar in der Lage sein, nur einen einzigen Port der Haupt IP (einen belibig gewählten SSH Port) bei dem Host zu belassen und alle restlichen Ports der Haupt IP ebenfalls an einen KVM Gast durchzuschleifen. Ich hätte damit also noch eine weitere IP und damit insgesamt 4 virtuelle Server zur Verfügung, richtig?

Wie würde ich so eine verschaltung nun aufbauen?
eth0 wieder eine Feste IP und ein festes Subnetz geben, eine bridge mit internem subnetzt (192.168.5.1 oder so) geben, alle virtuellen Server in die bridge einbinden und dann iptables konfiguriere?
 
So, ich habe also weiter geforscht.

Das Default Netzwerkmodul von Libvirt stellt eigentlich schon nen ordentliches NAT zur verfügung (hatte da nicht aufgepasst, dhcp funzt nur nach paar einträgen in der dnsmasq.conf, genaues findet man hier libvirt: Wiki: Libvirtd and dnsmasq).Ich bekomme dann für die virtuellen Maschinen eine IP aus 192.168.122.x zugewieden (bzw, kann diese auch hart in der /etc/network/interfaces verdrahten).

Die /etc/network/interfaces auf meinem Host sieht nun wie folgt aus:
Code:
...
iface eth0 inet static
      address 244.196.44.67
      network 244.196.44.64
      netmask 255.255.255.192
      broadcast 244.196.44.127
      gateway 244.196.44.65

iface eth0:1 inet static
      address 244.196.44.118
      network 244.196.44.64
      netmask 255.255.255.192
      broadcast 244.196.44.127
      gateway 244.196.44.65

iface eth0:2 inet static
      address 244.196.44.119
      network 244.196.44.64
      netmask 255.255.255.192
      broadcast 244.196.44.127
      gateway 244.196.44.65

iface eth0:3 inet static
      address 244.196.44.120
      network 244.196.44.64
      netmask 255.255.255.192
      broadcast 244.196.44.127
      gateway 244.196.44.65

ich kann damit den host auf allen vier Ipadressen (.67, .118, .119, .120) anpingen. Libvirt legt mir noch die bridge virbr0 und die interfaces vnet0, vnet1 und vnet2 für die drei virtuellen maschinen an. von der virtuellen maschine kann ich auf den host pingen (und mich per ssh verbinden) und vomhost andersrum über die 192.x Adressen ebenfalls auf die virtuellen maschinen.

Jetzt habe ich noch folgende Anleitung gefunden VMwareNAT ExtIP ? Hetzner DokuWiki und damit versucht eine weiterleitung der externen IPs auf die Internen zu erreichen. Hat leider nicht gefunzt. Die entsprechenden Parameter für ip_forward, etc sind in /proc/... auf 1 gesetzt.

Jetzt lasse ich einen Ping auf die .118 laufen.
Sobald ich dann auf dem host das folgende ausführe, läuft der Ping ins leere.
iptables -t nat -I PREROUTING -d 244.196.44.118 -j DNAT --to 192.168.122.2
auch ein hinterherajge des POSTROUTING befehls ändert nichts mehr an der Situatuin.
iptables -t nat -I POSTROUTING -s 192.168.122.2 -j SNAT --to 244.196.44.118

Hab ich hier einfach noch etwas vergessen? Muss ich IPTables vielleicht mitteilen, dass er die interfaces eth0:1 und vnet0 miteinander verbinden soll? Bin auch noch nicht so der IPTABLES Held.
 
Fehlt vielleicht vorweg noch etwas in der Art?
Code:
iptables -A FORWARD -s 244.196.44.118 -j ACCEPT
iptables -A FORWARD -s 192.168.122.2 -j ACCEPT
 
config

hallo

ich sitze gerade an der selben Aufgabenstellung.

läuft dein system jetzt ?

kannst du mir bitte mal deine komplette /etc/network/interfaces posten ?

danke
 
Last edited by a moderator:
Ich habe seit gestern einen Server bei Serverloft, Situation ist aber wohl die gleiche.

Habe es geschafft dieses Setup auf KVM mit libvirt anzupassen, mit Lenny allerdings.

libvirt KVM Config Auszug:
Code:
<interface type='ethernet'>
      <script path='/root/vnet0-ifup'/>
      <model type='virtio'/>
</interface>

Das in der Config aufgerufene Skript (/root/vnet0-ifup)
bei main_ip die Haupt-IP des Systems angeben, bei vnet_ip dann die IP des Gasts. Für mehr Gäste das Skript kopieren und vnet_ip anpassen, das gerät wird von KVM übergeben.
Code:
#!/bin/sh

main_ip="85.25.xxx.xxx" 
main_dev="eth0"
vnet_ip="85.25.xxx.xxx" 
vnet_dev=$1

echo 1 >/proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/conf/${main_dev}/proxy_arp
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter

echo 1 >/proc/sys/net/ipv4/conf/${vnet_dev}/proxy_arp

ifconfig ${vnet_dev} ${main_ip} netmask 255.255.255.255 up
ip route add ${vnet_ip} dev ${vnet_dev} src ${main_ip}
Netzwerkkonfiguration des Hosts
bei pointopoint (nein, da fehlt kein t) kommt die Gateway IP rein.
Code:
# /etc/network/interfaces - network interfaces configuration

# loopback interface

auto lo
iface lo inet loopback

# ethernet interface

auto eth0
iface eth0 inet static
  address 85.25.xxx.xxx
  netmask 255.255.255.255
  gateway 85.25.xxx.xxx
  pointopoint 85.25.xxx.xxx
Netzwerkkonfiguration des Gastes
Bei gateway und pointopoint die IP des Hostsystems angeben, nicht wie oben das vom Hoster.
Code:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
	address 85.25.xxx.xxx
	netmask 255.255.255.255
	gateway 85.25.xxx.xxx
        pointopoint 85.25.xxx.xxx

Habe noch nicht wirklich ausgiebig getestet, nach einem Neustart gings aber noch. Geschwindigkeit ist gut und es gehen einem keine IP Adressen für Routing verloren.

Viel Erfolg!
 
Back
Top