iptables et dns...

iptables et dns... - Linux et OS Alternatifs

Marsh Posté le 26-08-2005 à 13:25:58    

Bonjour,
 
Je suis loin d'être un pro en réseau mais j'aimerais bien que mon pc portable puissent partager une connection internet pour d'autres pc.
J'ai donc fait ceci:
Chain FORWARD (policy ACCEPT)
target     prot opt source                       destination          
ACCEPT     tcp  --  vinc                         7.147-200-80.adsl.skynet.be tcp spt:www  
ACCEPT     tcp  --  7.147-200-80.adsl.skynet.be  vinc                        tcp spt:www  
 
Est-ce juste ?
 
Maintenant il faudrait autoriser le passage des DNS, comment faire ?
 
Merci...

Reply

Marsh Posté le 26-08-2005 à 13:25:58   

Reply

Marsh Posté le 26-08-2005 à 13:47:09    

vu la politique par défaut (ACCEPT) tout est autoriser
 
Pour le DNS c'est UDP en port 53


Message édité par l0ky le 26-08-2005 à 13:47:47
Reply

Marsh Posté le 26-08-2005 à 14:32:59    

Voila ce que j'ai:
Chain FORWARD (policy ACCEPT) //Je m'occuperai de ça après...
target     prot opt source               destination          
ACCEPT     tcp  --  vinc                7.147-200-80.adsl.skynet.be tcp spt:www  
ACCEPT     tcp  --  7.147-200-80.adsl.skynet.be  vinc                tcp spt:www  
ACCEPT     udp  --  7.147-200-80.adsl.skynet.be  vinc                udp spt:domain  
ACCEPT     udp  --  vinc                7.147-200-80.adsl.skynet.be udp spt:domain  
 
Donc ceci se trouve sur mon portable qui possède Internet.
 
Sur mon pc de bureau, j'ai mis dans les paramètres de ma carte réseau: passerelle: 192.168.0.1 (donc l'ip du portable) et j'ai mis les 2 dns de mon FAI.
Depuis mon pc de bureau j'arrive à pinger l'adresse Internet (80.200.147.7) mais je n'arrive pas à avoir internet sur Firefox ou IE !
 
Une idée ?

Reply

Marsh Posté le 26-08-2005 à 14:33:33    

l0ky a écrit :

vu la politique par défaut (ACCEPT) tout est autoriser
 
Pour le DNS c'est UDP en port 53


 
ça utilise pas également le TCP sur le port 53 ?

Reply

Marsh Posté le 26-08-2005 à 14:37:38    

J'ai mis aussi le tcp mais ça ne change rien...
 
Qui peut confirmer si le dns utilise le protocol tcp ?

Reply

Marsh Posté le 26-08-2005 à 14:40:30    

non
Pour lister tes règles fait  
iptables -L FORWARD -v -n
et mets dans un bloc fixed pour que ce soit lisible
Ensuite je suis pas sur que tu es bien saisit comment faire des regle iptables
 
tu met en destination une seule adresse (celle de 7.147-200-80.adsl.skynet.be et le port source en 80) c'est pas ca !
la tu n'autorisera que les paquets provenant de la machine ayant comme nom vinc à destination 7.147-200-80.adsl.skynet.be et ayant comme port source  le port 80
 
ca marchera jamais si tu mets ensuite une politique à DROP :/
 
 
Ensuite a tu activer le routage ?
 
sysctl -w net.ipv4.ip_forward=1
 
Regarde ici:
http://christian.caleca.free.fr/netfilter/


Message édité par l0ky le 26-08-2005 à 14:42:02
Reply

Marsh Posté le 26-08-2005 à 15:08:59    

Quand je vais sur google, le paquet il est à quel destination ? A destination de google ou de mon FAI (80.200.147.7) ?
 
Est-ce mieux comme ceci:

Chain FORWARD (policy ACCEPT 14 packets, 826 bytes)
 pkts bytes target     prot opt in     out     source               destination          
    0     0 ACCEPT     udp  --  *      *       80.200.147.7         192.168.0.1         udp spt:53  
    0     0 ACCEPT     udp  --  *      *       192.168.0.1          80.200.147.7        udp spt:53  
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp spt:80  
    0     0 ACCEPT     tcp  --  *      *       192.168.0.1          0.0.0.0/0           tcp spt:80


 
0.0.0.0/0 ==> je supose que ça veut bien dire que ça accepte toutes les ip ?

Reply

Marsh Posté le 26-08-2005 à 15:25:13    

vincent0 a écrit :

Quand je vais sur google, le paquet il est à quel destination ? A destination de google ou de mon FAI (80.200.147.7) ?


Bah à destination de google [:pingouino]
Sauf si tu utilises un proxy de ton FAI (ce que je penses pas)

vincent0 a écrit :


Est-ce mieux comme ceci:

Chain FORWARD (policy ACCEPT 14 packets, 826 bytes)
 pkts bytes target     prot opt in     out     source               destination          
    0     0 ACCEPT     udp  --  *      *       80.200.147.7         192.168.0.1         udp spt:53  
    0     0 ACCEPT     udp  --  *      *       192.168.0.1          80.200.147.7        udp spt:53  
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp spt:80    
    0     0 ACCEPT     tcp  --  *      *       192.168.0.1          0.0.0.0/0           tcp spt:80


 
0.0.0.0/0 ==> je supose que ça veut bien dire que ça accepte toutes les ip ?


Oui c'est bien toutes les adresses
Tu te plantes pour les ports entre source et destination !


Message édité par l0ky le 26-08-2005 à 15:25:46
Reply

Marsh Posté le 26-08-2005 à 15:26:34    

Quand tu fais une requetes sur un serveur Web le port destination est 80
Quand le serveur web te répond c'est le port source qui est 80 !
 

Reply

Marsh Posté le 26-08-2005 à 15:35:30    

l0ky a écrit :

Quand tu fais une requetes sur un serveur Web le port destination est 80
Quand le serveur web te répond c'est le port source qui est 80 !


sauf que certains serveurs redirigent les ports et dans ce cas...
 
 
la meilleure solution pour une personne qui n'est pas pro mais qui souhaite savoir est "rules builder"... Il y a shorewall, fwbuilder, etc. Personnelement, j'ai personnalisé les scripts shorewall pour un réseau en trois zones (secure, dmz, unsecure) et ça marche bien...

Reply

Marsh Posté le 26-08-2005 à 15:35:30   

Reply

Marsh Posté le 26-08-2005 à 15:39:32    

Voila ce que j'ai mais ça ne va toujours pas :( :

Chain FORWARD (policy ACCEPT 32 packets, 1923 bytes)
 pkts bytes target     prot opt in     out     source               destination          
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp spt:80  
    0     0 ACCEPT     tcp  --  *      *       192.168.0.1          0.0.0.0/0           tcp dpt:80  
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            192.168.0.1         udp spt:53
    0     0 ACCEPT     udp  --  *      *       192.168.0.1          0.0.0.0/0           udp dpt:53


 

Reply

Marsh Posté le 26-08-2005 à 15:40:40    

Deja tu n'as pas répondu a ca

l0ky a écrit :


Ensuite a tu activer le routage ?
 
sysctl -w net.ipv4.ip_forward=1


 
Et il faudrait également rajouter cette règle pour le nat:
iptables -A POSTROUTING -o INTERFACE_INTERNET -j MASQUERADE
 
où INTERFACE_INTERNET correspond au nom de l'interface connectée à ton FAI


Message édité par l0ky le 26-08-2005 à 15:42:23
Reply

Marsh Posté le 26-08-2005 à 15:50:58    

sysctl -w net.ipv4.ip_forward=1 ==> C'est fait :)
 
vinc# iptables -A POSTROUTING -o ppp0 -j MASQUERADE  
iptables: No chain/target/match by that name

Reply

Marsh Posté le 26-08-2005 à 16:24:19    

il manquait "-t nat" et maintenant tout fonctionne, merci...
 
Pour bloquer tout le reste je doit juste mettre le policy à DROP ?

Reply

Marsh Posté le 26-08-2005 à 16:29:32    

a oui exact, j'avais oublié la table :/
sinon oui
mais je te conseilles de lire de la doc sur netfilter/iptables un peu et sur le réseau pour faire un script qui tient la route.
 
Sinon il existe pas mal de script déja tout fait qui sont pas mal

Reply

Marsh Posté le 26-08-2005 à 16:56:07    

Il fallait biensur que ça ne fonctionne pas, lol :(
 
J'ai donc fait ceci: iptables -P FORWARD DROP
Et voila ce que ça donne:
 

vinc# iptables -L -v -n
Chain INPUT (policy ACCEPT 118K packets, 160M bytes)
 pkts bytes target     prot opt in     out     source               destination          
 
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination          
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp spt:80  
    0     0 ACCEPT     tcp  --  *      *       192.168.0.1          0.0.0.0/0           tcp dpt:80  
    0     0 ACCEPT     udp  --  *      *       192.168.0.1          0.0.0.0/0           udp dpt:53  
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            192.168.0.1         udp spt:53  
 
Chain OUTPUT (policy ACCEPT 98441 packets, 7588K bytes)
 pkts bytes target     prot opt in     out     source               destination


 
Le problème, c'est que internet ne va plus mais je sais toujours pinger le 80.200.147.7 !

Reply

Marsh Posté le 26-08-2005 à 21:30:18    

normal là tu accepte le http et le dns (que en udp d'ailleurs hors que c udp+tcp) et en aucun cas le ping.

Reply

Marsh Posté le 26-08-2005 à 21:35:07    

le dns c'est uniquement de l'udp !!

Reply

Marsh Posté le 26-08-2005 à 21:43:32    

tcp        0      0 192.168.1.1:53          0.0.0.0:*               LISTEN     17935/named
 
 
:/

Reply

Marsh Posté le 26-08-2005 à 21:58:47    

désolé mais les requêtes DNS chez moi et dans tous les réseaux que j'ai montés et dont j'ai l'administration se font uniquement en UDP. Les firewalls sont configurés pour n'accepter que l'udp pour le DNS et j'ai jamais eut de probleme.
 
pour moi du DNS en TCP c'est intrinsèquement trop lourd.
 
bind écoute effectivment sur le port tcp 53 mais je ne ai jamais vu de client s'en servir.
tcp est utilisé entre autres pour le transfert de zone et les choses de ce type. Je doute qu'il en ai la réelle utilité
 
[:spamafote]


Message édité par l0ky le 26-08-2005 à 22:05:00
Reply

Marsh Posté le 27-08-2005 à 14:19:01    

J'ai mis le dns en tcp (on sais jamais) mais ça ne va tourjours pas mieux...et je sais pinger mais pas aller sur IE ou Firefox...donc pour moi ça serait un problème de DNS mais je ne voi vraiment pas où est le problème !
 

# iptables -L -v -n
Chain INPUT (policy ACCEPT 89 packets, 12422 bytes)
 pkts bytes target     prot opt in     out     source               destination          
 
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination          
    0     0            tcp  --  *      *       192.168.0.1          0.0.0.0/0           tcp dpt:80  
    0     0            tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp spt:80  
    0     0            udp  --  *      *       192.168.0.1          0.0.0.0/0           udp dpt:53  
    0     0            udp  --  *      *       0.0.0.0/0            192.168.0.1         udp spt:53  
    0     0            tcp  --  *      *       192.168.0.1          0.0.0.0/0           tcp dpt:53  
    0     0            tcp  --  *      *       0.0.0.0/0            192.168.0.1         tcp spt:53  
 
Chain OUTPUT (policy ACCEPT 63 packets, 5617 bytes)
 pkts bytes target     prot opt in     out     source               destination

Reply

Marsh Posté le 27-08-2005 à 14:22:59    

192.168.0.1 c'est l'ip de quoi ? De ta machine dans ton LAN ?
 
et iptables -t nat -L -v -n donne quoi ?

Reply

Marsh Posté le 27-08-2005 à 14:32:22    

# iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 95 packets, 12649 bytes)
 pkts bytes target     prot opt in     out     source               destination          
 
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination          
  109  6502 MASQUERADE  all  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            
 
Chain OUTPUT (policy ACCEPT 107 packets, 6395 bytes)
 pkts bytes target     prot opt in     out     source               destination


 
J'ai donc mon pc portable sur linux qui possède l'ip 192.168.0.1 et qui à la connection internet.
J'ai un pc de bureau qui possède l'ip 192.168.0.2 et j'aimerais bien qu'il dispose d'internet...
 

Reply

Marsh Posté le 27-08-2005 à 14:50:59    

Voila donc dans tes règles dans forward il faut mettre 192.168.0.2 et pas .1 car c'est lui l'ip source (edit : ou de destination) :)


Message édité par Je@nb le 27-08-2005 à 14:51:14
Reply

Marsh Posté le 27-08-2005 à 15:02:10    

Merci maintenant tout fonctionne...
 
Et pour info, les dns n'utilisent pas le protocol tcp.

Reply

Marsh Posté le 27-08-2005 à 15:14:15    

si pour le transfert de zone [:pingouino]


Message édité par l0ky le 27-08-2005 à 15:14:21
Reply

Marsh Posté le 27-08-2005 à 15:28:42    

J'ai lu en diagonale le sujet donc dsl si j'nefonce des portes ouvertes, mais:
1) tes regles par defaut sont de tout accepté donc il ne sert a rien dans ton cas de rajouter des regles ACCEPT. La seule chose qu'il faut rajouter pour le partage de connexion, c'est le masquerading et l'ip forwarding (ce qui a été fait).
2)je partage souvent ma connexion, et je n'ai jamais eu a m'occuper des dns, ils sont toujours recuperés automatiquement, ou alors, je les mets dans mon /etc/resolv.conf ou dans les proprietés de la connexions sous windows.
3)ton firewall est en bois, là. Il ne sert pour ainsi dire a rien vu que tu acceptes tout. La premiere chose a faire dans un script de firewall, c'est de bloquer TOUT le traffic et d'autoriser ensuite certains flux.
 
En plus du site que t'a donné l0ky, tu as aussi celui qui est très bon:
http://olivieraj.free.fr/fr/linux/ [...] /firewall/


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
Reply

Marsh Posté le 27-08-2005 à 15:32:35    

sebchap -> maintenant le FORWARD est en DROP ! Faut-il aussi que je mettent INPUT et OUTPUT en DROP pour une meilleur sécu ?
 
Quand j'aurai le temps je lirais les 2 sites sur le réseau.

Reply

Marsh Posté le 27-08-2005 à 15:35:02    

Oui ça protègera ta passerrelle internet mais dans ce cas il faut absolument autoriser lo en input/outpout

Reply

Marsh Posté le 27-08-2005 à 18:07:24    

mikala a écrit :

non.
cela peut aussi passer en tcp parfois :)


C'est ce que je dis apres :)
Pour ces besoins l'udp suffit largement

Reply

Marsh Posté le 27-08-2005 à 17:59:46    

l0ky a écrit :

le dns c'est uniquement de l'udp !!


non.
cela peut aussi passer en tcp parfois :)

Reply

Marsh Posté le 27-08-2005 à 18:11:51    

oui ,j'ai répondu un peu trop vite .
et après flemme d'effacer mon post :p

Reply

Marsh Posté le 27-08-2005 à 18:16:39    

mikala a écrit :

oui ,j'ai répondu un peu trop vite .
et après flemme d'effacer mon post :p


ca fait bizarre là :
mon post (où je te répond est situé avant) le tien (sans édit ni rien)
Il est bien ce forum, on répond avant que tu postes  :love:  
 

Reply

Marsh Posté le 18-03-2009 à 09:53:47    

Bonjour j'ai moi aussi un soucis de dns et je ne sais pas d'ou viens le probleme :J'utilise un serveur proxy / firewall a 5 interfaces sous vmware

 

Le proxy me sert d'authentification d'accés sur internet !

 

Mon interface qui est nater et qui me permet de me connecter sur internet est eth4 : 192.168.247.100

 

Mon fichier resolv.conf : nameserver 192.168.247.2 cette adresse correspond à la passerelle ( gateway ip adress) qui est configuré dans vmware : => Vmware\Virtual network settings\Nat

 

Sans iptables j'arrive a me connecter sur internet sans soucis mais dés que j'active mes regles de filtrages j'ai un probléme avec le dns ! Je n'arrive a naviguer que sur les pages du site debian.org que j'ai deja visiter sans les regles de filtrage ( seulement quelques unes ) puis si j'essaye d'aller sur d'autre part aprés 2-3min J'ai ce message qui apparait

 
Code :
  1. The requested URL could not be retrieved
  2. While trying to retrieve the URL: http://www.google.com/
  3. The following error was encountered:
  4.     Unable to determine IP address from host name for www.google.com
  5. The dnsserver returned:
  6.     Timeout
  7. This means that:
  8. The cache was not able to resolve the hostname presented in the URL.
  9. Check if the address is correct.
 

Les modules modprobe ip_conntrack,modprobe iptable_nat,modprobe ip_conntrack_ftp sont chargés

 

Voici une partie de mes regles :

Code :
  1. # Initialisation de la table FILTER
  2. # Par defaut, tout les paquets sont détruits
  3. iptables -t filter -F
  4. iptables -t filter -X
  5. iptables -t filter -P INPUT   DROP
  6. iptables -t filter -P OUTPUT  DROP
  7. iptables -t filter -P FORWARD DROP
  8. # Initialisation de la table NAT
  9. iptables -t nat -F
  10. iptables -t nat -X
  11. iptables -t nat -P PREROUTING  ACCEPT
  12. iptables -t nat -P POSTROUTING ACCEPT
  13. iptables -t nat -P OUTPUT      ACCEPT
  14. # Initialisation de la table MANGLE
  15. iptables -t mangle -F
  16. iptables -t mangle -X
  17. iptables -t mangle -P PREROUTING  ACCEPT
  18. iptables -t mangle -P INPUT       ACCEPT
  19. iptables -t mangle -P OUTPUT      ACCEPT
  20. iptables -t mangle -P FORWARD     ACCEPT
  21. iptables -t mangle -P POSTROUTING ACCEPT
  22. #Aucun filtrage sur la boucle locale
  23. iptables -t filter -A OUTPUT -o lo -j ACCEPT
  24. iptables -t filter -A INPUT  -i lo -j ACCEPT
  25. #Autorise la translation d'adresse ( Accés Lan vers internet )
  26. iptables -t nat -A POSTROUTING -o eth4 -j MASQUERADE
  27. #Autorise les requetes dns
  28. iptables -t filter -A INPUT -i eth4 -p udp --dport 53 -j ACCEPT
  29. iptables -t filter -A OUTPUT -o eth4 -p udp --sport 53 -j ACCEPT
  30. puis j'ai tester avec d'autre regles trouver sur un site mais rien a faire
  31. iptables -A OUTPUT -o eth4 -s 192.168.247.100 -d 0.0.0.0/0 -p TCP --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
  32. iptables -A OUTPUT -o eth4 -s 192.168.247.100 -d 0.0.0.0/0 -p UDP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
  33. iptables -A INPUT -i eth4 -s 0.0.0.0/0 -d 192.168.247.100 -p TCP --dport 53 -m state --state ! INVALID -j ACCEPT
  34. iptables -A INPUT -i eth4 -s 0.0.0.0/0 -d 192.168.247.100 -p UDP --sport 53 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
 

Cela viens t il du fichier resolv.conf ou seulement des regles iptables ?
Merci de votre aide car je galere depuis un moment a trouver l'erreur

 


Message édité par shurik84 le 18-03-2009 à 10:10:07
Reply

Marsh Posté le 18-03-2009 à 09:56:26    

Tu as un serveur DNS sur ton pc qui utilise iptables ?
Parce que les chaines input/output c'est pour le traffic à destination/source de la machine.
Si c'est pas le cas faut regarder du côté de la chaine forward

Reply

Marsh Posté le 18-03-2009 à 10:06:00    

Je@nb a écrit :

Tu as un serveur DNS sur ton pc qui utilise iptables ?
Parce que les chaines input/output c'est pour le traffic à destination/source de la machine.
Si c'est pas le cas faut regarder du côté de la chaine forward

 

Justement pour pouvoir permettre au FW de sortir sur internet c'est pas en INPUT/OUTPUT ?
Non je n'ai aucun serveur dns, je sais c'est peut etre pas logique de vouloir faire sortir le FW sur internet niveau securité mais c'est juste pour un test important histoire d'avoir une regle dns dans le FW!

 

Je vais essayer sur la chaine forward

 



Message édité par shurik84 le 18-03-2009 à 10:08:09
Reply

Marsh Posté le 18-03-2009 à 10:13:03    

shurik84> Sans déconner, je t'ai déjà dit 100 fois de rester sur ton topic qui contient tout l'historique de tes problèmes , la description précise de ce que tu veux faire, etc... au lieu de faire remonter ces vieux topics
 
Donc retournes y, merci !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed