Tag Archives: Dédié

Configuration réseau d’un serveur dédié Proxmox 4 et de ses containers chez Online.net

Après avoir pas mal pataugé pour configurer convenablement mon serveur Proxmox 4, voici les résultats de mes recherches.

Pourquoi

Après avoir expérimenté le serveur dédié sur lequel tournent 50 services, j’ai fini par choisir d’isoler chaque service. Pour ce faire j’ai choisi de virtualiser des machines sur lesquels un service (ou ensemble de services liés) tournerait. J’y vois plusieurs avantages et quelques inconvénients que je récapitule quelques lignes en dessous. Online.net propose Proxmox qui a le mérite d’être utilisable (pour un serveur perso) gratuitement. Plutôt que des VM, j’ai choisi des containers bien plus légers.

Avantages

  • Les containers s’allument et s’éteignent très rapidement (quelques secondes)
  • Ils consomment peu de ressources. Par exemple 1 container avec ce site, 1 avec un logiciel de téléchargement et 1 avec un serveur TeamSpeak le tout pour 5% d’utilisation CPU (Intel Xeon E3 1220) 95% du temps.
  • Le backup des containers est rapide et n’engendre aucun downtime. Vous trouverez plus d’informations ici: Proxmox: Backup and Restore
  • Il est très facile de changer d’environnement. Par exemple j’ai préparé mes containers en local dans une VM sur laquelle Proxmox était installé. Ensuite j’ai backup mes containers que j’ai upload sur un FTP. Une fois le serveur dédié installé, il m’a fallu quelques dizaines de minutes pour mettre en place mes 3 containers et refaire ma configuration réseau.
  • Si un container pose problème, il est possible de l’arrêter uniquement lui et de garder les autres services UP.

Inconvénients

  • La configuration réseau est plus compliquée.
  • Il faut installer chaque container séparément. Par exemple si vous avez besoin de p7zip sur plusieurs containers, il faut l’installer sur tous.
  • De par le fonctionnement intrinsèque des containers, il n’est pas possible de faire tourner n’importe quel OS.

Objectif

Donc le but est d’avoir un host sous Proxmox qui va rediriger les requêtes entrantes (et sortantes) vers les containers. Il est possible d’avoir un container qui s’occupe de ce routage, mais ça rajoute de la complexité qui ne m’est pas utile.

Configuration

Host

Voilà ce que j’ai besoin de faire:

Le host correspond donc à sd-xxx, et les containers ont pour id 100, 101 et 102. Le disque dur du host est représenté par local.
La configuration réseau requise:

Par défaut, eth0, eth1 et vmbr0 existent et sont bien configurés.

vmbr1 est vraiment très simple à configurer:

Quand vous l’aurez créé, il ne sera pas actif, pas d’inquiétude, au prochain redémarrage, il démarrera automatiquement.

Donc voilà pour la partie simple de la configuration du host. Maintenant il faut vous connecter sur host pour aller directement modifier /etc/network/interfaces.

Voici à quoi il doit ressembler:

auto lo
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 195.xxx.xxx.xxx
    netmask 255.255.255.0
    gateway 195.xxx.xxx.1
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0

    # Accept already established connections
    post-up   iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
    post-down iptables -D INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
    post-up   iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    post-down iptables -D OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # By default, refuse incomming / outgoing connections
    post-up   iptables -P INPUT   DROP
    post-up   iptables -P FORWARD ACCEPT
    post-up   iptables -P OUTPUT  DROP

    # Allow DNS (53) HTTP/HTTPS (80/443) and NTP (123) outgoing requests HOST
    post-up   iptables -A OUTPUT -p udp --dport 53  -j ACCEPT
    post-down iptables -D OUTPUT -p udp --dport 53  -j ACCEPT
    post-up   iptables -A OUTPUT -p tcp --dport 80  -j ACCEPT
    post-down iptables -D OUTPUT -p tcp --dport 80  -j ACCEPT
    post-up   iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
    post-down iptables -D OUTPUT -p tcp --dport 443 -j ACCEPT
    post-up   iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
    post-down iptables -D OUTPUT -p udp --dport 123 -j ACCEPT

    # Allow loopback
    post-up   iptables -A INPUT  -i lo -j ACCEPT
    post-down iptables -D INPUT  -i lo -j ACCEPT
    post-up   iptables -A OUTPUT -o lo -j ACCEPT
    post-down iptables -D OUTPUT -o lo -j ACCEPT

    # Allow ping requests
    post-up   iptables -A INPUT  -p icmp -j ACCEPT
    post-down iptables -D INPUT  -p icmp -j ACCEPT
    post-up   iptables -A OUTPUT -p icmp -j ACCEPT
    post-down iptables -D OUTPUT -p icmp -j ACCEPT

    # Allow SSH
    post-up   iptables -A INPUT -p tcp --dport 22    -j ACCEPT
    post-down iptables -D INPUT -p tcp --dport 22    -j ACCEPT

    # Allow web interface
    post-up   iptables -A INPUT -p tcp --dport 8006 -j ACCEPT
    post-down iptables -D INPUT -p tcp --dport 8006 -j ACCEPT


auto vmbr1
iface vmbr1 inet static
    address  10.0.0.1
    netmask  255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0

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

    # TS3
    post-up   iptables -t nat -A PREROUTING -i vmbr0 -p udp --dport 9987 -j DNAT --to 10.0.0.100:9987
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p udp --dport 9987 -j DNAT --to 10.0.0.100:9987

    # Softweb.fr
    post-up   iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.0.101:80
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.0.101:80

    ...

Une fois la configuration faite, vous pouvez redémarrer votre serveur Proxmox.

Containers

Concernant la configuration de chaque container, c’est beaucoup plus simple. La configuration se fait à la création et il n’y a rien d’autre à faire.

Pour information, si vous voulez rajouter des templates en les téléchargeants directement depuis votre serveur, il faut les stocker dans /var/lib/vz/template/cache.

La partie qui nous intéresse est la partie réseau que voici:


Il faut bien noter que le Bridge se fait sur vmbr1 et non pas vmbr0.

Pour aller plus loin

La configuration que je vous montre là est un exemple. Mais je ne peux pas m’empêcher de vous inciter à l’adapter à vos besoins. Par exemple, une bonne partie est de changer le port d’écoute de SSH. Mais si vous changez le port sans adapter le firewall vous allez avoir un problème. En effet, le firewall est configuré actuellement, il fonctionne sur le principe d’une whitelist. Ainsi, j’ai autorisé explicitement le port 22. Si vous changez SSH pour écouter sur le port 32768 par exemple, pensez à changer le firewall en conséquence.

Tagged , , , ,