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