Problème de partage de connexion et de routage

Bonjour

Voilà mon problème: je tente de monter un routeur sous debian.
Je suis en Lenny, installation de base sans x.org.

J’ai un petit pc avec deux cartes ethernet eth0 et eth1.
Eth0 est relié directement à l’internet via la freebox, eth1 a pour adresse 192.168.1.1.
Eth1 est connecté via un switch à d’autres ordinateurs et leur file une adresse ip via dhcp3-client.
J’essaie de faire en sorte qu’il y ait un partage de la connexion entre les ordinateurs.
J’ai pour l’instant suivi la doc d’Alexis de Lattre http://formation-debian.via.ecp.fr/firewall.html pour les regles de nat.
Je peux me connecter à cet ordinateur via ssh: il n’y a pas de probleme.
J’arrive à me connecter à l’internet sur l’ordi servant de routeur, mais évidemment, à partir d’un ordinateur qui y est relié, c’est impossible.
J’ai tenté le ping google.fr : il ne marche pas. Le ping 8.8.8.8 , lui marche.

Configuration des cartes réseaux:

[code]eth0 Link encap:Ethernet HWaddr 70:71:bc:43:dc:3c
inet adr:192.168.0.14 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::7271:bcff:fe43:dc3c/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:80 errors:0 dropped:0 overruns:0 frame:0
TX packets:173 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:15251 (14.8 KiB) TX bytes:11285 (11.0 KiB)
Interruption:219 Adresse de base:0xc000

eth1 Link encap:Ethernet HWaddr 00:27:19:b0:d1:4f
inet adr:192.168.1.1 Bcast:192.168.1.255 Masque:255.255.255.0
adr inet6: fe80::227:19ff:feb0:d14f/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:528 errors:0 dropped:0 overruns:0 frame:0
TX packets:347 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:49649 (48.4 KiB) TX bytes:41726 (40.7 KiB)
Interruption:21 Adresse de base:0xe000

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)
[/code]

La sortie de route -n me donne:

[quote]Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
[/quote]

La configuration stockées dans dhcpd.conf vaut:

[code]# La ligne qui suit est nécessaire. Elle est en rapport avec

la mise à jour dynamique du DNS, que nous n’utiliserons pas

pour l’instant.

ddns-update-style none;

Ce serveur fait autorité sur le réseau

authoritative;

Les options globales

option time-servers 192.168.0.252;
option domain-name “bidibulle.org”;
max-lease-time 3600;
default-lease-time 3600;
option domain-name-servers IP.DE.Ma.FreeBox;
#option subnet-mask 255.255.255.0;
option routers 192.168.1.1;

le réseau 192.168.1.0/24, avec la réserve d’adresses dynamiques

subnet 192.168.1.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.1.64 192.168.1.127;
}[/code]

La configuration des interfaces vaut:

[quote]# This file describes the network interfaces available on your system

and how to activate them. For more information, see interfaces(5).

The loopback network interface

auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0

auto eth0
iface eth0 inet dhcp
#address 192.162.0.3
#netmask 255.255.255.0
pre-up iptables-restore < /etc/iptables.up.rules
[/quote]

Voilà les iptables:[code]

/etc/network/iptables.up.rules

Script qui démarre les règles de filtrage IPv4

Formation Debian GNU/Linux par Alexis de Lattre

http://formation-debian.via.ecp.fr/

iptables-restore(8) remet implicitement à zéro toutes les règles

Les instructions qui suivent concernent la table « filter »,

c’est à dire… le filtrage.

*filter

#########################

Politiques par défaut

#########################

Les politiques par défaut déterminent le devenir d’un paquet auquel

aucune règle spécifique ne s’applique.

Les connexions entrantes sont bloquées par défaut

-P INPUT DROP

Les connexions destinées à être routées sont acceptées par défaut

-P FORWARD ACCEPT

Les connexions sortantes sont acceptées par défaut

-P OUTPUT ACCEPT

######################

Règles de filtrage

######################

Nous précisons ici des règles spécifiques pour les paquets vérifiant

certaines conditions.

Pas de filtrage sur l’interface de “loopback”

-A INPUT -i lo -j ACCEPT

Accepter le protocole ICMP (notamment le ping)

-A INPUT -p icmp -j ACCEPT

Accepter le protocole IGMP (pour le multicast)

-A INPUT -p igmp -j ACCEPT

Accepter les packets entrants relatifs à des connexions déjà

établies : cela va plus vite que de devoir réexaminer toutes

les règles pour chaque paquet.

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Décommentez la ligne suivante pour que le serveur SSH éventuel

soit joignable de l’extérieur

-A INPUT -p tcp --dport ssh -j ACCEPT

Décommentez les lignes suivantes pour que le serveur de courrier

éventuel soit joignable de l’extérieur.

#-A INPUT -p tcp --dports smtp -j ACCEPT

Si vous avez activé les services SMTPS et soumission de messages…

#-A INPUT -p tcp --dports smtps -j ACCEPT
#-A INPUT -p tcp --dports submission -j ACCEPT

Décommentez les deux lignes suivantes pour que le serveur de noms

éventuel soit joignable de l’extérieur.

#-A INPUT -p tcp --dport domain -j ACCEPT
#-A INPUT -p udp --dport domain -j ACCEPT

Décommentez la ligne suivante pour que le serveur Web éventuel

soit joignable de l’extérieur.

#-A INPUT -p tcp --dport http -j ACCEPT

Si vous avez activé le HTTPS…

#-A INPUT -p tcp --dport https -j ACCEPT

Décommentez les deux lignes suivantes pour que le serveur d’impression

éventuel soit joignable de l’extérieur.

#-A INPUT -p tcp --dport ipp -j ACCEPT
#-A INPUT -p udp --dport ipp -j ACCEPT

Décommentez les deux lignes suivantes pour que le serveur Samba

éventuel soit joignable de l’extérieur.

#-A INPUT -p tcp --dport netbios-ssn -j ACCEPT
#-A INPUT -p udp --dport netbios-ssn -j ACCEPT

Décommentez la ligne suivante pour que des clients puissent se connecter

à l’ordinateur par XDMCP.

#-A INPUT -p udp --dport xdmcp -j ACCEPT

Décommentez la ligne suivante pour que l’ordinateur puisse se connecter

par XDMCP à une machine distante).

#-A INPUT -p tcp --dport x11-1 -j ACCEPT

Décommentez la ligne suivante pour pouvoir recevoir des flux VideoLAN.

#-A INPUT -p udp --dport 1234 -j ACCEPT

Décommentez la ligne suivante pour pouvoir recevoir des annonces SAP

(ce sont des annonces de session multicast).

#-A INPUT -p udp -d 224.2.127.254 --dport 9875 -j ACCEPT

Décommentez les 3 lignes suivantes pour pouvoir utiliser GnomeMeeting

#-A INPUT -p tcp --dport 30000:33000 -j ACCEPT
#-A INPUT -p tcp --dport 1720 -j ACCEPT
#-A INPUT -p udp --dport 5000:5006 -j ACCEPT

Décommentez la ligne suivante pour pouvoir partager de la musique par

DAAP.

#-A INPUT -p tcp --dport daap -j ACCEPT

Décommentez la ligne suivante pour que votre ordinateur

annonce son nom et ses services par mDNS sur le réseau local (cela

permet de le contacter sous « son nom d’hôte ».local).

-A INPUT -p udp -d 224.0.0.251 --dport mdns -j ACCEPT

La règle par défaut pour la chaine INPUT devient REJECT (contrairement

à DROP qui ignore les paquets, avec REJECT, l’expéditeur est averti

du refus). Il n’est pas possible de mettre REJECT comme politique par

défaut. Au passage, on note les paquets qui vont être jetés, ça peut

toujours servir.

-A INPUT -j LOG --log-prefix "paquet IPv4 inattendu "
-A INPUT -j REJECT

COMMIT

Les instructions qui suivent concernent la table « nat ».

*nat

########################

Partage de connexion

########################

Décommentez la ligne suivante pour que le système fasse office de

routeur NAT et remplacez « eth0 » par le nom de l’interface

connectée à Internet.

-A POSTROUTING -o eth0 -j MASQUERADE

########################

Redirections de port

########################

Décommentez la ligne suivante pour que les requêtes TCP reçues sur

le port 80 de l’interface eth0 soient redirigées à la machine dont

l’adresse IPv4 est 192.168.0.3 sur son port 80 (la réponse à la

requête sera transférée au client).

#-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80

COMMIT

####################

Problème de MTU…

####################

Les instructions qui suivent concernent la table « mangle », c’est

à dire l’altération des paquets

*mangle

Si la connexion que vous partagez est une connexion ADSL directement gérée

par votre ordinateur, vous serez probablement confronté au fameux problème du

MTU. En résumé, le problème vient du fait que le MTU de la liaison entre

votre fournisseur d’accès et le serveur NAT est un petit peu inférieur au MTU

de la liaison Ethernet qui relie le serveur NAT aux machines qui sont

derrière le NAT. Pour résoudre ce problème, décommentez la ligne suivante et

remplacez « eth0 » par le nom de l’interface connectée à Internet.

#-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o eth0 --clamp-mss-to-pmtu

COMMIT
[/code]

J’ai gardé la config de de Lattre.

J’ai par ailleurs aussi fait:

Je me réponds à moi même

En fait, la solution était tout simple: le routage est correct, et le firewall aussi.

La seule chose qui ne marchait pas était tout simplement la résolution des noms de domaines.

Pour cela en fait, il fallait juste mettre à la place de :

ceci:

Et là tout marche!

En effet la Freebox ne fait pas relais DNS, contrairement à la majorité des autres box ADSL.

Autrement tu peux installer sur le routeur un serveur récursif/relais/proxy DNS comme dnsmasq (qui peut aussi faire serveur DHCP et à ce titre remplacer dhcpd), bind9… sans oublier de décommenter les deux règles iptables correspondantes. Les adresses des serveurs DNS récursifs de Free changent de temps en temps, les avoir mises en dur peut alors perturber la résolution DNS.

PascalHambourg.

Je te remercie pour ton conseil: je vais d’abord essayer de faire marcher mon bousin, puis je vais me pencher sur dnsmasq dans un premier temps.

Bind9 me parait un peu trop compliqué pour l’instant pour ce que je fais. Mais il y a des chances que je sois aussi obligé de venir poser des questions à son propos d’ici quelques temps…

BIND est un peu lourd, certes, mais sa configuration par défaut fait juste ce dont tu as besoin : serveur cache récursif. Les seules options à configurer seront éventuellement les forwarders (mais c’est optionnel chez Free) et les plages d’adresses autorisées à faire des requêtes (allow-query).