Virtualisation avec KVM Problèmes règles iptables

Bonjour à tous,

J’ai un serveur dédié, ou j’ai installé une solution de virtualisation avec KVM et libvirt. Tout fonctionne à peut près…

J’ai une seul IP FIXE, donc j’ai opté pour faire du NAT. (Fonctionne correctement pour le WEB ET SSH)

Sur une machine virtuel, j’ai installé POSTFIX, et la commence mon soucis.

  • Si je ne redirige pas le port 25 sur la machine hôte, le port 25 vers la VM (mail), tout fonctionne, les mails partent bien.
  • Mais si je le redirige, le serveur n’envoie plus de mail (erreur: time out)

J’ai fais plusieurs test, et grâce à telnet , lancé depuis une VM, exemple:

  • telnet smtp.toto.fr 25 , c’est le serveur virtualisé(mail) qui répond, ce qui signifie que quand un paquet sort sur le port 25, il est re-routé vers la machine virtuel (serveur mail), et donc si je supprime la règle de redirection du port 25, telnet se connecte bien au serveur distant.

Voici les règles iptables

[code]iptables -t nat -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
iptables -A INPUT -i virbr0 -j ACCEPT
iptables -A OUTPUT -o virbr0 -j ACCEPT
iptables -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -i virbr0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT
iptables -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
iptables -A FORWARD -i virbr0 -o virbr0 -j ACCEPT

iptables -t nat -I PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.122.116 [/code]

Ma question, comment faire pour éviter ce genre de problèmes

J’espère avoir été assez clair dans mes explications, car la je ne sais plus quoi faire.

Merci

L’origine du problème est que ta règle DNAT redirige toutes les connexions SMTP, aussi bien provenant de l’intérieur que de l’extérieur et quelle que soit l’adresse de destination originelle.
Le mieux et le plus simple AMHA est de ne rediriger que les connexions dont l’adresse destination originelle est l’adresse publique du serveur dédié.

Merci, la règle fonctionne à merveille

Tellement logique, BRAVO.