Obwohl ich mit XEN noch relativ neu bin (unter Ubuntu 14.04), hatte ich bisher keine wirklichen Probleme. Ich habe mein Netzwerk mit Bridging eingerichtet und das hat bisher für viele verschiedene Maschinen gut funktioniert. Normalerweise kann ich meine Antworten irgendwo finden, aber dieses Mal bin ich nicht weitergekommen und suche nach Hilfe.
Ich versuche, eine Client-VM (DomU) mit einer großen Anzahl von IPs einzurichten, was mir viel Ärger bereitet. Hier ist das Setup:
Der Hostcomputer verfügt über zwei Netzwerkkarten, eine wird für privates (10.10.10.x) xenbr0 verwendet und die andere ist nur für öffentliches IPS (z. B. xyz*) xenbr1 überbrückt:
Unten ist meine /etc/networking/interfaces
Datei vom Host:
iface eth0 inet manual
auto xenbr0
iface xenbr0 inet static
bridge_ports eth0
address 10.10.10.112
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
gateway 10.10.10.1
auto eth1
iface eth1 inet manual
auto xenbr1
iface xenbr1 inet manual
bridge_ports eth1
bridge_maxwait 1
In der Client-VM werden außerdem zwei überbrückte Netzwerkkarten verwendet /etc/networking/interfaces
:
auto eth0
iface eth0 inet static
address x.y.z.170
netmask 255.255.255.240
broadcast x.y.z.175
gateway x.y.z.161
auto eth1
iface eth1 inet static
address 10.10.10.155
netmask 255.255.255.0
broadcast 10.10.10.255
auto eth0:1
iface eth0:1 inet static
address x.y.z.162
netmask 255.255.255.240
broadcast x.y.z.175
auto eth0:2
iface eth0:2 inet static
address x.y.z.163
netmask 255.255.255.240
broadcast x.y.z.175
auto eth0:3
iface eth0:3 inet static
address x.y.z.164
netmask 255.255.255.240
broadcast x.y.z.175
etc…. up to 8 alaises.
In meiner Xen-Konfigurationsdatei habe ich:
vif = [ 'bridge=xenbr0', 'bridge=xenbr1' ]
Ich habe vor, die lokalen IPs aus der VM zu entfernen, sobald alles eingerichtet und funktionsfähig ist.
Ich verwende Aliase, da ich versuche, dies von einer Bare-Metal-Maschine auf eine VM zu verschieben. Irgendwann wird die übermäßige Nutzung von IPS behoben, aber aus verschiedenen Gründen kann ich das noch nicht tun. Wie auch immer, wenn ich die VM boote, sind nur einige der IPs pingbar, es sei denn, ich mache ein arping -U -I eth1 x.y.z.162
, etc. für jede IP-Adresse. Dann scheinen die Dinge zumindest zu reagieren, aber das Routing funktioniert nicht wirklich richtig. Ich kann per SSH zu den IPs über http browsen, aber virtuelle Sites funktionieren nicht richtig (d. h. es schickt mich nur zu einer und ignoriert die anderen) und ein Neustart von Bind und einigen anderen Diensten reagiert nicht richtig. Es ist, als ob das Routing nicht richtig eingerichtet ist und während die IPs antworten, ist es nicht wirklich die angeforderte IP, die antwortet, sondern eine andere IP.
Dies ist jedoch nur bei EINIGEN der zusätzlichen IPS der Fall. Wenn ich neu starte, geht das Routing, das der ARP-Befehl behoben hat, verloren. Dann funktionieren Bind und einige andere Dienste auf der VM nicht. Ich mache den ARP-Befehl und alles funktioniert wieder.
Ich denke, das Arping ist nur ein Pflaster, behebt aber nicht das eigentliche Problem. Da genau dasselbe System auf einer Bare-Metal-Maschine funktioniert, bin ich fast sicher, dass das Problem an meiner XEN-Netzwerkkonfiguration liegt und nicht an der Switch-Konfiguration oder dem Betriebssystem, das ich migrieren möchte.
Um das Problem weiter einzugrenzen, habe ich einen sauberen Ubuntu 14.04-Gast mit mehreren IPs eingerichtet und dabei das modernere (und nicht veraltete IP-Aliasing-)Setup verwendet, das unten in der VMs- /etc/networking/interfaces
Datei angezeigt wird:
auto eth0
allow-hotplug eth0
iface eth0 inet static
address x.y.z.110
netmask 255.255.255.240
broadcast x.y.z.175
gateway x.y.z.161
iface eth0 inet static
address x.y.z 162
netmask 255.255.255.240
broadcast x.y.z.175
iface eth0 inet static
address x.y.z 163
netmask 255.255.255.240
broadcast x.y.z.175
and on with the other IPS
Alles mit dem gleichen Ergebnis. Was übersehe ich? Für jede Hilfe wäre ich dankbar.
Antwort1
Ich habe herausgefunden, was mein Problem war, und poste es hier, falls jemand auf ein ähnliches Problem stößt.
In meiner Xen-Konfiguration habe ich keine MAC-Adresse eingegeben. Im IE hatte ich:
vif = [ 'bridge=xenbr0', 'bridge=xenbr1' ]
Als ich etwas brauchte wie:
vif = [ 'bridge=xenbr0', 'mac=00:11:5e:5n:2c:1c,bridge=xenbr1' ]
Das Routing für die MAC-Adresse lief nicht sofort ab, daher wurde das Routing durch Ausführen dieses ARP-Befehls für jede IP behoben:
arping -U -I eth1 x.y.z.162
Ich vermute, dass die VM bei jedem Hochfahren eine neue MAC-Adresse hatte und nur einige der Routing-Tabellen beim Hochfahren der VM aktualisiert wurden.
Da sich die MAC-Adresse nicht ändert, ist alles gut.
Antwort2
Versuchen Sie, die Schnittstellenkonfigurationen in DomU auszutauschen. Entsprechend Ihrer Dom0-Konfiguration sollten Sie eth0 für private und eth1 für öffentliche IPs in Ihrem DomU verwenden.