Le 07/08/2011 03:02, Thierry B a écrit : > Bonsoir, > > J'ai installé sur un serveur dédié une debian squeeze avec xen 4, une VM > principale qui tourne en mode route avec une IP failover ainsi qu'une autre > VM de etst tournant en NAT. > > Je voulais donc mixer le mode route et nat, et j'ai effectué la config > suivante: > > - contenu de mon xend-config.sxp : > > (network-script 'network-route netdev=eth0') > (vif-script vif-route) > > vu que c'est ma 1ere VM en mode route la plus importante. > > Pour la seconde VM en nat, j'ai mis ceci dans le fichier de config: > > vif = [ 'ip=192.168.1.2,mac=00:16:3E:xxxx:xx, script=vif-nat, > vifname=vif-debianTest' ] > > J'ai modifié un peu le script vif-nat : > > routing_ip() > { > #echo $(echo $1 | awk -F. '{print $1"."$2"."$3"."$4 + 127}') > echo $(echo $1 | awk -F. '{print $1"."$2"."$3"."254}') > } > > pour avoir toujours la même ip statique en gateway pour la VM2, et pour > pouvoir mettre cette IP dans la config réseau du domU correspondant. > > Je peux pinguer VM2 depuis mon dom0, j'ai internet depuis ma VM2 mais > impossible de faire un port mapping. > On dirait que rien ne forward entre mes interfaces > > Par exemple, je voulais rediriger le port 2222 de mon dom0 vers le 22 de VM2 ; > > Voici mes règles : > > # iptables -L -v | more > > Chain INPUT (policy DROP 860 packets, 95727 bytes) > pkts bytes target prot opt in out source > destination > > 18 2185 ACCEPT all -- lo any anywhere anywhere > > 8 792 ACCEPT icmp -- any any anywhere anywhere > > 1065 83852 ACCEPT tcp -- eth0 any > lev92-4-88-164-133-124.fbx.proxad > .net anywhere tcp dpt:ssh > 5 544 ACCEPT all -- eth0 any anywhere anywhere > state RELATED,ESTABLISHED > 0 0 ACCEPT all -- vif2.0 any anywhere anywhere > > 0 0 ACCEPT all -- vif-debianTest any anywhere > anyw > here > > Chain FORWARD (policy DROP 11 packets, 528 bytes) > pkts bytes target prot opt in out source > destination > > 1517 322K ACCEPT all -- eth0 any anywhere anywhere > state RELATED,ESTABLISHED > 10 496 ACCEPT all -- eth0 any anywhere > 88-190-238-1 > 64.rev.dedibox.fr > 1605 143K ACCEPT all -- vif2.0 any anywhere anywhere > > 0 0 ACCEPT all -- vif-xenwinxp any anywhere > anywhe > re > 0 0 ACCEPT all -- vif-debianTest any anywhere > anyw > here > 0 0 ACCEPT all -- any any anywhere anywhere > state RELATED,ESTABLISHED PHYSDEV match --physdev-out vif-debianTest > 0 0 ACCEPT udp -- any any anywhere anywhere > PHYSDEV match --physdev-in vif-debianTest udp spt:bootpc dpt:bootps > 0 0 ACCEPT all -- any any anywhere anywhere > state RELATED,ESTABLISHED PHYSDEV match --physdev-out vif-debianTest > 0 0 ACCEPT all -- any any xenDebianTest anywhere > PHYSDEV match --physdev-in vif-debianTest > > > Chain OUTPUT (policy ACCEPT 886 packets, 129K bytes) > pkts bytes target prot opt in out source > destination > > 24 2946 ACCEPT all -- any lo anywhere anywhere > > > # iptables -L -t nat -v | more > Chain PREROUTING (policy ACCEPT 1265 packets, 132K bytes) > pkts bytes target prot opt in out source > destination > > 11 528 DNAT tcp -- eth0 any anywhere anywhere > tcp dpt:2222 to:192.168.1.2:22 > > Chain POSTROUTING (policy ACCEPT 27 packets, 1850 bytes) > pkts bytes target prot opt in out source > destination > > 110 7826 SNAT all -- any eth0 88-190-238-164.rev.dedibox.fr > an > ywhere to:88.190.238.164 > 0 0 SNAT all -- any any 192.168.0.2 anywhere > to:88.190.15.135 > 0 0 SNAT all -- any any xenDebianTest anywhere > to:88.190.15.135 > > Chain OUTPUT (policy ACCEPT 21 packets, 1538 bytes) > pkts bytes target prot opt in out source > destination > > > # tcpdump -i eth0 tcp port 2222 > tcpdump: verbose output suppressed, use -v or -vv for full protocol decode > listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes > 19:54:02.662761 IP lev92-4-88-164-133-124.fbx.proxad.net.21384 > > sd-xxxx.dedibox.fr.2222: Flags [S], seq 2030026446, win 65535, options > [mss 1460,nop,nop,sackOK], length 0 > 19:54:05.681658 IP lev92-4-88-164-133-124.fbx.proxad.net.21384 > > sd-xxxx.dedibox.fr.2222: Flags [S], seq 2030026446, win 65535, options > [mss 1460,nop,nop,sackOK], length 0 > ... > > Rien n'est donc forwardé entre eth0 et vif-debianTest > > Pourtant : > > # cat /proc/sys/net/ipv4/ip_forward > 1 > > # cat /proc/sys/net/ipv4/conf/eth0/forwarding > 1 > > # cat /proc/sys/net/ipv4/conf/all/forwarding > 1 > > > # cat /etc/sysctl.conf > net.ipv4.ip_forward=1 > net.ipv4.conf.all.proxy_arp=1 > > > # ifconfig vif-debianTest > > vif-debianTest Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff > inet adr:192.168.1.254 Bcast:0.0.0.0 Masque:255.255.255.255 > adr inet6: fe80::fcff:ffff:feff:ffff/64 Scope:Lien > UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 > RX packets:3 errors:0 dropped:0 overruns:0 frame:0 > TX packets:2 errors:0 dropped:3 overruns:0 carrier:0 > collisions:0 lg file transmission:32 > RX bytes:196 (196.0 B) TX bytes:160 (160.0 B) > > # ip route show > 88.190.238.164 dev vif2.0 scope link src 88.190.15.135 > 192.168.1.2 dev vif-debianTest scope link src 192.168.1.254 > 88.190.15.0/24 dev eth0 proto kernel scope link src 88.190.15.135 > default via 88.190.15.1 dev eth0 > > > J'ai testé avec mon laptop. Au début ca ne fonctionnait pas non plus, et > depuis que j'ai une seule fois redemarré en mode nat par défaut dans le > xend-config.sxp, ca marche. Même en remettant le mode route par défaut. > > Une idée? > > Merci :-) > Bonsoir,
Finalement, j'ai trouvé. J'ai basé ma règle FORWARD, non pas sur l'interface vif, mais sur l'ip tout simplement : iptables -A FORWARD -p tcp -m state --state NEW -d 192.168.1.2 --dport 22 -j AC\ CEPT et hop, ca marche :-) Merci.