virtuelles Netzwerkdevice für domU

VirtualBox, VMWare, KVM, XEN, OpenVZ, Virtuozzo, etc.
thilo
Posts: 21
Joined: 2008-01-06 22:27

virtuelles Netzwerkdevice für domU

Post by thilo » 2008-07-26 00:58

Hallo zusammen,

dom0: Debian Etch 2.6.18-6-xen-686
Xen 3.0.3-1-i386-pae im NAT-Modus
domU: Debian Etch mit Apache 2.2

Ich möchte in einer domU, auf der Apache mit mehreren Domains läuft, für jede (SSL-)Domain ein Zertifikat verwenden.
Da ich aber nur eine öffentliche IP zur Verfügung habe und auch nur Port 443 für HTTPS verwenden möchte, geht das leider nicht.

Ich nutze Xen im NAT-Modus und habe der domU eine IP aus dem privaten Bereich gegeben, funktioniert bestens, Details hier.
Nun habe ich gelesen, daß man in der domU auch virtuelle Netzwerkdevices ala eth0:1 mit einer weiteren (hier privaten) IP anlegen können soll. Das würde das Problem lösen, ich hätte mehrere IPs in der domU.
Leider funktioniert das nicht, über die 2.IP ist die domU so nicht erreichbar.

Die /etc/network/interfaces der domU:

Code: Select all

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
 address 192.168.0.11
 gateway 192.168.0.1
 netmask 255.255.255.0

#2.Ip-Adresse
auto eth0:1
iface eth0:1 inet static
 address 192.168.0.12
 gateway 192.168.0.1
 netmask 255.255.255.0

route -n in der dom0:

Code: Select all

Kernel IP Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.0.11    0.0.0.0         255.255.255.255 UH    0      0        0 vif1.0
87.65.43.21     12.34.56.78   255.255.255.255 UGH   0      0        0 eth0
12.34.56.78   0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 dummy0
0.0.0.0         87.65.43.21     0.0.0.0         UG    0      0        0 eth0

und in der domU:

Code: Select all

Kernel IP Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0


Weiß jemand einen Tipp?

Besten Dank
Thilo

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: virtuelles Netzwerkdevice für domU

Post by Roger Wilco » 2008-07-26 01:55

Thilo wrote:Das würde das Problem lösen, ich hätte mehrere IPs in der domU.

Klar, das klappt solange du nur lokal auf deine RFC1918 IP-Adressen zugreifst. Im Internet hast du trotzdem nur eine öffentliche IP-Adresse. Also kleiner Denkfehler.

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: virtuelles Netzwerkdevice für domU

Post by daemotron » 2008-07-26 12:12

In der Routing-Tabelle der dom0 fehlt ein Eintrag, der 192.168.0.12 mit vif1.0 verknüpft. Wenn Du die 2. Adresse "anständig" über die Konfigurationsdatei der domU einstellst, legen die Startskripte beim hochfahren der domU den fehlenden Eintrag automatisch an (da vif1.0 ja nur dynamisch vergeben ist und sich mit jedem Start ändern kann eine durchaus sinnvolle Maßnahme).

thilo
Posts: 21
Joined: 2008-01-06 22:27

Re: virtuelles Netzwerkdevice für domU

Post by thilo » 2008-07-26 12:27

Wie ist denn da die Syntax?
So?
vif = [ 'ip=192.168.0.11, ip=192.168.0.12' ]

Wenn ich das so mache, wird in der Routingtabelle der dom0 192.168.0.11 durch 192.168.0.12 ersetzt, die 192.168.0.11 taucht nicht mehr auf.

Ich erstelle mal eine neue domU per:

Code: Select all

xen-create-image --force --hostname=test --ip 192.168.0.11 --ip 192.168.0.12


da heißt es beim Erstellen verheißungsvoll:

Code: Select all

Networking Information
----------------------
IP Address 1   : 192.168.0.11
IP Address 2   : 192.168.0.12
Netmask        : 255.255.255.0
Gateway        : 192.168.0.1


Klingt ja so, als würde die IP richtig angelegt...

Besten Dank
Thilo

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: virtuelles Netzwerkdevice für domU

Post by daemotron » 2008-07-26 13:19

Thilo wrote:Wie ist denn da die Syntax?
So?
vif = [ 'ip=192.168.0.11, ip=192.168.0.12' ]

Dafür gibt es genügend ausführliches Dokumentationsmaterial, z. B. http://www.pug.org/index.php/Xen-Installation oder http://wiki.xensource.com/xenwiki/Front ... StartSeite

thilo
Posts: 21
Joined: 2008-01-06 22:27

Re: virtuelles Netzwerkdevice für domU

Post by thilo » 2008-07-29 04:36

So, ich bin etwas weiter.
Die domU läuft nun wirklich mit zwei IPs, nachdem ich sie wie o.a. einmal neu erstellt habe.
Mit

Code: Select all

route add 192.168.0.12 dev vif1.0
in der dom0 habe ich die zweite IP von außen erreichbar gemacht.

Ich hatte in der dom0 eine Iptables-Regel erstellt, um die domU von außen erreichen zu können:

Code: Select all

server:~# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            12.34.56.78       tcp dpt:80 to:192.168.0.11:80

Ging wunderbar.
Ich hatte gedacht, wenn ich in der domU mit eth0:1 arbeite, daß ich dann keine neue Iptables-Regel in der dom0 brauche, da eth0:1 ja sozusagen nur ein alias von eth0 ist, aber wenn du denkst du denkst...

Füge ich für die neue IP eine weitere Regel hinzu, so daß das so aussieht:

Code: Select all

server:~# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            12.34.56.78       tcp dpt:80 to:192.168.0.11:80
DNAT       tcp  --  0.0.0.0/0            12.34.56.78       tcp dpt:80 to:192.168.0.12:80
geht es auch nicht (hätte mich auch gewundert); auch Multiple --to-destinations mit Iptables funktionieren nicht.

Mit einem Alternativport dagegen geht es:

Code: Select all

server:~# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            12.34.56.78       tcp dpt:80 to:192.168.0.11:80
DNAT       tcp  --  0.0.0.0/0            12.34.56.78       tcp dpt:8080 to:192.168.0.12:80

Apache reagiert also in der domU auf beide Adressen.

Aber wie bekomme ich es hin, daß das auch auf Port 80 für beide IP-Adressen geht?

Dafür gibt es genügend ausführliches Dokumentationsmaterial, z. B. http://www.pug.org/index.php/Xen-Installation oder http://wiki.xensource.com/xenwiki/Front ... StartSeite


Danke, das kenn ich. Leider habe ich da keinen Hinweis für mein Problem gefunden.

Besten Dank
Thilo

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: virtuelles Netzwerkdevice für domU

Post by daemotron » 2008-07-29 06:29

Thilo wrote:Aber wie bekomme ich es hin, daß das auch auf Port 80 für beide IP-Adressen geht?

Wie Roger Wilco schon geschrieben hat - hier liegt ein kleiner Denkfehler vor. Du hast nur eine öffentliche IP und damit steht Dir die Kombination [IP, Port] nur einmal zur Verfügung. Du kannst sie auch nur einmal per NAT forwarden; auf Layer 3/4 (iptables) kann man eine Verbindung nicht duplizieren. Das funktioniert nur auf Layer 7. Du bräuchtest für Dein Vorhaben also einen Reverse Proxy, wobei damit Dein ursprüngliches Problem (zu wenige öffentliche IPs für mehrere SSL-VHosts) noch nicht gelöst ist.

freddy36
RSAC
Posts: 277
Joined: 2008-03-20 17:31

Re: virtuelles Netzwerkdevice für domU

Post by freddy36 » 2008-07-29 08:38

Jo, dir wird nur ein Reverse Proxy oder SNI (http://en.wikipedia.org/wiki/Server_Name_Indication) helfen.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: virtuelles Netzwerkdevice für domU

Post by Roger Wilco » 2008-07-29 10:51

SNI wäre technisch sicherlich der sauberste Weg, allerdings mit der Einschränkung, dass nur die neuesten Webbrowser (und nicht einmal davon alle) die Technik unterstützen.

thilo
Posts: 21
Joined: 2008-01-06 22:27

Re: virtuelles Netzwerkdevice für domU

Post by thilo » 2008-07-29 11:08

Ok, ich gebs auf.
Wäre ja auch seltsam gewesen, wenn man aus nur einer öffentlichen IP mehrere hätte machen können...

Danke Euch!
Thilo