Masquerade Selectif

Bonjour, Voici mon problème.

J’ai un serveur Debian LENNY relié à ma frebbox (eth0) et au réseau local 192.168.2 (eth1). Tout fonctionne à merveille.

Seulement, dans mon iptable, j’ai configuré comme précisé dans ce tuto : formation-debian.via.ecp.fr/firewall.html le MASQUERADE car :

  1. Si je ne l’active pas (ligne MASQUERADE en commentaire), le réseau n’accède pas au NET mais bien au réseau
  2. Si je l’active (ligne MASQUERADE décommentée), le réseau accède au NET mais pas au serveur (FTP, SSH, LDAP, …)

Je souhaiterais donc trouver une config qui me permettent d’acceder, depuis un poste du réseau local aux service du serveur ET au net …

Je n’ai pas de proxy installé (j’en avais un : SQUID, mais il ne gérait pas l’UDP malheureusement onligatoire pour utiliser la Wii online, mais à part ce point, tout fonctionnait correctement…)

Voici mes fichiers de configuration, n’hésitez pas à m’en demander d’autres si besoin !

Merci pour votre aide :

[code]#!/bin/sh

/etc/network/if-pre-up.d/iptables-start

iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p igmp -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p udp --dport 139 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.XXX:80
[/code]

Ce code est activé à chaque configuration réseau (selon le site ci-dessus)

Voici ma configuration de DNS :

[code]$TTL 604800
@ IN SOA monserveur.mondomaine.com. root.mondomaine.com. (
2009012404
604800
86400
2419200
604800 )

           	  NS      monserveur.mondomaine.com.          

monserveur A 192.168.2.XXX
monserveur HINFO “Serveur Principal” “Debian ETCH4”

PC1 A 192.168.2.YYY
PC2 A 192.168.2.ZZZ

www CNAME monserveur
ldap CNAME monserveur
mysql CNAME monserveur
ftp CNAME monserveur
mail CNAME monserveur
ssh CNAME monserveur
[/code]

[code]$TTL 604800
@ IN SOA monserveur.mondomaine.com. root.mondomaine.com. (
2009012401
604800
86400
2419200
604800 )
NS monserveur.mondomaine.com.
XXX PTR monserveur.mondomaine.com.
YYY PTR PC1.mondomaine.com.
ZZZ PTR PC2.mondomaine.com.

[/code]
Mon DHCP/Interface

[code]auto lo eth1 eth0

iface lo inet loopback

iface eth1 inet static
address 192.168.2.XXX
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255

iface eth0 inet dhcp
post-up iptables-restore < /etc/iptables.up.rules
[/code]

[code]# Reseau LAN - ETH1
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.VVV 192.168.2.WWW;
option broadcast-address 192.168.2.255;
option domain-name “mondomaine.com”;
option domain-name-servers 192.168.2.XXX;
option routers 192.168.2.XXX; }

[/code]

C’est un problème classique: je résume
Ton serveur reçoit un requête de l’exterieur qui a interrogé IP_ext:80, il répond avec IP_Lan:80 mais devant repasser par la passerelle, la machine extérieur reçoit bien une réponse de IP_ext:80. Tout va bien.

Ton serveur reçoit une requete de IP_NET pour IP_ext:80, elle est relayée à IP_Lan:80 qui répond directement à IP_NET. Celui ci attend une réponse de IP_ext:80 et ignore la réponse (qui ne viendra pas).

La solution; faire une règle de redirection avec NAT. Ici ce serait

iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.2.0/24 -j MASQUERADE
Va voir http://forum.debian-fr.org/viewtopic.php?f=8&t=1901&start=125

J’ai modifié iptable mais rien y fait,

cependant, depuis l’exterieur, lorsque je ping mon domaine mondomaine.com (domaine OVH retourné vers mon serveur), ca marche

Quand je ping un alias comme ssh.mondomaine.com ca ne marche plus …

Le problème ne viendrait-il pas de Bind ?

un p’tit up ?

Là où il faut que tu sois plus clair sur le pbm, tu parlais de requête (WEB?) sur le serveur à partir du LAN (du moins je l’avais compris comme ça), puis là tu parles de poing de l’extérieur. Quelles sont les commandes que tu fais qui ne donnent pas le résultat voulu?

En fait, le problème vient de la résolution des nom je penses.

En intérieur comme en exterieur, lorsque je ping les adresses alias (ex : mysql.mondomaine.com), ca fonctionne (la résolution en exterieur donne mon IP publique et en intérieur, serveur.mondomaine.com)

Seulement, lorsque je veux utiliser ces alias au travers d’outils (ex: putty, filezilla, …) ils ne fonctionnent pas que ce soit en intérieur ou en exterieur.

En revanche, si je désactive MASQUARADE (j’isole donc ma LAN de la toile), ces alias fonctionne correctement en intérieur.

En bref, MASQUARADE m’empêche d’utiliser mes alias définie dans mon DNS perso (db.mondomaine.com)

Quelle est ta configuration DNS?

Ma configuration DNS est spécifié dans mon premier message.

Sans trop savoir comment, j’ai réussi à faire fonctionner le tout. Seulement, depuis la LAN, ca marche mais depuis l’exterieur, seule l’adresse mondomaine.com est intéroggeable (depuis putty ou filezilla), les alias ssh.mondomaine.com ou mysql.mondomaine.com n’aboutissent pas …

J’approche du but !

Merci pour votre aide

Si c’est l’extérieur, il faut attendre 24-48h que le DNS se propage…

OK, mais voici plus de précision :

j’ai un domaine mondomaine.com chez OVH.
Sur ce DNS OVH, j’ai redirigé ce mondomaine.com vers mon IP publique, donc vers mon serveur.

Mon serveur possède BIND9 qui utilise la configuration de mondomaine.com cité ci dessus.

Cette configuration existe depuis plus de deux semaine.

Est-ce qu’il n’y aurait pas de conflit entre OVH et mon serveur DNS ?

Pour info, voici la config OVH :

mondomaine.com NS dns10.ovh.net .mondomaine.com NS ns10.ovh.net .mondomaine.com MX 1 mx0.ovh.net .mondomaine.com MX 100 mxb.ovh.net .mondomaine.com A MON_IP_FREE www.mondomaine.com CNAME mondomaine.com audio.mondomaine.com CNAME audio.ovh.net ftp2.mondomaine.com CNAME anonymous.ftp.ovh.net imp.mondomaine.com CNAME imp.ovh.net jabber.mondomaine.com CNAME jab1.start.ovh.net ox.mondomaine.com CNAME ox.ovh.net sip.mondomaine.com CNAME sip1.start.ovh.net squirrel.mondomaine.com CNAME squirrel.ovh.net vpn.mondomaine.com CNAME vpn.start.ovh.net .mondomaine.com SPF v=spf1 include:mx.ovh.com ~all

PS: je n’utilise pas les alias définis dans OVH (imp,jabber,ox,ftp2, …)

Alors oui il y a un souci, les DNS ne donnent pas la même réponse. C’est une chose à éviter car cela explique effectivement sans doute tes difficultés.

Ca veut dire quoi ?

Je dois apporter quelles modification et sur quel DNS ?

P’tit up ?

Je ne serais pas formel sur ce coup là parce qu’il y a peut être des raisons à ta configuration que je ne connais pas. Mais en gros à mon idée le DNS interne devrait renvoyer ton IP externe comme adresse de mondomaine.com et des autres autres. Le problème se pose pour PC1 et PC2, dans la mesure où ils ne sont accessibles que du LAN? tu peux mettre l’IP interne.
C’est comme cela que j’avais compris ton pbm au début et c’est pour ça que je t’avais donné la règle iptables pour utiliser le serveur du LAN.

Merci pour ta réponse,

Je vais voir ce que je peux faire car je maitrise pas trop non plus les DNS …

Mais bon, faut bien apprendre !

En tout cas merci encore Fran.b !