The git repo behind my blog.

utiliser-son-pc-sous-arch-pour-connecter-un-raspberry-pi-a-internet.html 9.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="HandheldFriendly" content="True" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  8. <meta name="robots" content="index, follow" />
  9. <link href='https://phyks.me/theme/stylesheet/fonts.css' rel='stylesheet' type='text/css'>
  10. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/stylesheet/style.min.css">
  11. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/pygments/monokai.min.css">
  12. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/font-awesome/css/font-awesome.min.css">
  13. <link href="https://phyks.me/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Phyks' blog Atom">
  14. <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
  15. <link rel="icon" href="/images/favicon.ico" type="image/x-icon">
  16. <!-- Chrome, Firefox OS and Opera -->
  17. <meta name="theme-color" content="#333">
  18. <!-- Windows Phone -->
  19. <meta name="msapplication-navbutton-color" content="#333">
  20. <!-- iOS Safari -->
  21. <meta name="apple-mobile-web-app-capable" content="yes">
  22. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  23. <!-- Microsoft EDGE -->
  24. <meta name="msapplication-TileColor" content="#333">
  25. <meta name="author" content="Phyks" />
  26. <meta name="description" content="J’ai un Raspberry Pi et mon portable sous Arch Linux, et je me promène pas mal avec les deux. Mais je n’ai pas toujours de routeur à disposition pour brancher les deux sur le même réseau et travailler facilement. Il est très simple de mettre en place en …" />
  27. <meta name="keywords" content="">
  28. <meta property="og:site_name" content="Phyks' blog"/>
  29. <meta property="og:title" content="Utiliser son PC sous Arch pour connecter un Raspberry Pi à Internet"/>
  30. <meta property="og:description" content="J’ai un Raspberry Pi et mon portable sous Arch Linux, et je me promène pas mal avec les deux. Mais je n’ai pas toujours de routeur à disposition pour brancher les deux sur le même réseau et travailler facilement. Il est très simple de mettre en place en …"/>
  31. <meta property="og:locale" content="en_US.UTF-8"/>
  32. <meta property="og:url" content="https://phyks.me/2014/10/utiliser-son-pc-sous-arch-pour-connecter-un-raspberry-pi-a-internet.html"/>
  33. <meta property="og:type" content="article"/>
  34. <meta property="article:published_time" content="2014-10-18 22:40:00+02:00"/>
  35. <meta property="article:modified_time" content=""/>
  36. <meta property="article:author" content="https://phyks.me/author/phyks.html">
  37. <meta property="article:section" content="ConfigPorn"/>
  38. <meta property="og:image" content="/images/profile.png">
  39. <title>Phyks' blog &ndash; Utiliser son PC sous Arch pour connecter un Raspberry Pi à Internet</title>
  40. </head>
  41. <body>
  42. <aside>
  43. <div>
  44. <a href="https://phyks.me">
  45. <img src="/images/profile.png" alt="Phyks" title="Phyks">
  46. </a>
  47. <h1><a href="https://phyks.me">Phyks</a></h1>
  48. <p>I write about dev, FOSS, DIY and more, in French and English.</p>
  49. <ul class="social">
  50. <li><a class="sc-rss" href="feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
  51. <li><a class="sc-envelope-o" href="mailto:phyks+blog@phyks.me" target="_blank"><i class="fa fa-envelope-o"></i></a></li>
  52. <li><a class="sc-github" href="http://github.com/phyks/" target="_blank"><i class="fa fa-github"></i></a></li>
  53. <li><a class="sc-gitlab" href="https://git.phyks.me/phyks" target="_blank"><i class="fa fa-gitlab"></i></a></li>
  54. </ul>
  55. </div>
  56. </aside>
  57. <main>
  58. <nav>
  59. <a href="https://phyks.me">Home</a>
  60. <a href="https://links.phyks.me">Bookmarks</a>
  61. <a href="/pages/hosted-tools.html">Tools</a>
  62. <a href="/archives.html">Archives</a>
  63. <a href="/pages/memo-autohebergement.html">Autohébergement</a>
  64. <a href="https://phyks.me/feeds/all.atom.xml">Atom</a>
  65. </nav>
  66. <article class="single">
  67. <header>
  68. <h1 id="utiliser-son-pc-sous-arch-pour-connecter-un-raspberry-pi-a-internet">Utiliser son <span class="caps">PC</span> sous Arch pour connecter un Raspberry Pi à&nbsp;Internet</h1>
  69. <p>
  70. Posted on 18 October 2014 in <a href="https://phyks.me/category/configporn.html">ConfigPorn</a>
  71. &#8226; 2 min read
  72. </p>
  73. </header>
  74. <div>
  75. <p>J&#8217;ai un Raspberry Pi et mon portable sous Arch Linux, et je me promène pas mal avec les deux. Mais je n&#8217;ai pas toujours de routeur à disposition pour brancher les deux sur le même réseau et travailler facilement. Il est très simple de mettre en place en 5 minutes une configuration me permettant de connecter le Raspberry Pi sur mon portable, et de partager la connexion Internet issue du wifi de mon <span class="caps">PC</span> avec le Raspberry Pi. Comme ça, plus de problèmes, je peux bosser sur le Raspberry Pi n&#8217;importe&nbsp;où.</p>
  76. <p>C&#8217;est parti&nbsp;!</p>
  77. <p><em>Note</em>&nbsp;: J&#8217;utilise cette configuration pour développer, et elle n&#8217;est donc pas forcément optimale et devrait sûrement être adaptée pour être utilisée en&nbsp;production.</p>
  78. <h2>Installation d&#8217;un serveur dhcp sur le&nbsp;portable</h2>
  79. <p>Commençons par installer un serveur dhcp sur le <span class="caps">PC</span> avec Arch, pour éviter de devoir saisir une adresse <span class="caps">IP</span> fixe sur le Raspberry Pi. Comme ça, on peut utiliser n&#8217;importe quelle image sans réfléchir, comme si on avait un routeur qui va&nbsp;bien.</p>
  80. <p>Le plus simple est de suivre <a href="https://wiki.archlinux.org/index.php/Dhcpd">cette page de la documentation</a>.</p>
  81. <ol>
  82. <li>On attribue une adresse <span class="caps">IP</span> fixe à l&#8217;interface ethernet (ici 192.168.192.1, attention à ce que ça ne rentre pas en conflit avec votre configuration&nbsp;réseau).</li>
  83. </ol>
  84. <div class="highlight"><pre><span></span>ip link <span class="nb">set</span> up dev enp4s0f2
  85. ip addr add <span class="m">192</span>.168.192.1/24 dev enp4s0f2
  86. </pre></div>
  87. <ol>
  88. <li>
  89. <p>Déplacer le fichier <code>/etc/dhcpd.conf</code> fourni par défaut vers <code>/etc/dhcpd.conf.example</code> pour pouvoir le modifier&nbsp;sereinement.</p>
  90. </li>
  91. <li>
  92. <p>Éditer le fichier <code>/etc/dhcpd.conf</code>. À titre indicatif, voici le mien&nbsp;:</p>
  93. </li>
  94. </ol>
  95. <div class="highlight"><pre><span></span>option domain-name-servers 8.8.8.8, 8.8.4.4;
  96. option subnet-mask 255.255.255.0;
  97. option routers 192.168.192.1;
  98. subnet 192.168.192.0 netmask 255.255.255.0 {
  99. range 192.168.192.10 192.168.192.20;
  100. }
  101. </pre></div>
  102. <p>Je spécifie d&#8217;utiliser les serveurs <span class="caps">DNS</span> de Google (qui sont disponibles partout -si vous avez un serveur sur votre ordinateur, vous pouvez le mettre à la place), que le routeur est à l&#8217;adresse <code>192.168.192.1</code> et que j&#8217;attribue des adresses dans la gamme <code>192.168.192.10-192.168.192.20</code>.</p>
  103. <ol>
  104. <li>Vous pouvez lancer le service dhcpd avec <code>systemctl start dhcpd4</code>. Je préfèrais restreindre l&#8217;interface sur laquelle le serveur <span class="caps">DHCP</span> tournait, pour ne l&#8217;utiliser que sur l&#8217;interface ethernet. Pour se faire, il suffit de suivre les instructions «&nbsp;Listening on only one interface - Service file&nbsp;» de la <a href="https://wiki.archlinux.org/index.php/Dhcpd">documentation Arch Linux</a>.</li>
  105. </ol>
  106. <h2>Configuration du pare-feu et du&nbsp;noyau</h2>
  107. <p>Il faut ensuite configurer <code>iptables</code> et le noyau pour rediriger les paquets réseau vers le Raspberry&nbsp;Pi.</p>
  108. <p>Pour ce&nbsp;faire,</p>
  109. <div class="highlight"><pre><span></span>iptables -A FORWARD -o wlp3s0 -i enp4s0f2 -s <span class="m">192</span>.168.192.1/24 -m conntrack --ctstate NEW -j ACCEPT
  110. iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  111. iptables -A POSTROUTING -t nat -j MASQUERADE
  112. </pre></div>
  113. <p>et on dit active le <em>forwarding</em> dans le noyau&nbsp;:</p>
  114. <div class="highlight"><pre><span></span><span class="nb">echo</span> <span class="m">1</span> <span class="p">|</span> tee /proc/sys/net/ipv4/ip_forward
  115. </pre></div>
  116. <h2>Le script qui va&nbsp;bien</h2>
  117. <p>Une fois le serveur <code>dhcpd</code> configuré, <a href="https://pub.phyks.me/scripts/dhcp_server.sh">ce script</a> permet de tout démarrer /&nbsp;arrêter.</p>
  118. <p>Attention, le <em>flush</em> dans la fonction <code>stop</code> peut être trop brutal pour&nbsp;vous.</p>
  119. </div>
  120. <div class="tag-cloud">
  121. <p>
  122. </p>
  123. </div>
  124. </article>
  125. <footer>
  126. <p>
  127. &copy; 2017 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>
  128. </p>
  129. <p>Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a></p><p>
  130. <a rel="license"
  131. href="http://creativecommons.org/licenses/by-nc-sa/4.0/"
  132. target="_blank">
  133. <img alt="Creative Commons License"
  134. title="Creative Commons License"
  135. style="border-width:0"
  136. src="https://phyks.me/theme/img/cc/by-nc-sa.png"
  137. width="80"
  138. height="15"/>
  139. </a>
  140. </p> </footer>
  141. </main>
  142. <script type="application/ld+json">
  143. {
  144. "@context" : "http://schema.org",
  145. "@type" : "Blog",
  146. "name": " Phyks' blog ",
  147. "url" : "https://phyks.me",
  148. "image": "/images/profile.png",
  149. "description": "I write about dev, FOSS, DIY and more, in French and English."
  150. }
  151. </script>
  152. </body>
  153. </html>