Routage via DHCP

Bonjour,
Je travaille actuellement sur une debian squeeze qui me sert de serveur DHCP.
J’ai cependant un problème, mon serveur est bien fonctionnel et mes clients récupèrent bien une adresse IP. Mais ils ne peuvent pas avoir accès à Internet.
Mon serveur lui par contre oui.
J’utilise deux cartes réseaux, une qui fait la jonction entre mon routeur pro(Orange) et mon serveur. Une autre entre le serveur et les clients. C’est le DHCP qui effectue mon routage entre les deux réseaux.
Est cela qui pose problème ? Ou vous pensez que le problème se situe au niveau des DNS ?

D’avance merci

Salut,
Difficile de répondre, il manque des infos.
Le serveur dhcp fourni bien les infos (passerelle, dns, etc) ?
L’ip_forward est à 1 ?

Que raconte iptables sur FORWARD ?

Je viens de vérifier.
L’ip_forward est à 0 et iptables m’indique que “-P Forward accept”.
Mais je vois pas exactemet à quoi corresponde ces manipulations.
Sinon dans mon fichier dhcpd.conf.
J’ai juste indiquer ma plage d’adresse et ma route vers mon serveur.(“options routers” qui fait office de passerelle, non ?)
Il devrait pas par défaut utiliser les DNS de mon serveur ? (qui eux fonctionne bien)

Non. Le DHCP ne fait pas de routage. Ce sont deux fonctions indépendantes, qui sont juste souvent réunies sur une même machine appelée “routeur” ou “passerelle” parce que c’est plus pratique.

Pour que la machine fasse office de routeur, il faut activer ip_forward comme indiqué. Ensuite, il y a le problème du routeur amont (box), qui doit être capable de gérer ces communications qui proviennent d’un autre sous-réseau IP que le sien. Pour cela, il faut soit lui ajouter une route statique vers ce sous-réseau avec l’adresse du routeur intermédiaire de côté box comme passerelle, soit faire du NAT source (SNAT, MASQUERADE) sur le routeur intermédiaire avec iptables afin de cacher le sous-réseau.

Qui ça, “il” ? Les clients du DHCP ? Comment ils le devineraient, si le serveur DHCP ne leur dit pas ? Il n’y a pas de valeurs par défaut en DHCP, pas de supposition DNS = routeur.

Salut,
Merci PascalHambourg pour les précisions.

Il faut donc au préalable activer ip_forward:

Pour que ça soit persistant au prochain démarrage, modifier le fichier /etc/sysctl.conf et dé-commenter la ligne suivante:

# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1

Ensuite… iptables.
Mais avant j’aimerais bien avoir la sortie des commandes suivantes:

et

Le serveur DHCP ne fait que donner les informations nécessaires au “clients” pour trouver leur chemin (passerelle, DNS, serveur de temps, broadcast, subnet-mask, etc…). Il faut donc convenablement le configurer.
Ensuite il faut que la passerelle accepte les connexions, et route les paquets vers la bonne sortie (c’est une Box ?).

Bref… plus d’infos et la topologie du réseau SVP.

Tout d’abord merci pour vos réponses.

Effectivement à force de recherche j’ai du me résoudre à utiliser iptables(dont je ne connais rien, ça va m’occuper un moment.)

J’ai seulement activé l’ip_forward est il est désormais à l’état 1.

iptables -S :

-P INPUT DROP -P FORWARD DROP -P OUTPUT DROP

Voilà la configuration du fichier interface :

[code]auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.20.20
netmask 255.255.255.0
network 192.168.20.0
broadcast 192.168.20.255
gateway 192.168.20.1

auto eth1
iface eth1 inet static
address 192.168.30.20
netmask 255.255.255.0
network 192.168.30.0
broadcast 192.168.30.255[/code]

Voilà la configuration du dhcpd.conf :

[code]authoritative;
subnet 192.168.30.0 netmask 255.255.255.0{
range 192.168.30.15 192.168.30.19;
option routers 192.168.30.254;
option broadcast-address 192.168.30.255;

host vminternet{
fixed-address 192.168.30.20;
}[/code]

Ici 192.168.20.1 fait référence à l’interface de la box/routeur Orange.

Il faut dire à iptables de rediriger les entrées d’une interface (ex : eth0) vers une autre (ex : eth1). Contrairement à Pascal, je ne suis pas expert en réseau, mais lorsque je dois me dépatouiller avec iptables, c’est ce document que je lis : olivieraj.free.fr/fr/linux/information/firewall/

Salut,
Avec tous ces DROP et sans règles NAT ça ne risque pas de passer…
Je te suggère un script tout fait pour ne pas trop te prendre la tête avec iptables; Ça ne doit pas t’empêcher de chercher à comprendre… :wink:

Parefeu Simplifié

Sois patient le wiki est un peu lent en ce moment… :blush: :12

Tu peux mettre ton réseau en liste blanche (si tu as confiance dans ton LAN)

# IP en liste blanche LISTEBLANCHE="192.168.30.0/24"

Il faut activer le NAT (en gros c’est ce qui permet aux paquets traverser les interfaces réseau et d’aller vers Internet)

[code]# Pour une machine faisant office de routeur avec NAT,

changer la valeur de la variable ISROUTERNAT à 1.

ISROUTERNAT=true[/code]

Et bien sur de compléter les interfaces:

[code]# ethx correspond à l’interface du LAN

ethy correspond à l’interface reliée à la truc-box

ethx=“eth1”
ethy=“eth0”[/code]

Pour le DHCP:
Il faut fournir les DNS aux “clients”:

option domain-name-servers dns1 , dns2 , dns3;

Essaye déjà avec

Ça suppprime ton filtrage (mis par défaut à DROP chez toi).

Ensuite:

1)option routers 192.168.30.254;

Dans ce que j’ai vu, toi ce serait

si j’ai bien compris le fonctionnement de ton réseau.

  1. Ensuite, il faut que le «transfert» dans l’autre sens se fasse, une solution simple est

Peu élégant car il y aura au total deux translations d’adresse mais après tout…

À froid comme ça ça devrait marcher, mais on n’a pas tous les renseignements.

Iptables ne fait pas cela. Il permet d’autoriser du trafic d’une interface à une autre, de rediriger des connexions d’une adresse vers une autre, mais pas de “rediriger les entrées (qu’est-ce que c’est ?) d’une interface vers une autre”.

Ça, on n’en sait rien. “iptables -S” n’affiche que la table par défaut (filter). C’est pourquoi je recommande plutôt d’utiliser iptables-save qui affiche toutes les tables actives.

Et pour commencer, je recommande de laisser la table filter vide avec les politiques (-P) à ACCEPT pour tout laisser passer. Ajouter seulement les règles de NAT (dans la table nat donc) si nécessaire. Ensuite, il sera bien temps de restreindre les communications.