diff --git a/Gemfile.lock b/Gemfile.lock index 3e6fd73..70ed9c0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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 diff --git a/_posts/2017-02-10-dhcp-gateways.md b/_posts/2017-02-10-dhcp-gateways.md new file mode 100644 index 0000000..a0a52d3 --- /dev/null +++ b/_posts/2017-02-10-dhcp-gateways.md @@ -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*