Passerelle DHCP


#1

Bonjour,

Voilà, j’ai une passerelle DHCP sous Debian 31r1 comme suit :

eth0 : 192.168.6.0/24 : DHCP/no
eth1 : 192.168.10.0/24 : DHCP/yes : 192.168.10.1/32
eth2 : 192.168.10.0/24 : DHCP/yes : 192.168.10.2/32

dhcp.conf:

[code]# PARAMETRES DHCP

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.105;
option routers 192.168.10.1, 192.168.10.2;
option domain-name-servers 192.168.10.1;
}[/code]

Pour être sur que les paquets passent bien j’ai configuré iptables comme suit :

iptables -P FORWARD ACCEPT iptables -A FORWARD --match state --state ESTABLISHED,RELATED -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

J’ai un client Win2k sur eth1 et eth2 et les deux ont bien une adresse fournie pas le DHCP. Cependant, je ne ping la passerelle qu’avec le client connecté en eth1. Rien avec le cleint connecté en eth2…

J’ai modifié eth2 par l’adresse 192.168.10.1/32, rien de plus. Et j’ai aussi essayé de mettre deux fois deux subnet 192.168.10.0 dans le DHCP, mais il n’en veut pas…

Quelqu’un pourrait-il m’éclairer de ses lumières ?
Merci d’avance !!!


#2

slt,

As tu un firewall peut etre ?

Sinon egarde dans ton "/proc/sys/net/ipv4/conf/eth0|1|2 {icmp_echo_ignore_all, icmp_echo_ignore_broadcasts} et compare les valeurs.


#3

comme ton serveur dhcp sert sur deux interfaces connectées au même lan, ton serveur entre en conflit avec lui même.
N’associes d’une manière ou d’une autre le service dhcp qu’à une des deux adresses, et ça devrait marcher ensuite.


#4

[quote=“MattOTop”]comme ton serveur dhcp sert sur deux interfaces connectées au même lan, ton serveur entre en conflit avec lui même.
N’associes d’une manière ou d’une autre le service dhcp qu’à une des deux adresses, et ça devrait marcher ensuite.[/quote]

Je suis d’accord, si je fais les modifs suivantes :

eth1 : 192.168.10.0/24 : DHCP/yes : 192.168.10.1/32 eth2 : 192.168.20.0/24 : DHCP/yes : 192.168.20.1/32

et :

[code]# PARAMETRES DHCP

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.105;
option routers 192.168.10.1;
option domain-name-servers 192.168.10.1;
}

subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.100 192.168.20.105;
option routers 192.168.20.1;
option domain-name-servers 192.168.20.1;
}[/code]

Ca marche impec’…

Maintenant si je veux faire la même chose qu’un routeur vendu dans le commerce comment je peux m’y prendre ? :unamused:


#5

[quote=“stonfi”]slt,

As tu un firewall peut etre ?

Sinon egarde dans ton "/proc/sys/net/ipv4/conf/eth0|1|2 {icmp_echo_ignore_all, icmp_echo_ignore_broadcasts} et compare les valeurs.[/quote]

Voici les fichiers contenus dans /proc/sys/net/ipv4/conf/eth0|1|2 :

accept_redirects bootp_relay log_martians secure_redirects
accept_source_route disable_policy mc_forwarding send_redirects
arp_announce disable_xfrm medium_id shared_media
arp_filter force_igmp_version proxy_arp tag
arp_ignore forwarding rp_filter

Les forwading sont bien tous à 1…


#6

ERRATUM

En laissant sur :

eth1 : 192.168.10.0/24 : DHCP/yes : 192.168.10.1/32 eth2 : 192.168.10.0/24 : DHCP/yes : 192.168.10.2/32

J’ai configuré mon dhcp.conf comme suit et rien ne change :

[code]# PARAMETRES DHCP

default-lease-time 600;
max-lease-time 7200;

PARAMETRES DHCP

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.105;
option routers 192.168.10.1;
option domain-name-servers 192.168.10.1;
}

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.110 192.168.10.115;
option routers 192.168.10.2;
option domain-name-servers 192.168.10.2;
}[/code]

Le DHCP fonctionne sans problème sur les deux interfaces. Mais sur les clients de eth2, le ping 192.168.10.2/ping 192.168.10.1/ping 192.168.6.1/ping google.fr ne passent pas… alors qu’ils passent depuis les clients connectés à eth1.


#7

Si tu as une adresse de type 192.168.xxx.xxx tu ne peux pas pinger sur vers le net (et donc pinger google), à moins de mettre en place un ip-masquerade ou un proxy.
Les adresses de type 192.168.xxx.xxx sont désignées pour être de type réseau local privé, sans qu’il y ait de lien directe avec le réseau internet publique.
Les adresses de types 127.xxx.xxx.xxx sont désignées pour être de type machine locale (localhost), sans qu’il y ait de lien vers un réseau, qu’il soit local ou internet.


#8

[quote=“Damsss”]Si tu as une adresse de type 192.168.xxx.xxx tu ne peux pas pinger sur vers le net (et donc pinger google), à moins de mettre en place un ip-masquerade ou un proxy.
Les adresses de type 192.168.xxx.xxx sont désignées pour être de type réseau local privé, sans qu’il y ait de lien directe avec le réseau internet publique.
Les adresses de types 127.xxx.xxx.xxx sont désignées pour être de type machine locale (localhost), sans qu’il y ait de lien vers un réseau, qu’il soit local ou internet.[/quote]

Sans oublier les plages IP privées : 10.0.0.0/8 et 172.16.0.0/16-172.31.0.0/16 respectivement de classe A et B.
Nous avons également la plage 169.254.x.x d’auto-adressage : APIPA (Automatic Private IP Addressing) utilisé par les plateformes Windows qui dans le cas où il n’y a pas de serveur DHCP s’auto-attribue une adresse IP qui servira de référence pour les autres postes sous Windows sur le même réseau et ainsi pouvoir communiquer entre eux. :wink:

Ici, si tu regardes bien, j’ai activé le forwarding sur la passerelle qui permet aux postes clients du serveur DHCP d’aller sur Internet et ainsi de pinger google.fr. Mon souci est de réussir à créer une passerelle identique à un routeur vendu tout fait où sur chaque interface on a la même adresse IP, le DHCP fonctionne et les paquets passent sur chaque interface… :cry:


#9

je n’avais pas compris que tes deux interfaces n’etaient pas connectées au même hub ! Je croyais que tu cherchais à faire de l’intègration de bande passante avec tes deux cartes…
bon, je vois ce que tu veux faire donc, c’est un bridge: un dispositif avec une seule adresse pour toutes les interfaces.
Bon, d’abord, il y a des limitations sur le filtrage que tu peux faire, et en plus, c’est cossu à mettre en oeuvre.

Si ca t’interesse vraiment, lis de la doc sur les bridges, et regardes ce que c’est que le proxy arp.

Mais je te conseilles plutot de mettre une interface sur 192.168.0.0/24 et l’utre sur192.168.1.0/24


#10

Oki, merci !! Je vais faire un tour pour regarder les sujets sur le bridge !!


#11

surtout, pour la comprehension, le proxy arp.


#12

Génial !! Ca marche à merveille le bridge !!!

J’ai juste eu à installer bridge-utils et configurer mon fichier /etc/network/interfaces comme suit :

[code]auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.6.2
netmask 255.255.255.0
network 192.168.6.0
broadcast 192.168.6.255
gateway 192.168.6.1

auto br0
iface br0 inet static
address 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
bridge_ports eth1 eth2
bridge_stp off
bridge_fd 2
bridge_maxwait 0[/code]

Sachant que la carte br0 est une carte virtuelle qui prend en charge eth1 et eth2 si j’ai bien compris.

Une fois de plus, merci pour votre aide !!! :smiley:


#13

Maintenant mon souci est d’arriver à gérer des règles iptables pour eth1 et eth2…


#14

sauf que c’est ce que je te disait à propos des limitations: je ne suis pas sûr que tu puisses utiliser autre chose que br0 dans tes règles iptables, puisque eth1 et eth2 ne doivent plus exister pour ta couche réseau (même s’ils existent physiquement bien sûr).


#15

Juste une petite question, le bridge ça équivaut au VLAN ?


#16

Juste une petite réponse: non.
Rien à voir:
un bridge “fusionne” deux réseaux physiques (contrairement à une passerelle qui les interconnecte),
les vlans sur un réseau “séparent” le traffic en plusieurs réseaux virtuels sécurisés.

plus précisément:
Une interface vlan associé à une carte (il peut y avoir plusieurs vlan sur une carte) marque chaque trame envoyée et n’entend que les paquets marqués pour son vlan.

Tu me diras: alors si je connais le numero du vlan, et que je le configure dans ma machine, je vais avoir accés au vlan qui m’interresse sans problême. Ou est donc la sécurité ?

Dans l’absolu, en effet, il suffit de configurer le client, et de le brancher sur un switch.
Sauf que les switch à vlan sont un peu spéciaux…

imagines par exemple des machines en 192.168.0/24 et des machines en 192.168.1/24 sur un même switch traditionnel: elles ne se voient pas réciproquement en IP, mais tu peux tout de même “sniffer” et capter avec une 192.168.0 ce que fait une 192.168.1

Mais si tu as un switch actif utilisant les vlan, tu peux dire par exemple: le traffic de tel vlan ne sera retransmis que sur les prises tant, tant, et tant, pas sur les autres.

Et même sans utiliser la sécurité, tu peux trés bien configurer de la qualité de service et donner une priorité à certains vlan par rapport à d’autres.

Enfin voila.


#17

Ok !!

Effectivement, ça n’a rien à voir. Je vois le truc.
Merci Matt !! T’es vraiment au top !!! :stuck_out_tongue:


#18

Bon alors j’ai tenté le physdev :
http://www.delafond.org/traducmanfr/man/man8/iptables.8.html

iptables -P FORWARD DROP #iptables -A FORWARD -i br0 -o eth0 -j ACCEPT iptables -A FORWARD -m physdev --physdev-in eth1 -o eth0 -j ACCEPT iptables -A FORWARD --match state --state ESTABLISHED,RELATED -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Mais il me renvoi la chose suivante :

Or j’ai mis eth1 pensant que c’était le nom du port n°1 du bridge…


#19

à chaque fonctionnalité d’iptables correspond un module noyau: ici, c’est le module ipt_physdev.

si tu veux voir les autres:
ls /lib/modules/uname -r/kernel/net/ipv4/netfilter/*.ko

avoir des infos, comme d’hab:
modinfo ipt_physdev

Au fait, merci: je ne savais pas qu’on pouvait identifier dans iptables les interfaces d’un bridge. Ca m’ouvre des perspectives…


#20

[quote]# ls /lib/modules/uname -r/kernel/net/ipv4/netfilter/*.ko

ls: /lib/modules/2.4.27-2-386/kernel/net/ipv4/netfilter/*.ko: Aucun fichier ou répertoire de ce type

modinfo ipt_physdev

modinfo: ipt_physdev: no module by that name found[/quote]

:cry: