Konfigurieren Sie öffentliche IP-Adressen in KVM-VMs


11

Ich habe einen physischen Server unter CentOS 6.5 mit einer mit dem Internet verbundenen Schnittstelle (mit einer öffentlichen IP-Adresse). Innerhalb dieses Servers habe ich zwei VMs, die mit KVM über libvirt erstellt wurden, mit jeweils einer Schnittstelle. Ich möchte jeder VM eine öffentliche IP-Adresse zuweisen und die Verbindung mit dem physischen Server weiter verwenden.

Dieses Bild zeigt, was ich in Schwarz habe und was ich in Blau will : Netzwerktopologie.

Ich habe verschiedene Methoden ausprobiert, z. B. das Hinzufügen einer Linux-Bridge mit brctlund das Anschließen der physischen Serverschnittstelle und der virtuellen Schnittstellen beider VMs, aber es hat nicht funktioniert und ich habe die Verbindung zum physischen Server verloren.

Ich bin offen für Linux-Bridges oder libvirt-Netzwerke.

Wie kann ich öffentliche IP-Adressen sowohl auf VMs als auch auf dem physischen Server abrufen?


Versuchen Sie, virtuellen Maschinen einen zweiten Adapter hinzuzufügen und diese mit dem internen Servernetzwerk zu verbinden.
Shcherbak

Welches interne Servernetzwerk? Trotzdem möchte ich das Setup der Frage, wenn möglich.
Abmeldung

Angenommen, dies hilft: [KVM - Erstellen einer virtuellen Maschine mit 2 Bridges-Schnittstellen] ( askubuntu.com/questions/581771/… ), [KVM-Netzwerkbrücke mit zwei Netzwerkkarten] ( serverfault.com/questions/130134/… )
Shcherbak

Ich würde es wieder einmal vorziehen, wenn möglich nur eine Schnittstelle pro VM zu haben.
Abmelden

Ich habe gestern eine ähnliche Frage zu debian kvm host & guest beantwortet. unix.stackexchange.com/questions/245073/… - abgesehen von geringfügigen Details der Schnittstellenkonfiguration sollte Centos ähnlich sein.
Cas

Antworten:


4

Schließlich fand ich den richtigen Weg, um das Frageziel zu erreichen. Dies impliziert eine Linux-Überbrückung, da ich das Problem mit dem libvirt-Netzwerk nicht lösen konnte.

Schritte:

  1. Identifizieren Sie KVM VM-Schnittstellen. Wahrscheinlich beginnen Schnittstellennamen mitvnet*

In diesem Beispiel vnet0undvnet1

  1. Erstellen Sie eine Linux-Brücke mit:

    brctl addbr virbr1

  2. Verbinden Sie die Schnittstellen der physischen Schnittstelle und der KVM-VMs mit der neuen Bridge:

WARNUNG: Wenn Sie über das Netzwerk (SSH, Telnet usw.) mit dem physischen Server verbunden sind, wird die Verbindung unterbrochen. Verwenden Sie ein Terminal oder eine alternative Methode (wie andere Schnittstellen mit Konnektivität).

brctl addif virbr1 vnet0 brctl addif virbr1 vnet1 brctl addif virbr1 eth0

  1. Konfigurieren Sie die physische Serverschnittstelle, der keine IP-Adresse zugewiesen wurde:

Bearbeiten Sie in CentOS 6.5 Dateien /etc/sysconfig/network-scripts/ifcfg-eth0mit folgenden Inhalten:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=eth0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
  1. Konfigurieren Sie die physische Serverbrücke mit der IP-Adresse:

Bearbeiten Sie in CentOS 6.5 Dateien /etc/sysconfig/network-scripts/ifcfg-virbr1mit folgenden Inhalten:

DEVICE=virbr1
BOOTPROTO=none
ONBOOT=yes
IPADDR=<physical_server_public_ip_address>
NETMASK=<physical_server_public_ip_netmask>
GATEWAY=<physical_server_gateway_ip_address>
NAME=virbr1
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no
DNS1=<physical_server_primary_dns_server_ip_address>
DNS2=<physical_server_secondary_dns_server_ip_address>
  1. Starten Sie das physische Servernetzwerk neu:

service network restart

HINWEIS: Sie sollten die Netzwerkverbindung des physischen Servers wiederherstellen (über die Schnittstelle und die Bridge).

  1. Konfigurieren Sie die Netzwerkschnittstelle der KVM-VMs:

Dies hängt vom Betriebssystem der VMs ab. Auf jeden Fall sollte es mindestens IP-Adresse, Netzmaske und Standard-Gateway enthalten. Offensichtlich werden DNS-Server die Konfiguration abschließen.

Alle diese Konfigurationen sind statisch und können durch DHCP-Zuweisung ersetzt werden. In diesem Fall können die MAC-Adressen der Bridge und der KVM-VM-Schnittstellen hilfreich sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.