J'ai connecté mon raspberry pi avec un point d'accès sans fil et je voudrais exécuter un serveur DHCP sur le RPi pour attribuer l'IP et la passerelle correctement. Ceci parce que le RPi sert de passerelle vers un VPN. Malheureusement, le point d'accès exécute également un serveur DHCP que je ne peux pas désactiver pour une raison quelconque. Quelle est la meilleure façon d'obtenir automatiquement les paramètres corrects du RPi diffusés à tous les utilisateurs wifi ?
Réponse
Trop de publicités?Question amusante. Fondamentalement, si vous avez deux serveurs DHCP sur le même réseau local, il y aura une course pour distribuer les adresses, et vous ne pouvez pas être sûr de qui gagne : vous pouvez vous retrouver avec certaines adresses servies par le raspberry, d'autres par l'AP, et un seul appareil, une fois déconnecté, ne pas réobtenir la même adresse qu'avant. Ou, pire, vous pourriez avoir deux appareils avec la même adresse.
C'est donc une bonne idée de bloquer l'un des deux. Le plus simple est le suivant :
-
Tout d'abord, assurez-vous que les gammes dans lesquelles ils puisent des adresses ne se chevauchent pas Vous pourriez avoir 192.168.1.11-74 pour l'un, 192.168.1.139-202 pour l'autre. Au moins, cela permet d'éviter les conflits.
-
Nous empêchons maintenant le point d'accès de fournir des adresses IP aux clients câblés. Supposons que le point d'accès est branché sur le raspberry sur eth1 alors la commande suivante fera l'affaire :
sudo iptables -A INPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP sudo iptables -A OUTPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP
Nous avons terminé. Deux commentaires :
DHCP utilise les ports 67 et 68, sur le protocole UDP ; en bloquant la communication sur ceux-ci, vous empêchez les requêtes DHCP des clients filaires d'atteindre le serveur DHCP sur l'AP ; ainsi les clients filaires seront servis uniquement par le raspberry.
Deuxièmement, vous doit brancher l'AP directement sur le raspberry (je sais que le raspberry n'a qu'un port ethernet, qui est déjà utilisé : vous pouvez acheter un adaptateur USB-to-Ethernet, et votre raspberry aura une deuxième carte ethernet). La raison est que si vous branchez le point d'accès à un commutateur, alors les demandes et les réponses DHCP seront envoyées par le point d'accès, sans passer par le raspberry, ce qui fait que le point d'accès n'a pas besoin d'être connecté. iptables sera tout simplement inutile.
EDIT :
J'ai oublié de dire que la règle iptables ci-dessus empêche également les requêtes dhcp de circuler de l'AP vers le raspberry, de sorte que la situation que vous avez maintenant est que l'adresse DHCP dans la plage 192.168.1.0xx est donnée par le raspberry aux clients filaires, tandis que les adresses dans la plage 192.168.1.1xx sont données par l'AP aux clients wifi. Au moins, c'est ordonné.