2.IP für domU reservieren

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

2.IP für domU reservieren

Post by thilo » 2008-05-19 17:45

Hallo zusammen,

nach einigen Tagen Ausprobieren und intensiver Lektüre hier im Forum schwirrt mir nun der Kopf.

Ich versuche gerade, meine 2.IP-Adresse meines Strato-Rootservers unter Xen verwenden zu können.
Dom0 läuft unter Debian Etch, Xen habe ich aus den Backports in der Version xen-hypervisor-3.2-1-i386.
Xen läuft im Routing-Modus.

Ich habe mich hauptächlich hier dran gehalten, habe dabei aber ein Grundproblem:

Im Gegensatz zu oioiii bekomme ich das Schema:

1.IP -> dom0
2.IP -> exklusiv für eine domU

nicht hin.
Wie muß meine Netzwerkkonfiguration denn aussehen dafür?
Im Moment sieht es so aus:
(Die IPs unten sind so gedacht:
1.IP: 12.34.56.78
2.IP: 87.65.43.21)

cat /etc/network/interfaces

Code: Select all

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

#2.Ip-Adresse
auto eth0:1
iface eth0:1 inet static
address 87.65.43.21
netmask 255.255.255.255
network 87.65.43.90
broadcast 87.65.43.255
gateway 88.88.88.88

#XEN
auto dummy0
iface dummy0 inet static
   address 10.0.1.1
   network 10.0.1.0
   netmask 255.255.255.0
   broadcast 10.0.1.255
   hwaddress ether 00:16:3e:00:00:88
   up route add 12.34.56.78 dev eth0 && route add default gw 12.34.56.78


Anschließend habe ich noch das hier gemacht:

Code: Select all

iptables -t nat -A PREROUTING -p tcp -d 87.65.43.21 --dport 80 -j DNAT --to 10.0.1.10:80


Die DomU kommt ins Internet, ist aber von außen nicht erreichbar.

Was mache ich falsch?

Besten Dank
Thilo

P.S.: Das Gateway habe ich mit

Code: Select all

route -n
ausgelesen, das sollte stimmen. Lautet in Wirklichkeit natürlich anders als oben zu lesen... :wink:
Auch hier im Forum habe ich gelesen, daß ich auch den Bridge-Modus nutzen könnte, wenn mein Hoster mir schon zwei öffentliche IPs vergibt.
Aber entweder blocken die das oder ich weiß auch nicht, mir schwirrt wie gesagt der Kopf...

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

Re: 2.IP für domU reservieren

Post by daemotron » 2008-05-19 19:12

Warum um alles in der Welt versuchst Du diesen Gewaltakt? Du hast eine zweite öffentliche IP. Lass damit die Dom0 in Ruhe und gib sie der DomU anstelle einer Adresse aus dem 10er-Netz. Dann reicht vif_bridge, und alles wird gut (es sei denn, Strato ist pingelig mit den MAC-Adressen, aber das musst Du bei deren Support erfragen).

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

Re: 2.IP für domU reservieren

Post by thilo » 2008-05-20 14:36

Danke Dir,

habe gerade mal beim Hoster angerufen, lt. Aussage des Supportmitarbeiters werden fremde MACs gesperrt, Bridgemodus geht also nicht.
Also doch der Gewaltakt...?

Gruß
Thilo

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

Re: 2.IP für domU reservieren

Post by daemotron » 2008-05-20 14:50

Dann bleibt Dir wohl nix anderes übrig als NAT. Also mal langsam Fehlerquellen einkreisen:
- Hast Du denn IP forwarding und Proxy Arp per sysctl aktiviert?
- Wie sehen deine Routing-Tabelle und die NAT-Tabelle von iptables aus?
- wie sieht die Netzwerk-Konfiguration innerhalb der DomU aus, wie die dazugehörige Xen-Konfiguration?

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

Re: 2.IP für domU reservieren

Post by thilo » 2008-05-20 15:00

Eigentlich habe ich das alles gemacht,
muß aber gerade weg, ich mache später weiter und poste dann mal, wie weit ich gekommen bin.

Bis denn
Thilo

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

Re: 2.IP für domU reservieren

Post by thilo » 2008-05-21 05:07

So, weiter gehts :-D

Ich habe es mit NAT versucht und kann die domUs nun von außen über beide IPs erreichen, da ich in der dom0 ein Alias-IP ála eth0:1 angelegt habe.
Meine Konfig dazu sieht so aus:

dom0:
cat /etc/network/interfaces

Code: Select all

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

#2.Ip-Adresse
auto eth0:1
iface eth0:1 inet static
address 87.65.43.21
netmask 255.255.255.255
network 87.65.43.21
broadcast 87.65.43.255
gateway 88.88.88.88


ifconfig

Code: Select all

eth0      Protokoll:Ethernet  Hardware Adresse 00:1B:00:00:00:00
          inet Adresse:12.34.56.78  Bcast:12.34.56.78  Maske:255.255.255.255
          inet6 Adresse: fe80::21b:21ff:fe14:8e59/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:791 errors:0 dropped:0 overruns:0 frame:0
          TX packets:640 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:100
          RX bytes:73543 (71.8 KiB)  TX bytes:86952 (84.9 KiB)
          Basisadresse:0x9000 Speicher:f2020000-f2040000

eth0:1    Protokoll:Ethernet  Hardware Adresse 00:1B:00:00:00:00
          inet Adresse:87.65.43.21  Bcast:87.65.43.255  Maske:255.255.255.255
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          Basisadresse:0x9000 Speicher:f2020000-f2040000

lo        Protokoll:Lokale Schleife
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6 Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

vif1.0    Protokoll:Ethernet  Hardware Adresse FE:FF:FF:FF:FF:FF
          inet Adresse:192.168.4.137  Bcast:0.0.0.0  Maske:255.255.255.255
          inet6 Adresse: fe80::fcff:ffff:feff:ffff/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0
          RX bytes:1026 (1.0 KiB)  TX bytes:1381 (1.3 KiB)

route -n

Code: Select all

Kernel IP Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.4.10    0.0.0.0         255.255.255.255 UH    0      0        0 vif1.0
88.88.88.88     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
0.0.0.0         88.88.88.88     0.0.0.0         UG    0      0        0 eth0
0.0.0.0         88.88.88.88     0.0.0.0         UG    0      0        0 eth0

arp und so:

Code: Select all

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp

iptables:

Code: Select all

iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 80 -j DNAT --to-destination 192.168.4.10:80


domU:
cat /etc/network/interfaces

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.4.10
 gateway 192.168.4.137
 netmask 255.255.255.0

ifconfig

Code: Select all

eth0      Link encap:Ethernet  HWaddr 00:16:3E:4E:10:3D
          inet addr:192.168.4.10  Bcast:192.168.4.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe4e:103d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1381 (1.3 KiB)  TX bytes:1264 (1.2 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

route -n

Code: Select all

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.4.137   0.0.0.0         UG    0      0        0 eth0


Problem: ob ich bei dieser Konfiguration eine oder zwei Adressen habe, ist egal, die zweite ist ja nur ein Alias und liegt sozusagen brach.

Dann bleibt Dir wohl nix anderes übrig als NAT

Nicht besser Routing-Modus?
Das hier bzw. das hier ist genau was ich suche. Leider klappt es nicht, beim Starten der domU kommt:

Code: Select all

Setting up networking....
Configuring network interfaces...SIOCADDRT: Network is unreachable
Failed to bring up eth0.


Ich habe dazu wie angegeben die /etc/network/interfaces "normal" aufgesetzt:

Code: Select all

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

xen auf route umgestellt

Code: Select all

(network-script network-route)
(vif-script     vif-route)

in /etc/xen/scripts/network-route steht bei mir das hier drin:

Code: Select all

echo 1 >/proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/conf/eth0/proxy_arp

und schließlich in der domU:

Code: Select all

# The primary network interface
auto eth0
iface eth0 inet static
    address 87.65.43.21
    netmask 255.255.255.255
    up        /sbin/route add default dev eth0
    up        /sbin/route add default gw 88.88.88.88


- Hast Du denn IP forwarding und Proxy Arp per sysctl aktiviert?

ja, s.o.
- Wie sehen deine Routing-Tabelle und die NAT-Tabelle von iptables aus?

route -n

Code: Select all

Kernel IP Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
88.88.88.88     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
0.0.0.0         88.88.88.88     0.0.0.0         UG    0      0        0 eth0

iptables -t nat -L -n (ist noch von der NAT-Variante)

Code: Select all

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  0    --  10.0.1.0/24          0.0.0.0/0
MASQUERADE  0    --  10.0.1.0/24          0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

- wie sieht die Netzwerk-Konfiguration innerhalb der DomU aus, wie die dazugehörige Xen-Konfiguration?

s.o. und:

Code: Select all

kernel  = '/boot/vmlinuz-2.6.18-6-xen-686'
ramdisk = '/boot/initrd.img-2.6.18-6-xen-686'
memory  = '128'
root    = '/dev/sda1 ro'
disk    = [ 'phy:vg/test5-disk,sda1,w', 'phy:vg/test5-swap,sda2,w' ]
name    = 'test5'
vif  = [ 'ip=87.65.43.21' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart


Gruß
Thilo

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

Re: 2.IP für domU reservieren

Post by thilo » 2008-05-21 05:09

Oder doch mit der Dummy-Variante?

sledge0303
RSAC
Posts: 767
Joined: 2005-09-16 00:06
Location: Berlin-Reinickendorf

Re: 2.IP für domU reservieren

Post by sledge0303 » 2008-05-21 07:18

Thilo wrote:Oder doch mit der Dummy-Variante?


Dummy-Treiber im Kernel aktiviert?

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

Re: 2.IP für domU reservieren

Post by daemotron » 2008-05-21 12:56

vif_route funktioniert nur mit dummy-Interface; mit Ip-Aliasen funktioniert das nicht (da beim Routing immer ein Interface als Destination herauskommen muss). NAT funktioniert auch mit Aliases. Für Routing brauchst Du aber drei öffentliche IPs: Eine für die Dom0, eine für die DomU und eine, die als Gateway fungiert und im Subnetz der DomU-IP liegt (siehe http://www.debian-administration.org/articles/360)

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

Re: 2.IP für domU reservieren

Post by thilo » 2008-05-22 14:08

@sledge0303
Dummy-Treiber im Kernel aktiviert?

Debian Kernel 2.6.18-6-xen-686, also bereits im Kernel enthalten (nach meinen Infos) und lt. lsmod auch geladen.

@jfreund
Ok, dann fällt Routing aus und Du hast recht, es bleibt nur NAT.

Aber ich glaube, jetzt habe ich es:
Wenn ich
-Xen im Routing-Modus laufen lasse
-in der dom0 ein dummy-IF mit einer IP aus dem privaten Bereich erstelle inkl.

Code: Select all

up route add 12.34.56.78 dev eth0 && route add default gw 12.34.56.78

-der domU eine IP aus diesem privaten Bereich gebe
-für die domU eine Iptables-Prerouting Regel erstelle
-mit anderen Worten mache, was Du hier geschrieben hast

dann kann ich die domU von außen erreichen, wunderbar.
Aber halt nur unter derselben IP, die auch die dom0 hat.

Wenn ich nun noch ein Alias eth0:1 mit der zweiten IP erstelle, kann ich, je nachdem welche IP ich beim dummy unter

Code: Select all

up route add 12.34.56.78 dev eth0 && route add default gw 12.34.56.78
eingebe per iptables-prerouting Regel Ports an die domU weiterleiten. Es ist dann z.B. Port 80 für beide IPs von außen erreichbar und geht einmal auf die dom0 und einmal auf die domU.
Somit wunderbar und ich habe, was ich wollte. :D/

Vielen Dank für die Hilfe =D>

Was ich noch nicht verstehe:
Wenn ich Xen auf NAT umstelle und sonst alles so lasse (iptables, interfaces etc.) ändert sich scheinbar nichts, es geht auch alles.

In demselben o.e. Thread schreibt oioiii:
1.IP -> dom0
2.IP -> exklusiv für eine domU

das funktioniert mit den scripten network-route und vif-route auch einwandfrei


Ich schließe daraus, daß man eine zweite öffentliche IP auch nur für die domU reservieren kann, ohne iptables, Alias etc.
Liege ich da falsch?
Ich übe halt noch mit Xen... :?

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

Re: 2.IP für domU reservieren

Post by daemotron » 2008-05-22 20:01

Thilo wrote:Ich schließe daraus, daß man eine zweite öffentliche IP auch nur für die domU reservieren kann, ohne iptables, Alias etc.
Liege ich da falsch?

Da liegst Du völlig richtig. ABER: Wenn eine DomU direkt mit der Außenwelt kommuniziert (vif_bridge), tut sie das auch mit einer eigenen MAC-Adresse. Und einige Provider filtern an ihren Routern/Switches ebendiese, um MAC-Spoofing zu unterbinden, womit dieses schön einfache Modell leider in vielen Fällen nicht auf einem Rootserver einsetzbar ist.

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

Re: 2.IP für domU reservieren

Post by thilo » 2008-05-23 10:49

Die meisten Rootserver haben ja zwei (physische) Netzwerkkarten. Meiner leider nicht oder sie ist im BIOS abgeschaltet.
Die könnte man doch in Betrieb nehmen und per pciback.hide an die domU durchreichen bzw. vor der dom0 verstecken.
Mal den Hoster fragen, ob die das kostenlos machen... :lol:

Besten Gruß
Thilo