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.
 
 
 
 
 

7.3 KiB

Title: Lan au sein d'une dedibox Online subtitle: ; Proxmox Date: 2012-09-12 20:30 Modified: 2012-09-12 20:30 Category: Réseaux Tags: proxmox, debian, iptables, linux, dedibox online keywords: proxmox, debian, iptables, linux, dedibox online Slug: proxmox-lan-au-sein-d-une-dedibox-online Authors: Victor Status: published

[TOC]

Problématique : faut qu'ça cause

Ce tutoriel a été rédigé sur le modèle d'un serveur dédié "dedibox" loué par Online.net.

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 :)

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.

Globalement le problème se résume ainsi :

  • Votre proxmox est installé sur un serveur dédié
  • Vous avez plusieurs machines virtuelles, qui ont besoin de causer entre elles, ou mieux avec l'extérieur (mises à jour, tout ça...)
  • Votre herbergeur est un gros extrémiste sécurise son réseau 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

 

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.

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.

## Posons les termes : de quoi on parle

Pour rendre plus simples les explications suivantes, je vais poser dès maintenant la configuration que l'on va utiliser.

Le tutoriel se base sur proxmox V2, configuré juste après installation.

Dans ce cadre :

  1. On utilise une distribution Proxmox, donc basée sur Debian
  2. vmbr0 est l'interface bridge créée par proxmox, normalement liée à eth0
  3. 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)
  4. Le pare-feu que nous utiliserons sera iptables
  5. Nous configurerons des containeurs OpenVZ (mais la configuration fonctionne avec des KVM en réseau bridgé)
  6. 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)
  7. Vos VM utilisent la plage d'adresse IP privées 192.168.0.0/16
  8. Vous possédez déjà quelques connaissances en ligne de commande/iptables
## Les mains dans le cambouis

Première chose à faire, se connecter en SSH sur votre hyperviseur proxmox.

Utilisez Putty si vous êtes sous Windows, ou le shell via une applet java dans l'interface Proxmox en alternative.

Dans tous les cas, continuez une fois que vous avez un shell d'ouvert sur votre hyperviseur  :-)

### Evitons les blocages intempestifs

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.

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à.

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.

Pour mettre en place ce NAT, utilisez les lignes suivantes (à utiliser en root, ou alternativement avec sudo) :

 $ iptables -t nat -A POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
 $ echo 1 > /proc/sys/net/ipv4/ip_forward

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.

Attention, changez les adresses IP selon votre configuration.

Cette configuration est temporaire, elle n'aura plus d'effet au prochain redémarrage. Nous verrons dans la dernière partie comment les rendre permanentes, mais vérifiez que tout fonctionne avant de faire ça.

(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...)

### Configuration OpenVZ

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 !

vzctl set VMID --netif_add eth1,,,,vmbr1 --save

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.

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.

Pour faire ça, il suffit de modifier le fichier /etc/network/interfaces -> Voir dans la section "Modification permamentes"

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.

De cette façon vous êtes parés.

## Modifications permanentes

Bon aller, pour que tout cela soit permanent même après redémarrage, voici les choses à rajouter.

Les modifications sont à faire sur l'hyperviseur.

Dans /etc/network/interfaces, rajoutez sous la section vmbr0 les lignes suivantes :

echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE

De cette façon, le NAT sera configuré au démarrage sur vmbr0.

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)

addresse 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.0.255

 

Voila, j'espère que ce petit tuto vous aura été utile. Si vous avez des questions particulières, n'hésitez pas  :-)