KVM mit einer Host-IP und einem anderen Subnetz für Maschinen

KVM mit einer Host-IP und einem anderen Subnetz für Maschinen

Ich habe bereits einen KVM-Host mit den richtigen IP-Konfigurationen eingerichtet, aber mein Host ließ mich DHCP erstellen und damit die IPs den Maschinen zuweisen. Ich möchte sehen, ob es dafür einen einfacheren (oder besseren) Weg gibt. Als ich das zum ersten Mal ausprobierte, fand ich nichts, was mich in die richtige Richtung wies. Ich habe gerade eine Neuinstallation von Debian 6.0 x64 hinter mir, also habe ich nichts installiert. Ich habe mich angemeldet, die folgenden Informationen abgefragt und das Passwort meines Hosts geändert.

Ich habe ein Debian 6.0 x64-System mit der folgenden anfänglichen Netzwerkkonfiguration (ich habe 255 anstelle meiner tatsächlichen ersten Oktave ersetzt):

# tail /etc/network/interfaces
auto  eth0
iface eth0 inet static
address   255.9.24.80
broadcast 255.9.24.95
netmask   255.255.255.224
gateway   255.9.24.65

# default route to access subnet
up route add -net 255.9.24.64 netmask 255.255.255.224 gw 255.9.24.65 eth0

Ich habe ein /29-Subnetz, das die virtuellen Maschinen von meinem Host aus verwenden sollen:

IP: 255.46.187.152 /29
Maske: 255.255.255.248
Übertragung: 255.46.187.159

Nutzbare IP-Adressen: 255.46.187.153 bis 255.46.187.158

Mir gefällt die Benutzeroberfläche von Cloudmin und ich möchte versuchen, diese, wenn möglich, zur Verwaltung meiner Gäste zu verwenden.

Also, meine Fragen:

Wie richte ich dies auf dem Hostsystem am besten ein, damit ich die zusätzlichen Subnetz-IPs auf den Gästen nutzen und vom Internet aus erreichbar machen kann?

Ich muss auch einen DNS-Server hosten, was bedeutet, dass einer dieser VMs zwei IPs zugewiesen werden müssen und sie von außen zugänglich sein muss. Wie kann ich das mit Cloudmin machen? Ich hatte dazu hier eine Frage:Einer KVM-VM sind mehrere IP-Adressen zugewiesenAber ich habe gerade den gesamten Server neu formatiert und versuche, einen besseren Weg dafür zu finden.

Maschineninformationen:

# ip route show
255.9.24.64/27 via 255.9.24.65 dev eth0
255.9.24.64/27 dev eth0  proto kernel  scope link  src 255.9.24.80
default via 255.9.24.65 dev eth0

brctl is empty

# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c8:60:00:54:b5:d8 brd ff:ff:ff:ff:ff:ff
inet 255.9.24.80/27 brd 255.9.24.95 scope global eth0
inet6 fe80::ca60:ff:fe54:b5d8/64 scope link
  valid_lft forever preferred_lft forever

Vielen Dank für jede Hilfe, die Sie mir geben können.

EDIT: Ich habe KVM und Cloudmin installiert:

aptitude install qemu-kvm libvirt-bin
wget http://cloudmin.virtualmin.com/gpl/scripts/cloudmin-kvm-debian-install.sh
./cloudmin-kvm-debian-install.sh

Neustart und jetzt sieht meine Netzwerkkonfiguration so aus:

# device: eth0
iface eth0 inet manual

# default route to access subnet


iface br0 inet static
    address 255.9.24.80
    netmask 255.255.255.224
    broadcast 255.9.24.95
    network 255.9.24.64
    bridge_ports eth0
    gateway 255.9.24.65

Ich habe in Cloudmin die Start-IP auf 255.46.187.153 und die End-IP auf 255.46.187.158 eingestellt. Die CIDR ist 29 und das Gateway ist 255.46.187.152.

Ich habe einen Gast mit Ubuntu Server 12.04 x64 installiert, der während der Installation Internetressourcen abrufen konnte, jetzt aber nichts mehr erreichen kann und auch von nirgendwo mehr erreichbar ist. Seine Netzwerkkonfiguration ist:

iface eth0 inet static
 address 255.46.187.153
 netmask 255.255.255.224
 broadcast 255.46.187.159
 gateway 255.46.187.152
 dns-nameservers <host provided nameservers>

Und ich kann google.com nicht über DNS oder direkte IP anpingen, ich kann die VM oder den Host nicht von außen anpingen. Irgendwelche Ideen jetzt?

Antwort1

Das auf dem Gast konfigurierte Gateway ist keine IP des Hostcomputers. Ich würde diese Konfiguration auf dem Gast versuchen:

auto eth0
iface eth0 inet static
       address 255.46.187.153
       netmask 255.255.255.255
       gateway 255.9.24.80
       pointopoint 255.9.24.80
       dns-nameservers <host provided nameservers>
       up ip addr add 255.46.187.154 dev eth0

Stellen Sie außerdem sicher, dass auf dem Host die Route zum Gast hinzugefügt wird. Fügen Sie diese zu /etc/network/interfaces hinzu.

iface eth0 inet static
       (...)
       up route add -host 255.46.187.153 dev br0
       up route add -host 255.46.187.154 dev br0

Auf diese Weise können Sie Netzwerk- und Broadcast-Adressen für Gäste verwenden (255.46.187.152 und 255.46.187.159).

einige Ressourcen, leider nicht auf Englisch:

http://www.ingent.net/ca/2012/03/server-virtualization-kvm-hetzner/(katalanisch)

http://wiki.hetzner.de/index.php/KVM_mit_Nutzung_aller_IPs_-_der_einfache_Weg(Deutsch)

Antwort2

Wenn sich die VM nicht im selben Netzwerk wie der Host befindet, müssen Sie den Host möglicherweise als Router für die VMs einrichten:

iptables --table nat --append POSTROUTING --out-interface br0 -j MASQUERADE
iptables --append FORWARD --in-interface br0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Edit: Entschuldigung für die „MASQUERADE“, ich habe einfach ein Skript kopiert und eingefügt, das ich noch herumliegen hatte. In deinem Fall brauchst du es nicht. Aber es kann in einem anderen Fall nützlich sein, zum Beispiel, wenn du deinen VMs private IPs geben willst.

verwandte Informationen