Hello

Je cherche a configurer xen et je commence à en perdre mon latin !

Avant de commencer j'ai un dom0 sous debian 7 et un xen en 4.1.4 (pas xenserver, xen). Je manipule mes VM avec la suite d'outils xen-tools. Je suis dans un mode de configuration vif-route, je ne veux pas de bridge car mon dom0 a une IP statique, donnée par l'hébergeur, et je veux que mes machines virtuelles soient sur un réseau privé (10.0.0.0/24), avec mon dom0 qui fait tampon. En fait ça fait longtemps que je fonctionne comme ça, et tout allait très bien dans le meilleur des monde quand tout à coup, j'ai voulu ajouter une IP à mon dom0 (pour changer de dom0 par la suite, car mon IP statique est liée à mon dom0 et je ne veux pas que mes services soient dépendant du serveur).

J'ai ajouté l'IP tout simplement en modifiant mon /etc/interfaces comme suit (en suivant les instructions de mon hébergeur) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
auto eth0
iface eth0 inet static
        address ANCIENNE.IP
        netmask 255.255.255.0
        network ANCIENNE.0
        broadcast ANCIENNE.255
        gateway ANCIENNE.254

auto eth0:0
iface eth0:0 inet static
        address NOUVELLE.IP
        netmask 255.255.255.255
        broadcast NOUVELLE.IP
En dessous de ma première IP. A noter que ma nouvelle IP m'a été attribuée par mon hébergeur et est routée par lui vers mon ancienne IP.

Tout fonctionne très bien, en adaptant mes règles de routage j'ai pu adresser mes machines virtuelles comme j'adressais avec la première IP etc...

Maintenant je veux aller plus loin et je veux que mes VM parlent avec cette nouvelle IP. C'est là que ça coince. J'ai tenté des trillions de trucs dans tous les sens, rien à faire, mes VM ne veulent pas parler avec cette nouvelle IP. Je ne sais plus quoi faire. Pour illustrer mon problème j'ai deux exemples. Sur un serveur bac à sable j'ajoute un truc du genre

Code : Sélectionner tout - Visualiser dans une fenêtre à part
iptables -A INPUT -s ANCIENNE.IP -j LOG
Comme ça je vois les paquets arriver de mon ancienne IP. Ensuite j'ai plus qu'à faire un test de ping vers mon serveur bac à sable pour voir si les paquets qui arrivent ont la bonne ou la mauvaise IP.

Deuxième test, sur mon dom0 je mets un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
iptables -t nat -A POSTROUTING -o eth0:0 -s 10.0.0.0/24 -j MASQUERADE -> mes paquets sont jamais maqueradés
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE -> mes paquets sortent maqueradés
Ce deuxième test me fait penser que mes VM passent par eth0 pour sortir, le souci c'est que j'ai pas réussi a leur indiquer de faire autrement !

Voici les choses que j'ai tenté qui me semblaient avoir le plus de sens :

Ajouter netdev=eth0:0 dans l'appel network-route de xend-config. Ca marche, les vif des VM chopent bien l'IP NOUVELLE.IP, par contre les VM continuent de parler avec l'IP de eth0 : ANCIENNE.IP
Ajouter cette route sur le dom0 : "post-up /sbin/ip route replace default via GATEWAY.IP src NOUVELLE.IP" Et ca marche, le dom0 parle bien avec l'IP NOUVELLE.IP après, par contre tjrs pas les VM...

Pour l'instant je veux éviter un truc un peu bancal de type NAT d'une interface vers une autre, si les VM parlent via eth0, il doit bien y avoir un moyen de les faire parler via eth0:0.

J'en appelle à votre aide car je sèche complètement, quelqu'un aurait une idée (ou remarque une bétise dans ce que j'ai fait) ?

Ci dessous des éléments de configuration supplémentaires :

Sur dom0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
dom0 # ifconfig
eth0      Link encap:Ethernet  HWaddr XXXXXXX 
          inet addr:ANCIENNE.IP  Bcast:ANCIENNE.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:84274 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23912 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7729871 (7.3 MiB)  TX bytes:4916716 (4.6 MiB)
          Memory:dfa20000-dfa40000 

eth0:0    Link encap:Ethernet  HWaddr XXXXXXX
          inet addr:NOUVELLE.IP  Bcast:NOUVELLE.IP  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Memory:dfa20000-dfa40000 

vif14.0   Link encap:Ethernet  HWaddr fe:ff:ff:ff:ff:ff  
          inet addr:NOUVELLE.IP  Bcast:NOUVELLE.IP  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  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:32 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

dom0 # ip route
default via ANCIENNE.254 dev eth0  src NOUVELLE.IP
10.0.0.1 dev vif14.0  scope link  src NOUVELLE.IP
ANCIENNE.0/24 dev eth0  proto kernel  scope link  src ANCIENNE.IP
Sur une VM
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
VM1 # ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3e:c8:43:70  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fec8:4370/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:158 errors:0 dropped:0 overruns:0 frame:0
          TX packets:231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14729 (14.3 KiB)  TX bytes:24064 (23.5 KiB)
          Interrupt:80

VM1 # ip route
default dev eth0  scope link 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.1
Merci beaucoup !