Le blog de Victor Héry https://blog.victor-hery.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
7.3 KiB

  1. Title: Lan au sein d'une dedibox Online
  2. subtitle: ; Proxmox
  3. Date: 2012-09-12 20:30
  4. Modified: 2012-09-12 20:30
  5. Category: Réseaux
  6. Tags: proxmox, debian, iptables, linux, dedibox online
  7. keywords: proxmox, debian, iptables, linux, dedibox online
  8. Slug: proxmox-lan-au-sein-d-une-dedibox-online
  9. Authors: Victor
  10. Status: published
  11. [TOC]
  12. ## Problématique : faut qu'ça cause
  13. <p>
  14. Ce tutoriel a été rédigé sur le modèle d'un serveur dédié "dedibox" loué par <a href="http://www.online.net">Online.net</a>.</p>
  15. <p>
  16. <em>Nota : cet article est la transcription un peu plus détaillée et technique d'un post de moi-même sur le forum d'Online. Il n'y a donc pas de probème de droits :)</em></p>
  17. <p>
  18. Cependant, il peut s'adapter à n'importe quel serveur ayant une distribution proxmox d'installée, au prix du changement de nom de quelques interfaces.</p>
  19. <p>
  20. Globalement le problème se résume ainsi :</p>
  21. <ul>
  22. <li>
  23. Votre proxmox est installé sur un serveur dédié</li>
  24. <li>
  25. Vous avez plusieurs machines virtuelles, qui ont besoin de causer entre elles, ou mieux avec l'extérieur (mises à jour, tout ça...)</li>
  26. <li>
  27. Votre herbergeur<a href="http://blog.héry.com/article12/on-rale-marre-du-filtrage-securite-des-hebergeurs"> <strike>est un gros extrémiste</strike> sécurise son réseau</a> et il coupe tout accès à votre serveur si vous avez le malheur de sortir sur le réseau avec une adresse IP/MAC privée</li>
  28. </ul>
  29. <p>
  30. &nbsp;</p>
  31. <p>
  32. Il va donc falloir mettre en place un réseau virtuel interne à votre proxmox, et le cas échéant un système de NAT efficace pour permettre à vos VM avec adresses IP privées de sortir sur Internet.</p>
  33. <p>
  34. <strong>Que ce soit clair, ces règles de pare-feu ne sécurisent en rien votre serveur, elles se contentent uniquement de permettre à vos machines virtuelles de causer entre elles.</strong></p>
  35. ## Posons les termes : de quoi on parle
  36. <p>
  37. Pour rendre plus simples les explications suivantes, je vais poser dès maintenant la configuration que l'on va utiliser.</p>
  38. <p>
  39. Le tutoriel se base sur proxmox V2, configuré juste après installation.</p>
  40. <p>
  41. Dans ce cadre :</p>
  42. <ol>
  43. <li>
  44. On utilise une distribution Proxmox, donc basée sur Debian</li>
  45. <li>
  46. vmbr0 est l'interface bridge créée par proxmox, normalement liée à eth0</li>
  47. <li>
  48. vmbr1 est une interface bridge supplémentaire créé par nos soins, sans nécessité d'être liée à une interface physique (éventuellement créée depuis l'interface web proxmox)</li>
  49. <li>
  50. Le pare-feu que nous utiliserons sera iptables</li>
  51. <li>
  52. Nous configurerons des containeurs OpenVZ (mais la configuration fonctionne avec des KVM en réseau bridgé)</li>
  53. <li>
  54. Une machine VMID OpenVZ existe déjà, et elle dispose d'une interface publique avec une adresse MAC générée via l'interface web Online. (hors cadre de ce tuto)</li>
  55. <li>
  56. Vos VM utilisent la plage d'adresse IP privées 192.168.0.0/16</li>
  57. <li>
  58. Vous possédez déjà quelques connaissances en ligne de commande/iptables</li>
  59. </ol>
  60. ## Les mains dans le cambouis
  61. <p>
  62. Première chose à faire, se connecter en SSH sur votre hyperviseur proxmox.</p>
  63. <p>
  64. Utilisez Putty si vous êtes sous Windows, ou le shell via une applet java dans l'interface Proxmox en alternative.</p>
  65. <p>
  66. Dans tous les cas, continuez une fois que vous avez un shell d'ouvert sur votre hyperviseur&nbsp; :-)</p>
  67. ### Evitons les blocages intempestifs
  68. <p>
  69. La première manip va être de mettre en place un NAT sur l'interface physique qui sert à l'hyperviseur pour joindre Internet. Ceci permettra tout de suite d'éviter la moindre fuite d'un paquet venant d'une VM vers l'extérieur.</p>
  70. <p>
  71. En effet, cette fuite pourrait entrainer la coupure de l'accès à votre serveur pour une durée indéterminée, évitons donc tout de suite ce cas là.</p>
  72. <p>
  73. Un effet de bord intéressant est que vos futures VM pourront accéder à Internet à l'aide de ce NAT à l'aide d'un peu de routage ! Pratique pour les mises à jour.</p>
  74. <p>
  75. Pour mettre en place ce NAT, utilisez les lignes suivantes (à utiliser en root, ou alternativement avec sudo) :</p>
  76. <p>
  77. <pre class="brush:bash;">
  78. $ iptables -t nat -A POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
  79. $ echo 1 &gt; /proc/sys/net/ipv4/ip_forward
  80. </pre>
  81. <p>
  82. Cela va permettre d'activer l'ip forwarding sur votre interface, et va faire en sorte que toutes vos VM en 192.168.0.0/16 seront nattées lorsqu'elles essaieront de joindre une machine qui n'est pas en 192.168.0.0/16.</p>
  83. <p>
  84. <strong>Attention, changez les adresses IP selon votre configuration.</strong></p>
  85. <p>
  86. Cette configuration est temporaire, elle n'aura plus d'effet au prochain redémarrage. Nous verrons dans la <a href="#Modifications permanentes">dernière partie</a> comment les rendre permanentes, mais vérifiez que tout fonctionne avant de faire ça.</p>
  87. <p>
  88. (Si vous vous plantez et que vous bloquez l'accès à votre système, au moins un redémarrage règle le problème. Une fois les règles permanentes, vous êtes obligés de tout formater...)</p>
  89. ### Configuration OpenVZ
  90. <p>
  91. Nous allons rajouter à la VM une interface réseau qui va bien. C'est également possible de le faire via l'interface web, mais comme on est en SSH on va pas s'embêter à ouvrir un navigateur !</p>
  92. <p>
  93. <pre class="brush:bash;">
  94. vzctl set VMID --netif_add eth1,,,,vmbr1 --save
  95. </pre>
  96. <p>
  97. Ceci va permettre de rajouter à la machine VMID une interface eth1, branchée sur vmbr1. L'adresse MAC sera générée automatiquement. Le --save rend la modification permanente même après redémarrage de la VM.</p>
  98. <p>
  99. Pour faire plus simple, vous pouvez mettre à vmbr1 une adresse IP dans la même plage que les VM (ici 192.168.0.0/16), histoire que l'hyperviseur puisse leur causer aussi. Ce n'est pas obligatoire ceci dit.</p>
  100. <p>
  101. Pour faire ça, il suffit de modifier le fichier /etc/network/interfaces -&gt; Voir dans la section "<a href="#Modifications permanentes">Modification permamentes</a>"</p>
  102. <p>
  103. Ensuite, il vous suffit de créer autant de VM que vous le souhaitez en réseau local. La seule contrainte est de leur mettre une interface réseau branchée sur vmbr1 à la création, puis une adresse IP dans la plage qui va bien.</p>
  104. <p>
  105. De cette façon vous êtes parés.</p>
  106. ## <a name="Modifications permanentes">Modifications permanentes</a>
  107. <p>
  108. Bon aller, pour que tout cela soit permanent même après redémarrage, voici les choses à rajouter.</p>
  109. <p>
  110. Les modifications sont à faire sur l'hyperviseur.</p>
  111. <p>
  112. Dans /etc/network/interfaces, rajoutez sous la section vmbr0 les lignes suivantes :</p>
  113. <p>
  114. <pre class="brush:bash;">
  115. echo 1 &gt; /proc/sys/net/ipv4/ip_forward
  116. post-up iptables -t nat -A POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
  117. post-down iptables -t nat -D POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
  118. </pre>
  119. <p>
  120. De cette façon, le NAT sera configuré au démarrage sur vmbr0.</p>
  121. <p>
  122. Pour avoir une adresse IP privée sur vmbr1, soit vous passez par l'interface web, soit vous retournez dans /etc/network/interfaces et vous rajouter dans vmbr1 les lignes qui vont bien (en vous basant sur vmbr0 par exemple)</p>
  123. <p>
  124. <pre class="brush:bash;">
  125. addresse 192.168.0.1
  126. netmask 255.255.0.0
  127. broadcast 192.168.0.255
  128. </pre>
  129. <p>
  130. &nbsp;</p>
  131. <p>
  132. Voila, j'espère que ce petit tuto vous aura été utile. Si vous avez des questions particulières, n'hésitez pas&nbsp; :-)</p>
  133. <p>
  134. &nbsp;</p>