Ajout d'un article sur DHCP

This commit is contained in:
Quentin Dufour 2017-02-10 14:00:05 +01:00
parent d8d5359c36
commit 4cd80beafc
2 changed files with 128 additions and 32 deletions

View file

@ -17,12 +17,12 @@ GEM
ethon (0.10.1) ethon (0.10.1)
ffi (>= 1.3.0) ffi (>= 1.3.0)
execjs (2.7.0) execjs (2.7.0)
faraday (0.10.0) faraday (0.11.0)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
ffi (1.9.14) ffi (1.9.17)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
gemoji (2.1.0) gemoji (3.0.0)
github-pages (110) github-pages (120)
activesupport (= 4.2.7) activesupport (= 4.2.7)
github-pages-health-check (= 1.3.0) github-pages-health-check (= 1.3.0)
jekyll (= 3.3.1) jekyll (= 3.3.1)
@ -31,14 +31,14 @@ GEM
jekyll-default-layout (= 0.1.4) jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.8.0) jekyll-feed (= 0.8.0)
jekyll-gist (= 1.4.0) jekyll-gist (= 1.4.0)
jekyll-github-metadata (= 2.2.0) jekyll-github-metadata (= 2.3.1)
jekyll-mentions (= 1.2.0) jekyll-mentions (= 1.2.0)
jekyll-optional-front-matter (= 0.1.2) jekyll-optional-front-matter (= 0.1.2)
jekyll-paginate (= 1.1.0) jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.0.3) jekyll-readme-index (= 0.0.4)
jekyll-redirect-from (= 0.11.0) jekyll-redirect-from (= 0.12.1)
jekyll-relative-links (= 0.2.1) jekyll-relative-links (= 0.3.0)
jekyll-sass-converter (= 1.3.0) jekyll-sass-converter (= 1.5.0)
jekyll-seo-tag (= 2.1.0) jekyll-seo-tag (= 2.1.0)
jekyll-sitemap (= 0.12.0) jekyll-sitemap (= 0.12.0)
jekyll-swiss (= 0.4.0) jekyll-swiss (= 0.4.0)
@ -51,17 +51,18 @@ GEM
jekyll-theme-midnight (= 0.0.3) jekyll-theme-midnight (= 0.0.3)
jekyll-theme-minimal (= 0.0.3) jekyll-theme-minimal (= 0.0.3)
jekyll-theme-modernist (= 0.0.3) jekyll-theme-modernist (= 0.0.3)
jekyll-theme-primer (= 0.1.5) jekyll-theme-primer (= 0.1.7)
jekyll-theme-slate (= 0.0.3) jekyll-theme-slate (= 0.0.3)
jekyll-theme-tactile (= 0.0.3) jekyll-theme-tactile (= 0.0.3)
jekyll-theme-time-machine (= 0.0.3) jekyll-theme-time-machine (= 0.0.3)
jekyll-titles-from-headings (= 0.1.2) jekyll-titles-from-headings (= 0.1.4)
jemoji (= 0.7.0) jemoji (= 0.8.0)
kramdown (= 1.11.1) kramdown (= 1.11.1)
liquid (= 3.0.6) liquid (= 3.0.6)
listen (= 3.0.6) listen (= 3.0.6)
mercenary (~> 0.3) mercenary (~> 0.3)
minima (= 2.0.0) minima (= 2.0.0)
nokogiri (= 1.6.8.1)
rouge (= 1.11.1) rouge (= 1.11.1)
terminal-table (~> 1.4) terminal-table (~> 1.4)
github-pages-health-check (1.3.0) github-pages-health-check (1.3.0)
@ -70,10 +71,10 @@ GEM
octokit (~> 4.0) octokit (~> 4.0)
public_suffix (~> 2.0) public_suffix (~> 2.0)
typhoeus (~> 0.7) typhoeus (~> 0.7)
html-pipeline (2.4.2) html-pipeline (2.5.0)
activesupport (>= 2) activesupport (>= 2)
nokogiri (>= 1.4) nokogiri (>= 1.4)
i18n (0.7.0) i18n (0.8.0)
jekyll (3.3.1) jekyll (3.3.1)
addressable (~> 2.4) addressable (~> 2.4)
colorator (~> 1.0) colorator (~> 1.0)
@ -95,7 +96,7 @@ GEM
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-gist (1.4.0) jekyll-gist (1.4.0)
octokit (~> 4.2) octokit (~> 4.2)
jekyll-github-metadata (2.2.0) jekyll-github-metadata (2.3.1)
jekyll (~> 3.1) jekyll (~> 3.1)
octokit (~> 4.0, != 4.4.0) octokit (~> 4.0, != 4.4.0)
jekyll-mentions (1.2.0) jekyll-mentions (1.2.0)
@ -105,14 +106,14 @@ GEM
jekyll-optional-front-matter (0.1.2) jekyll-optional-front-matter (0.1.2)
jekyll (~> 3.0) jekyll (~> 3.0)
jekyll-paginate (1.1.0) jekyll-paginate (1.1.0)
jekyll-readme-index (0.0.3) jekyll-readme-index (0.0.4)
jekyll (~> 3.0) jekyll (~> 3.0)
jekyll-redirect-from (0.11.0) jekyll-redirect-from (0.12.1)
jekyll (>= 2.0)
jekyll-relative-links (0.2.1)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-sass-converter (1.3.0) jekyll-relative-links (0.3.0)
sass (~> 3.2) jekyll (~> 3.3)
jekyll-sass-converter (1.5.0)
sass (~> 3.4)
jekyll-seo-tag (2.1.0) jekyll-seo-tag (2.1.0)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-sitemap (0.12.0) jekyll-sitemap (0.12.0)
@ -136,7 +137,7 @@ GEM
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-theme-modernist (0.0.3) jekyll-theme-modernist (0.0.3)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-theme-primer (0.1.5) jekyll-theme-primer (0.1.7)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-theme-slate (0.0.3) jekyll-theme-slate (0.0.3)
jekyll (~> 3.3) jekyll (~> 3.3)
@ -144,39 +145,41 @@ GEM
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-theme-time-machine (0.0.3) jekyll-theme-time-machine (0.0.3)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-titles-from-headings (0.1.2) jekyll-titles-from-headings (0.1.4)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-watch (1.5.0) jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1) listen (~> 3.0, < 3.1)
jemoji (0.7.0) jemoji (0.8.0)
activesupport (~> 4.0) activesupport (~> 4.0)
gemoji (~> 2.0) gemoji (~> 3.0)
html-pipeline (~> 2.2) html-pipeline (~> 2.2)
jekyll (>= 3.0) jekyll (>= 3.0)
json (1.8.3) json (1.8.6)
kramdown (1.11.1) kramdown (1.11.1)
liquid (3.0.6) liquid (3.0.6)
listen (3.0.6) listen (3.0.6)
rb-fsevent (>= 0.9.3) rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9.7) rb-inotify (>= 0.9.7)
mercenary (0.3.6) mercenary (0.3.6)
mini_portile2 (2.1.0)
minima (2.0.0) minima (2.0.0)
minitest (5.10.1) minitest (5.10.1)
multipart-post (2.0.0) multipart-post (2.0.0)
net-dns (0.8.0) net-dns (0.8.0)
nokogiri (1.6.8.1) nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
octokit (4.6.2) octokit (4.6.2)
sawyer (~> 0.8.0, >= 0.5.3) sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.14.0) pathutil (0.14.0)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (2.0.4) public_suffix (2.0.5)
rb-fsevent (0.9.8) rb-fsevent (0.9.8)
rb-inotify (0.9.7) rb-inotify (0.9.8)
ffi (>= 0.5.0) ffi (>= 0.5.0)
redcarpet (3.3.4) redcarpet (3.4.0)
rouge (1.11.1) rouge (1.11.1)
safe_yaml (1.0.4) safe_yaml (1.0.4)
sass (3.4.22) sass (3.4.23)
sawyer (0.8.1) sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6) addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0) faraday (~> 0.8, < 1.0)
@ -187,7 +190,7 @@ GEM
ethon (>= 0.8.0) ethon (>= 0.8.0)
tzinfo (1.2.2) tzinfo (1.2.2)
thread_safe (~> 0.1) thread_safe (~> 0.1)
unicode-display_width (1.1.2) unicode-display_width (1.1.3)
PLATFORMS PLATFORMS
ruby ruby
@ -201,4 +204,4 @@ DEPENDENCIES
rouge rouge
BUNDLED WITH BUNDLED WITH
1.12.5 1.14.3

View file

@ -0,0 +1,93 @@
---
layout: post
slug: bloque-a-la-recuperation-de-l-adresse-ip
status: published
title: Bloqué à la récupération de l'adresse IP
description: Vous dites ? Une norme ?
disqus: true
categories:
- systeme
- linux
tags:
---
Après une récente modification de mon serveur DHCP, je me retrouvais dans l'impossibilité de connecter une tablette à mon réseau.
Cette dernière restait bloquée à `Récupération de l'adresse IP`. Après avoir un peu cherché sur internet, je n'ai pas trouvé de solution satisfaisante.
Le serveur DHCP fonctionnait avec les autres ordinateurs.
## Fonctionnement (simplifié) de DHCP
```raw
Client Serveur
|--- DHCPREQUEST -->|
|<--- DHCPOFFER ----|
|----- DHCPACK ---->|
```
Le client demande une adresse, le serveur lui en propose une, le client accepte.
## Logs
J'ai commencé par regarder les logs de `isc-dhcp-server`.
J'ai trouvé un long enchainement de DHCPOFFER et de DHCPREQUEST sans jamais trouver de DHCPACK.
```raw
dhcpd[2207]: DHCPREQUEST for 192.168.1.77 (192.168.1.254) from aa:aa:aa:aa:aa:aa (android-xx) via br0
dhcpd[2207]: DHCPOFFER on 192.168.1.77 to aa:aa:aa:aa:aa:aa (android-xx) via br0
dhcpd[2207]: DHCPREQUEST for 192.168.1.77 (192.168.1.254) from aa:aa:aa:aa:aa:aa (android-xx) via br0
dhcpd[2207]: DHCPOFFER on 192.168.1.77 to aa:aa:aa:aa:aa:aa (android-xx) via br0
```
Il semblerait donc que le client, notre tablette, n'aime pas la proposition du serveur DHCP.
## Modification de la configuration en aveugle
J'ai donc modifié la configuration de mon serveur DHCP en la simplifiant le plus possible, jusqu'à ce que ma tablette réussisse à se connecter.
Le coupable était la ligne :
```raw
option routers 192.168.1.254, 192.168.1.1;
```
En ne spécifiant qu'une seule passerelle, le problème est résolu :
```raw
option routers 192.168.1.254;
```
Mais d'où vient ce problème ?
## Traffic réseau
Je me suis demandé ce que pouvait bien envoyer `isc-dhcp-server` à ma tablette pour qu'elle n'en veuille pas.
J'ai donc comparé les paquets envoyé avec les deux configurations différentes.
Pour écouter le traffic réseau j'ai utilisé `tcpdump`. L'option `-vv` est bien pratique car elle permet d'expliquer le contenu du paquet.
Dans le cas d'un protocole inconu, `-XX` permet d'avoir un hexdump. Les deux sont combinables.
```raw
sudo tcpdump -i br0 -vv -e -n port 67 or port 68 and ether host aa:aa:aa:aa:aa:aa
```
Les paquets `DHCPOFFER` avec sont quasiment identiques. Celui avec les deux gateways fait 4 octets de plus (on notera que c'est aussi la taille d'une ipv4).
Des valeurs générés aléatoirements sont aussi différentes. Mais pour le reste, c'est identique.
En tout cas, `tcpdump` n'a pas de problème à décoder nos champs `gateway` dans les deux cas.
```raw
Default-Gateway Option 3, length 4: 192.168.1.254
```
```raw
Default-Gateway Option 3, length 8: 192.168.1.254,192.168.1.1
```
## Etude du client DHCP
Le protocole DHCP indique que le client doit envoyer son nom :
```raw
Vendor-Class Option 60, length 16: "android-dhcp-6.0"
```
*A suivre*