Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/12/2012, à 11:36

Tuxophile

[Résolu]Réseau local et résolution de noms de domaine

Bonjour à tous,
Je rencontre un petit problème avec ma configuration réseau.
J'ai un ordinateur (sous Ubuntu server) qui fait routeur, serveur DHCP, firewall.... Il fait passerelle entre Internet et le réseau local

fichier /etc/resolv.conf de la passerelle

nameserver 212.27.40.241
nameserver 212.27.40.240

Le ping sur les noms de domaine répond bien depuis la passerelle

J'ai configuré le serveur DHCP pour qu'il attribue l'adresse IP de la passerelle en serveur DNS des clients
Extrait de /etc/dhcp/dhcpd.conf

option domain-name-servers 192.168.0.1

J'ai un client sous MacOs sur lequel je peux faire un ping vers la passerelle (192.168.0.1) ou vers internet (8.8.8.8 par exemple) => Le routage IP fonctionne bien.
Par contre impossible de faire un ping sur un nom (www.google.fr par exemple).
Si je consulte le /etc/resolv.conf du client, j'ai bien l'adresse de la passerelle (192.168.0.1) => Le DHCP fonctionne bien

Dès lors je ne comprends pas où est l'erreur... Il y a peut être un pb de firewall
Qu'est ce que vous en pensez?

Dernière modification par Tuxophile (Le 30/12/2012, à 02:02)

Hors ligne

#2 Le 29/12/2012, à 15:09

pires57

Re : [Résolu]Réseau local et résolution de noms de domaine

bin c'est simple, pour le savoir, il suffi de tester. Tu passes le firewall en "disable" et tu rentente le ping smile


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#3 Le 29/12/2012, à 17:34

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

Bonjour Pires57,
En fait j'ai récupérer un script que j'ai modifié pour gérer les E/S du réseau.
Voici mon script firewall:

#!/bin/bash
Passerelle=192.168.0.1 #Adresse locale de la passerelle
Passerelle_ext=XX.XX.XX.XX #Adresse externe de la passerelle (IP fixe)
LOCALNETWORK=192.168.0.0/24
FIREWALL=$Passerelle
WEB=$Passerelle #mettre "" si aucun serveur web
PORT=80 #le port du serveur web

FTP=192.168.0.2 
FTPPORT=21

INTERNE="bridge_local" #interface ves le reseau a proteger
EXTERNE="eth_adsl" #interface vers internet (ADSL)
IPTABLES=/sbin/iptables

mode=$1
case "$mode" in 
	'start')
		echo "******* LOCALNETWORK FIREWALL ********"

		#On efface toutes les regles existantes 
		for table in filter nat mangle;
			do
	  		 $IPTABLES -t $table -F
	  		 $IPTABLES -t $table -X
			done

		#On accepte tout ce qui vient du reseau interne
		$IPTABLES -A INPUT -s $LOCALNETWORK -j ACCEPT

		#On accepte toutes les reponses associees au trafic sortant
		$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
		$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT

		#On accepte la demande de connexion ssh
		$IPTABLES -A INPUT -p tcp --destination-port ssh -j ACCEPT

		#On accepte la demande de connexion https
		$IPTABLES -A INPUT -p tcp --destination-port https -j ACCEPT
		
		#On accepte la connexion sur le port 953 pour permettre a rndc (utilitaire inclus dans Bind) d'administrer le demon named
		$IPTABLES -A INPUT -p tcp --destination-port 953 -j ACCEPT
		#On accepte la connexion sur le port 53 en TCP et UDP (pour Bind qui ecoute sur ces ports)
		$IPTABLES -A INPUT -p tcp --destination-port 53 -j ACCEPT
		$IPTABLES -A INPUT -p udp --destination-port 53 -j ACCEPT

		#On accepte le port 5080 en entree pour le serveur RED 5
		$IPTABLES -A INPUT -p tcp --destination-port 5080 -j ACCEPT

		#si un serveur web est defini, on s'occupe de lui
		if [ -n "$WEB" ]
		then 
			echo ""
			echo "Section WEB :"
			#on accepte les requetes HTTP entrantes
			$IPTABLES -t filter -A INPUT -p tcp --source-port www -j ACCEPT
			$IPTABLES -t filter -A INPUT -p tcp --destination-port www -j ACCEPT
			echo " Port WWW $PORT ouvert: [OK]"
			if [ $FIREWALL != $WEB ] #si le serveur web n'est pas sur la passerelle
			then
				#On pense a activer le port forwarding du firewall vers notre serveur
				$IPTABLES -t nat -A PREROUTING -p tcp -d $FIREWALL --dport http -j DNAT --to $WEB:$PORT
				echo " Forwarding WWW sur $WEB port $PORT: [OK]"
			fi
		fi

		#le FTP
		if [ -n "$FTP:" ]
		then
			echo ""
			echo "Section FTP :"
			#On accepte les requetes ftp entrantes
			$IPTABLES -t filter -A INPUT -p tcp --source-port ftp -j ACCEPT
			$IPTABLES -t filter -A INPUT -p tcp --destination-port ftp -j ACCEPT
			echo " Port FTP $FTPPORT ouvert: [OK]"
			echo "interface web ouverte"
			if [ $FIREWALL != $FTP ] #si le serveur n'est pas une passerelle
			then 
				#On forward
				$IPTABLES -t nat -A PREROUTING -p tcp -d $Passerelle_ext --dport ftp -j DNAT --to $FTP:$FTPPORT
				echo " Forwarding FTP sur $FTP port $FTPPORT: [OK]"
				#Forward des ports pour le mode passif du FTP
				$IPTABLES -t nat -A PREROUTING -p tcp -d $Passerelle_ext --dport 55536:55663 -j DNAT --to $FTP
				echo " FTP mode passif active- Forwarding des ports 55536:55663: [OK]"
			fi
		fi

		#On refuse et on entre dans le journal tout ce qui est entrant et qui n'est pas speifie
		$IPTABLES -N logdeny
		$IPTABLES -t filter -A logdeny -j LOG --log-prefix "firewall:"
		$IPTABLES -t filter -A logdeny -j DROP
		#$IPTABLES -t filter -A INPUT -i !lo -m state --state NEW,INVALID -j logdeny
		#On active la conversion d'adresse reseau (IP forwarding)
		if [ -n "$INTERNE" ]
		then
			echo 1 > /proc/sys/net/ipv4/ip_forward
			#On accepte les paquets entre internet et le reseau local si:
			# - Connexion existante
			#Initatiation d'une nouvelle connexion par un membre du reseau local	
			$IPTABLES -A FORWARD -i $EXTERNE -o $INTERNE -m state --state ESTABLISHED,RELATED -j ACCEPT
			$IPTABLES -A FORWARD -i $INTERNE -o $EXTERNE -j ACCEPT
			if [ $EXTERNE = eth_adsl ]
			then 
				#On convertit toute adresse IP sortante en l'IP externe du firewall (ici dynamique)
				$IPTABLES -t nat -A POSTROUTING -s $LOCALNETWORK -o $EXTERNE -j MASQUERADE
			else 
				#On convertit toute adresse IP sortante en l'IP externe du firewall (ici fixe)
				$IPTABLES -t nat -A POSTROUTING -o $EXTERNE -j SNAT --to $FIREWALL
			fi
		fi

		echo ""
		echo "Firewall initialise [OK]"
	;;
	'stop')
		#echo 0 > /proc/sys/net/ipv4/ip_forward
		#On efface toutes les regles existantes
		for table in filter nat mangle; do 
			$IPTABLES -t $table -F
			$IPTABLES -t $table -X
		done
		echo ""
		echo "Firewall desactive"
	;;
	*)
		echo "usage $0 start|stop"
	;;
esac

J'ai vraiment du mal à trouver le pb...

Dernière modification par Tuxophile (Le 29/12/2012, à 17:38)

Hors ligne

#4 Le 29/12/2012, à 20:50

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

Internet<>-----(eth_adsl) Passerelle (eth_local)------<>Clients

Qu'est ce qui peut expliquer selon vous que la résolution de nom fonctionne pour la passerelle et pas pour les clients?
Je bloque un peu...

Hors ligne

#5 Le 29/12/2012, à 23:16

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

Tu as installé un serveur ou relais DNS (bind9, unbound, dnsmasq...) sur la passerelle ?
Sinon ton serveur DHCP doit annoncer comme DNS les adresses des serveurs DNS du FAI (qui figurent dans resolv.conf), pas celle de la passerelle.

Edit : ton jeu de règles iptables est mauvais. Même les commentaires sont erronés.
(Mais il ne bloque pas les requêtes DNS.)

Dernière modification par PascalHambourg (Le 29/12/2012, à 23:28)

Hors ligne

#6 Le 30/12/2012, à 00:21

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

Merci bcp Pascal pour ton message,
Je dois encore améliorer bcp de chose sur ce réseau wink.
Pour ce qui est du DNS je suis étonné par ta réponse. Je pensais diffuser via le DHCP l'adresse de la passerelle (qui fera également serveur DNS) .
Dans mon esprit, tous les clients devaient utiliser le resolv.conf du serveur DNS pour la résolution

resolv.conf de la passerelle

nameserver 127.0.0.1 
nameserver 212.27.40.241
nameserver 212.27.40.240

(127.0.0.1 c'était pour la résolution sur le domaine créé à l'aide de BIND + les 2 adresses IP du FAI)

Je croyais que c'était comme ça que ça fonctionnait un serveur DNS mais bon je ne maitrise pas encore très bien....
Pour le Firewall je suis intéressé si tu as des commentaires.

Dernière modification par Tuxophile (Le 30/12/2012, à 00:23)

Hors ligne

#7 Le 30/12/2012, à 00:43

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

Dans mon esprit, tous les clients devaient utiliser le resolv.conf du serveur DNS pour la résolution resolv.conf de la passerelle

Non, ça ne marche pas comme ça. resolv.conf est un fichier *local*, utilisé par les programmes *locaux* qui tournent sur la machine pour résoudre les noms.

Cependant des indices me laissent penser qu'il y a un serveur DNS (bind) sur la passerelle. (A noter que bind n'utilise pas resolv.conf, il a son propre mécanisme de résolution.)
Est-ce bien le cas ? Si oui, est-il opérationnel et peut-il répondre aux requêtes des machines du LAN ?
Sur la passerelle :

sudo netstat -tulnp | grep :53
dig ubuntu-fr.org @127.0.0.1
dig ubuntu-fr.org @192.168.0.1

Si tout est ok, sur une autre machine :

dig ubuntu-fr.org @192.168.0.1

Pour iptables on verra plus tard.

Dernière modification par PascalHambourg (Le 30/12/2012, à 00:43)

Hors ligne

#8 Le 30/12/2012, à 00:57

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

Oui Bind est installé mais je ne l'ai pas encore configuré.
Pour résumé, je dois donc diffusé via DHCP l'ensemble des adresses que j'avais mis dans le resolv.conf de la passerelle...
C'est à dire:
192.168.0.1 pour les machines LAN
+ les @ IP du FAI pour internet

option domain-name-servers 192.168.0.1, 212.27.40.241, 212.27.40.240; 

C'est bien ça?
Je vais regarder les docs de plus près ... Car j'ai besoin de comprendre un peu mieux le mécanisme de résolution.

En tout cas merci pour ton aide

Ps: Je vais également étudié de près le firewall même si à première vue le script me semblait pas trop mauvais

Dernière modification par Tuxophile (Le 30/12/2012, à 01:13)

Hors ligne

#9 Le 30/12/2012, à 01:05

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

Non, ce n'est pas ça (sans compter l'erreur de syntaxe : virgule comme séparateur, point-virgule à la fin).
Si le serveur DNS de ta passerelle n'est pas opérationnel, ne mets pas son adresse.
S'il doit servir des noms de domaine locaux que les DNS du FAI ne connaissent pas, alors ne mets que l'adresse de la passerelle, pas celles des DNS du FAI. Tous les DNS définis doivent être équivalents, car n'importe lequel peut être interrogé. S'il n'a pas la réponse il répondra "n'existe pas" et non "demande à un autre DNS".

Dernière modification par PascalHambourg (Le 30/12/2012, à 01:07)

Hors ligne

#10 Le 30/12/2012, à 01:10

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

PascalHambourg a écrit :

S'il n'a pas la réponse il répondra "n'existe pas" et non "demande à un autre DNS".

Es tu certain de cela??? Je crois bien que c'est le principe de fonctionnement de la liste de serveur dans resolv.conf.
Il teste les serveurs de la 1ère à la dernière ligne et il s'arrête dès qu'il peut répondre.

C'est d'ailleurs pour ça que l'ordre des serveurs a une importance... Enfin il me semble.

Dernière modification par Tuxophile (Le 30/12/2012, à 01:11)

Hors ligne

#11 Le 30/12/2012, à 01:17

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

J'ai trouvé ça sur le man du resolv.conf:

.... S'il y a des serveurs multiples, la bibliothèque de résolution les interrogera dans l'ordre indiqué....

En toute logique si j'ai bien compris le principe de résolution
je dois pouvoir mettre des serveurs de différents niveaux :
la passerelle pour la résolution des noms en local
et les DNS du FAI pour le reste.

Par contre c'est peut être mieux de commencer par les DNS du FAI pour des raisons de performances.


Bon je suis peut être complétement à coté de la plaque, mais si c'est le cas peux tu me fournir un lien vers une doc qui explique clairement le mécanisme...
Je ne demande qu'à apprendre smile

Dernière modification par Tuxophile (Le 30/12/2012, à 01:22)

Hors ligne

#12 Le 30/12/2012, à 01:19

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

Oui, je suis certain.
Il faut bien différencier "le serveur ne répond pas" et "le serveur répond que ça n'existe pas".
Dans le premier cas, le client interroge un autre serveur. Pas dans le second puisqu'il a sa réponse.
Quant à l'ordre, son importance est toute relative : l'option "rotate" dans resolv.conf permet d'interroger un serveur différent à chaque fois, ce qui effectue une sorte d'équilibrage de charge.

Hors ligne

#13 Le 30/12/2012, à 01:26

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

PascalHambourg a écrit :

Il faut bien différencier "le serveur ne répond pas" et "le serveur répond que ça n'existe pas".
Dans le premier cas, le client interroge un autre serveur. Pas dans le second puisqu'il a sa réponse.

Ah oui je vois où tu veux en venir... Je n'avais pas compris ce principe là.

S'il doit servir des noms de domaine locaux que les DNS du FAI ne connaissent pas, alors ne mets que l'adresse de la passerelle

Du coup comment on fait pour avoir à la fois
+ la résolution des noms pour les machines locales (IP passerelle)
+ la résolution des noms sur Internet (Serveur FAI)

Dans le mécanisme que tu décris j'ai l'impression que c'est soit l'un soit l'autre, non?

Dernière modification par Tuxophile (Le 30/12/2012, à 01:32)

Hors ligne

#14 Le 30/12/2012, à 01:41

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

C'est la différence subtile entre une erreur et une "réponse négative" qui n'est pas une erreur.

Exemple d'erreur :

$ dig aaaa flipr.cedexis-radar.net

; <<>> DiG 9.7.3 <<>> aaaa flipr.cedexis-radar.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 48391
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;flipr.cedexis-radar.net.       IN      AAAA

;; Query time: 2551 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 30 00:34:44 2012
;; MSG SIZE  rcvd: 41

Noter le "status: SERVFAIL" (server failure).

Exemple de réponse négative :

$ dig existepas.ubuntu-fr.org

; <<>> DiG 9.7.3 <<>> existepas.ubuntu-fr.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 9122
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;existepas.ubuntu-fr.org.       IN      A

;; AUTHORITY SECTION:
ubuntu-fr.org.          10800   IN      SOA     a.dns.gandi.net. hostmaster.gandi.net. 1355752791 10800 3600 604800 10800

;; Query time: 85 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 30 00:37:04 2012
;; MSG SIZE  rcvd: 103

Noter le "status: NXDOMAIN" (non existant domain) et "AUTHORITY: 1", l'information vient des serveurs faisant autorité pour la zone ubuntu-fr.org.

Hors ligne

#15 Le 30/12/2012, à 01:48

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

Du coup comment on fait pour avoir à la fois
+ la résolution des noms pour les machines locales (IP passerelle)
+ la résolution des noms sur Internet (Serveur FAI)

Les clients interrogent le serveur bind sur la passerelle, qui est configuré pour fonctionner d'une part en autoritaire pour servir les zones locales et d'autre part en cache récursif (options recursion, allow-recursion, allow-query-cache) pour résoudre les domaines non locaux soit par recherche récursive directe soit en interrogeant les DNS du FAI (options forward, forwarders).

Hors ligne

#16 Le 30/12/2012, à 01:59

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

Les clients interrogent le serveur bind sur la passerelle, qui est configuré pour fonctionner d'une part en autoritaire pour servir les zones locales et d'autre part en cache récursif (options recursion, allow-recursion, allow-query-cache) pour résoudre les domaines non locaux soit par recherche récursive directe soit en interrogeant les DNS du FAI (options forward, forwarders).

Ah! voila quelque chose de très intéressant! Je vais utiliser l' IP des FAI dans un premier temps mais mon but reste la configuration d'un vrai serveur DNS avec BIND. Je vais donc étudier en détail les conseils que tu donnes.
MERCI de ta patience! Tu as augmenté ton Karma ce soir en ramenant au bercail une brebis égarée smile

Hors ligne

#17 Le 30/12/2012, à 02:09

PascalHambourg

Re : [Résolu]Réseau local et résolution de noms de domaine

Ah bon, tu as décidé de passer sous Debian ?
Plus sérieusement : bon courage, le DNS n'est pas un sujet facile.

[Edit] Ah, j'oubliais, il faut encore que j'écrive mes commentaires sur ton jeu de règles iptables. Mais y a du boulot et il est un peu tard, je commence à fatiguer.

Dernière modification par PascalHambourg (Le 30/12/2012, à 02:25)

Hors ligne

#18 Le 30/12/2012, à 13:39

Tuxophile

Re : [Résolu]Réseau local et résolution de noms de domaine

Pascal a écrit :

Ah, j'oubliais, il faut encore que j'écrive mes commentaires sur ton jeu de règles iptables. Mais y a du boulot et il est un peu tard, je commence à fatiguer.

Je vais faire un nouveau post sur le sujet, tu pourras t'en donner à coeur joie smile

Hors ligne