Forum Linux.debian/ubuntu Proxmox serveur Kimsufi

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
1
déc.
2016

Bonjour,

Après plusieurs heures de recherches je me tourne vers vous pour vous demandez de l'aide..

je possède donc un serveur kimsufi, avec proxmox d'installer dessus, j'aimerais créer des machines virtuelles accessibles depuis l'extérieur (par exemple sur une machine il faut que le port 20000 soit accessible depuis l'extérieur et sur une autre machine le port 8080 par exemple…)

Mais je ne trouve pas comment faire, des règles de routage ? un pfsense ?

Merci de m'éclairer et si jamais un tuto existe de me le faire parvenir car je suis dans une belle galère la '

Merci !

  • # trop peu d'infos... sur l'architecture

    Posté par  (site web personnel) . Évalué à 2.

    pont ? nat ? pour les vm en ip privées, publiques ?

    ps: fait une recherche c'est pas la 1ère fois qu'on rencontre cette problématique

    Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités

  • # ..

    Posté par  . Évalué à 0.

    Comme indiqué plus haut j'ai fais beaucoup de recherche, je te laisse l'honneur de trouver un tuto pour l'installation et la configuration de proxmox sur un serveur kimsufi..

    J'ai une seule adresse publique, mes VM seront en adresse privée et je voudrais que toutes mes VM puissent accéder au à internet (sans utiliser pfsense mais les parefeu de proxmox) et définir des règles pour rediriger les ports vers la VM concerné..

    Si tu as une petite procédure sous la main ou des conseilles car je débute vraiment dans Proxmox et je ne comprend pas tout, je ne cherche pas à ce que tu fasse le boulot pour moi '

    Merci par avance !

  • # Changer de "Network model "

    Posté par  . Évalué à 1. Dernière modification le 01 décembre 2016 à 17:57.

    Proxmox est configuré par défaut pour utiliser un « pond réseau » ou chaque VM à sa propre IP.

    Sur Kimsufi on a qu'une IP du coup il faut changer de « Network model » pour un modèle basé sur du NAT.

    Voir : https://pve.proxmox.com/wiki/Network_Model#Masquerading_.28NAT.29_with_iptables

  • # Merci de ta réponse

    Posté par  . Évalué à 1.

    Donc pour configurer en NAT nous sommes obligé de le faire en SSH, je ne peux rien faire via l'interface web ?

    En essayant un tuto j'ai effectué cette manipulation :
    iptables -t nat -A POSTROUTING -o vmbr0 -s 10.0.1.0/24 -j MASQUERADE

    Rien a changé et maintenant je n'arrive pas à la supprimer… j'ai peur de tomber sur un mauvais tuto :/

    • [^] # Re: Merci de ta réponse

      Posté par  (site web personnel) . Évalué à 2.

      Y a pas de mauvais tutos, mais il ne faut pas balancer les lignes de commandes les yeux fermés sans réfléchir, trés souvent on va droit dans le mur. Cela nécessite réflexion et adaptation à ton contexte.

      Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités

    • [^] # Re: Merci de ta réponse

      Posté par  . Évalué à 2.

      iptables -t nat -A POSTROUTING -o vmbr0 -s 10.0.1.0/24 -j MASQUERADE

      ca c'est pour A jouter une regle

      pour D elete une regle, c'est

      iptables -t nat -D POSTROUTING -o vmbr0 -s 10.0.1.0/24 -j MASQUERADE

  • # Mon kimsufi pas le FW interne mais iptable

    Posté par  . Évalué à 2.

    Voilà un petit script bash que j'utilise pour configurer iptable sur mon kimsufi avec proxmox, avec
    - du NAT
    - quelques redirections de services depuis l'extérieur
    - du suivi de connexions FTP
    - mes containers LXC sont en 10.10.101.0/24
    - 1 container web (apache)
    - 1 container DB (MySQL)
    - 1 container avec gitlab
    - NGINX en proxy sur l'hyperviseur

    Si ca peut te servir …

    #!/bin/sh -x
    
    if [ -x /usr/bin/logger ]; then
      logger -p info "Activating firewall script"
    fi
    modprobe ip_conntrack || exit 1
    modprobe ip_conntrack_ftp || exit 1
    modprobe ip_nat_ftp || exit 1
    
    iptables -P OUTPUT  ACCEPT
    iptables -P INPUT  ACCEPT
    iptables -P FORWARD ACCEPT
    
    cat /proc/net/ip_tables_names | while read table; do
      iptables -t $table -L -n | while read c chain rest; do
          if test "X$c" = "XChain" ; then
            iptables -t $table -F $chain
          fi
      done
      iptables -t $table -X
    done
    
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    ip addr flush dev vmbr0 scope link
    
    iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    #
    # NAT pour les VM
    #
    iptables -t nat -A POSTROUTING -o vmbr0 -s 10.10.101.0/24 ! -d 10.10.101.0/24 -j SNAT --to [IP PUBLIQUE]
    
    #
    # PAT pour les VM
    #
    iptables -t nat -A PREROUTING -i vmbr0 -p tcp -s 0/0 -d [IP PUBLIQUE] --destination-port 4022 -j DNAT --to 10.10.101.40:22
    iptables -t nat -A PREROUTING -i vmbr0 -p tcp -s 0/0 -d [IP PUBLIQUE] --destination-port 3022 -j DNAT --to 10.10.101.30:22
    iptables -t nat -A PREROUTING -i vmbr0 -p tcp -s 0/0 -d [IP PUBLIQUE] --destination-port 3306 -j DNAT --to 10.10.101.30:3306
    iptables -t nat -A PREROUTING -i vmbr0 -p tcp -s 0/0 -d [IP PUBLIQUE] --destination-port 2022 -j DNAT --to 10.10.101.20:22
    iptables -t nat -A PREROUTING -i vmbr0 -p tcp -s 0/0 -d [IP PUBLIQUE] --destination-port 2080 -j DNAT --to 10.10.101.20:80
    
    #
    #    FW > NET
    #
    iptables -A OUTPUT -m state --state NEW -j ACCEPT
    
    #
    #    VM > NET
    #
    iptables -A FORWARD -i vmbr0 -o vmbr0 -s 10.10.101.0/24 -d 0/0 -m state --state NEW -j ACCEPT
    
    #
    #    NET > FW
    #
    iptables -A INPUT -i vmbr0 -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
    iptables -A INPUT -i vmbr0 -p tcp -s 0/0 -m state --state NEW -m multiport --destination-port 22 -j ACCEPT
    iptables -A INPUT -i vmbr0 -p tcp -s 0/0 -m state --state NEW -m multiport --destination-port 80 -j ACCEPT
    iptables -A INPUT -i vmbr0 -p tcp -s 0/0 -m state --state NEW -m multiport --destination-port 8006 -j ACCEPT
    
    #
    #    NET > VM
    #
    iptables -A FORWARD -i vmbr0 -p tcp -s 0/0 -d 10.10.101.20/32 -m state --state NEW -m multiport --destination-port 22,80 -j ACCEPT
    iptables -A FORWARD -i vmbr0 -p tcp -s 0/0 -d 10.10.101.30/32 -m state --state NEW -m multiport --destination-port 22,3306 -j ACCEPT
    iptables -A FORWARD -i vmbr0 -p tcp -s 0/0 -d 10.10.101.40/32 -m state --state NEW -m multiport --destination-port 22,80 -j ACCEPT
    
    #
    #    LOCALHOST > LOCALHOST
    #
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    #
    #    LOGS (DEBUG ONLY)
    #
    # iptables -A INPUT -j LOG
    # iptables -A FORWARD -j LOG
    # iptables -A OUTPUT -j LOG
    
    #
    #  Final rules
    #
    iptables -A INPUT      -j DROP
    iptables -A OUTPUT     -j DROP
    iptables -A FORWARD    -j DROP
    
    iptables-save > /root/iptables.rules
    • [^] # -1 ? Vraiment ?

      Posté par  . Évalué à 1. Dernière modification le 01 décembre 2016 à 19:06.

      Alors j'avoue que je poste très peu ici, même si je lis pratiquement tout, que le karma comment dire … mais là va falloir que le moinsseur compulsif m'explique en quoi mon post est inutile !!!

      C'est amusant il passe souvent des demandes de participation au contenu de DLFP, que j'avais quelques idées de journaux, mais là je peux vous dire que ca refroidit salement :-(

      • [^] # Re: -1 ? Vraiment ?

        Posté par  . Évalué à 2.

        bon allez je t'explique :), ne boude plus

        sur les forums en général c'est celui qui pose la question qui vote, la plupart du temps il n'y en a pas si tu regarde la plupart des postes c'est maxi a +3 sauf blagounette super drôle.

        ta réponse a du effrayer un poil, elle est a mon gout limite hors sujet par rapport a la question d'origine mais rien de grave :) pas de quoi foueter un chat, d'ailleurs tu es repassé en positif.

        j'attend avec hate tes journaux, je te conseille de les poster le mardi ou mercredi mais surtout pas le vendredi !!!

  • # Autant de ligne ?

    Posté par  . Évalué à 1.

    Merci de ta réponse et de ton script :o

    Mais je n'aurais jamais trouvé tout ça seul en fait.. C'est super compliqué, tu utilise un serveur kimsufi toi aussi et ton proxmox est en quelle version ? :)

    Merci pour tout !

    • [^] # Re: Autant de ligne ?

      Posté par  . Évalué à 2.

      Bah de rien, c'est vrai que ca peut être un poil compliqué au départ, surtout sur une seule adresse IP.
      Avant j'utilisais un script qui venait de chez Fridu, qui mangeait des fichiers de config.
      Quand je suis passé à Proxmox 4 et surtout LXC, je me suis replongé dans les règles iptables … et aussi très aidé par un pote admin réseaux :-).

      Sinon j'ai un kimsufi aussi et mon proxmox est en version 4.3.10, la dernière je pense.

      Par contre, tu vas avoir des modifications à faire dans le script que je te fournis, ca ne marche pas tout seul comme ca "hors la boite" ;-).

      • [^] # Re: Autant de ligne ?

        Posté par  . Évalué à 1. Dernière modification le 01 décembre 2016 à 18:25.

        Hahaa oui je m'en doute :)

        Mais je ne comprend pas la première partie :

        if [ -x /usr/bin/logger ]; then
        logger -p info "Activating firewall script"
        fi
        modprobe ip_conntrack || exit 1
        modprobe ip_conntrack_ftp || exit 1
        modprobe ip_nat_ftp || exit 1

        iptables -P OUTPUT ACCEPT
        iptables -P INPUT ACCEPT
        iptables -P FORWARD ACCEPT

        cat /proc/net/ip_tables_names | while read table; do
        iptables -t $table -L -n | while read c chain rest; do
        if test "X$c" = "XChain" ; then
        iptables -t $table -F $chain
        fi
        done
        iptables -t $table -X
        done

        echo 1 > /proc/sys/net/ipv4/ip_forward

        ip addr flush dev vmbr0 scope"

        je ne comprends pas ce qu'elles font :/

        • [^] # Re: Autant de ligne ?

          Posté par  . Évalué à 1.

          Alors tu n'auras pas de réponses sur tout, comme je disais, c'est un pote admin réseaux qui en a écrit une partie, et je ne me rappelle plus forcement des explication sur le moment.

          En même temps, en 1 an je n'y ai pas touché …

          Donc :

          if [ -x /usr/bin/logger ]; then
          logger -p info "Activating firewall script"
          fi

          Ca c'est juste pour mettre une entrée dans syslog quand le script est lancé.
          C'est un peu du debug, tu peux l'enlever.

          modprobe ip_conntrack || exit 1
          modprobe ip_conntrack_ftp || exit 1
          modprobe ip_nat_ftp || exit 1

          Ca c'est pour activer le suivi de connexion en FTP, pour faire du FTP "actif".
          Je m'en servais avant mais plus maintenant.
          Donc si tu n'installe pas de serveur FTP, tu peux enlever aussi.

          iptables -P OUTPUT ACCEPT
          iptables -P INPUT ACCEPT
          iptables -P FORWARD ACCEPT

          Ca crée le comportement par défaut des règles OUTPUT, INPUT, FORWARD.
          Mais ca me semble surprenant que ca soit ACCEPT par défaut …

          cat /proc/net/ip_tables_names | while read table; do
          iptables -t $table -L -n | while read c chain rest; do
          if test "X$c" = "XChain" ; then
          iptables -t $table -F $chain
          fi
          done
          iptables -t $table -X
          done

          Ca pour être franc, c'est mon pote qui l'a mis, il m'avait expliqué à l'époque, mais il semblerait que j'ai oublié.
          Je dirais que ca parcoure des régles pour en faire quelque chose.

          echo 1 > /proc/sys/net/ipv4/ip_forward

          Ca c'est pour activer le NAT (1 IP publique => des IP privées).
          C'est le plus important pour toi, et de mémoire, ce qu'on ne peut pas faire dans l'interface de PROXMOX.

          ip addr flush dev vmbr0 scope

          Ca c'est pour configurer le bridge réseau utilisé par PROXMOX (vmbr0).

          Si des pros de iptables passent dans le coin pour de plus amples explications, je les en remercierais aussi beaucoup :-).

          • [^] # Re: Autant de ligne ?

            Posté par  . Évalué à -1.

            Merci vraiment pour le temps que tu perds avec moi :o

            Donc je penses que j'ai compris le principal.
            Mais si ça te gène pas j'aimerais juste partir sur de petite base (que je ne sais peut être pas et pourtant je te jure que j'ai fais TOUS les sites possibles pour avoir de l'aide…)

            Donc premièrement lors de la création de la VM il faut mettre sa carte réseau sur NAT ou accès par pont (vrm0 ? vrm1?) ?

            voila un petit schéma de ce que j'arrive à faire :

            Internet <- proxmox OK logique… :D
            proxmox <-> VM1 ok (test avec ping)
            VM1 -> Internet fonctionne pas

            j'ai rajouté juste cette table :
            iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o vmbr0 -j SNAT --to 10.0.1.254

            Je dois rajouter une table pour que le port 80 soit ouvert ? mais je vais perdre l'accès à mon interface web si je redirige le port ?

            Je penses que après ça, si j'y arrive, je te laisse tranquille et je ferais des recherches plus approfondis sur les iptables..

            Encore merci d'avance !!!!!

            • [^] # Re: Autant de ligne ?

              Posté par  . Évalué à 1.

              Donc premièrement lors de la création de la VM il faut mettre sa carte réseau sur NAT ou accès par pont (vrm0 ? vrm1?) ?

              Attention ton bridge semble s'appeller vrm0 chez toi, ca ne marchera pas sans renommer mes vmbr0.
              Moi j'utilise le bridge (pont) vmbr0 pour tous mes containers LXC.

              D'ailleurs tu crees des containers LXC ou des VM KVM ?

              Ta règle

              iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o vmbr0 -j SNAT --to 10.0.1.254

              Ma règle

              iptables -t nat -A POSTROUTING -o vmbr0 -s 10.10.101.0/24 ! -d 10.10.101.0/24 -j SNAT --to MON_IP_PUBLIQUE

              Je crois que ta règle n'est pas bonne pour "NATer" tes ip privées sur ton ip publique.

              Sinon oui, si tu veux rediriger le port 80 sur une de tes VM/container, il n'est plus disponible pour aller sur un autre.
              C'est pour ca que j'ai du PAT sur le port 22 (les 2022, 3022, 4022) par exemple de chaque container.
              Mais le port 3306 (MySQL) est directement visible sur le net (pour que je puisse y accéder avec phpmyadmin depuis mon poste).

              J'ai un NGINX en proxy sur l'hyperviseur, pour faire de la redirection vers le bon container en fonction du nom de domaine. C'est lui qui mange tous les appels sur le port 80 et redirige en fonction.
              En gros mes containers web (le port 80) ne sont pas exposés sur le net.
              Oui je sais ca rajoute de la complexité/configuration…

              Bienvenu dans le monde de l'admin (ou dans une moindre mesure du DevOps mais là je vais me faire taper…).

              • [^] # Re: Autant de ligne ?

                Posté par  . Évalué à 1.

                Attention ton bridge semble s'appeller vrm0 chez toi, ca ne marchera pas sans renommer mes vmbr0.
                Moi j'utilise le bridge (pont) vmbr0 pour tous mes containers LXC.
                

                Le bridge correspond au pont entre proxmox et internet ou LAN ? moi vrm0 pour le pont internet et vrm1 pour le LAN

                D'ailleurs tu crees des containers LXC ou des VM KVM ?
                

                Ha nan justement je les crées directement dans mon noeud fait par défaut… :o

                Sinon oui, si tu veux rediriger le port 80 sur une de tes VM/container, il n'est plus disponible pour aller sur un autre. C'est pour ca que j'ai du PAT sur le port 22 (les 2022, 3022, 4022) par exemple de chaque container.
                

                Hola alors la je ne te suis plus je ne connais pas du tout le PAT :/

                J'ai un NGINX en proxy sur l'hyperviseur, pour faire de la redirection vers le bon container en fonction du nom de domaine. C'est lui qui mange tous les appels sur le port 80 et redirige en fonction.
                

                Il me semble avoir vue PFsense pour sa non ? Je l'ai au travail il me semble

                Ha oui :o je ne m'attendais pas à ça !

                • [^] # Re: Autant de ligne ?

                  Posté par  . Évalué à 2.

                  j'ai pas tout lu mais il te faut :

                  -> du routage avec le echo 1 > /proc/sys/net... ip_forward pour que les flux puissent passer de vrm0 à vrm1 et revenir, rien à voir avec le NAT,

                  -> la regle de NAT, en (SNAT ou MASQUERADE) sur la chaine POSTROUTING et qui va s'appliquer sur la carte vers internet (vrm0), pour que ce qui sort de tes VMs, et qui va aller sur internet soit "caché" derriere l'IP de vrm0

                  si ensuite tu as plusieurs VMs avec des services identiques (web, ssh),
                  tu peux soit faire des ports differents (le PAT), soit mettre un proxy/reverse, qui va recevoir tout le flux, disons web (port 80), regarder pour quel domaine c'est, et l'envoyer vers la bonne VM.

                  cela va marcher pour certains flux (http/https par exemple), mais cela ne fonctionnera pas forcement pour d'autres (email, ftp…)

                  • [^] # Re: Autant de ligne ?

                    Posté par  . Évalué à 1.

                    Merci beaucoup NeoX

                    Du coup j'ai tout réinstallé pour partir sur une base propre avec tous les tests que j'avais fais…

                    Je me suis rendu dans le répertoire /etc/init.d ou j'ai créer un fichier "proxmox" ou dedans j'ai renseigné la première ligne "echo 1 > /proc/sys/net/ipv4/ip_forward"

                    Pour test je vais créer une seule VM pour essayer déjà de la faire accéder à internet et ouvrir sont port 5000 pour tester via un telnet ! Une fois tout ça configuré je pense que j'aurais compris le fonctionnement et le paramétrage à effectué pour mes autres requête..

                    Donc j'aurais par exemple sur deux VM une interface web mais sur des ports différents donc ça ne gène pas ?
                    Et si je créer un proxy je dois installer PFSense ?

                    Merci !

                    • [^] # Re: Autant de ligne ?

                      Posté par  . Évalué à 2.

                      Je me suis rendu dans le répertoire /etc/init.d ou j'ai créer un fichier "proxmox" ou dedans j'ai renseigné la première ligne "echo 1 > /proc/sys/net/ipv4/ip_forward"

                      pour faire cela il y a le fichier /etc/sysctl.conf
                      le systeme appliquera alors le reglage pour toi
                      la syntaxe change un peu, mais l'ip_forward doit etre documenté dans le fichier

                      ensuite, au dela de cet ip_forward pour passer de vrm0 à vrm1 et retour,
                      il te faudra le NAT en sortie sur vrm0

                      pour que tes VMs soient cachées derriere l'IP reelle (publique) de ton proxmox.

                      Donc j'aurais par exemple sur deux VM une interface web mais sur des ports différents donc ça ne gène pas ?

                      avec 2 VMs, tu peux avoir le meme port configuré sur les VM (port 80 pour le web)
                      c'est sur le proxmox qu'il faudra determiner le port ou il va ecouter, et à qui il va renvoyer.
                      et c'est là qu'il faudra jouer de l'iptables pour faire les regles DNAT pour changer la destination du paquet

                      par exemple
                      proxmox, port 8081 => vm1, port 80
                      proxmox, port 8082 => vm2, port 80

                      Et si je créer un proxy je dois installer PFSense ?

                      pfsense, c'est une solution complete de firewalling,
                      ca fait donc ce que fait iptable, mais cela peut aussi faire (reverse)proxy

                      pfsense devra s'installer dans une VM
                      si tu veux faire les choses proprements, il faudrait prendre une IP failover (c'est une option suivant les contrats que tu as avec kimsufi)

                      tu aurais alors une carte du pfsense directement exposée au public sur vrm0 du proxmox, avec l'IP failover,
                      une carte "interne" qui dialogue avec tes VMs sur vrm1

                      les VMs devront alors avoir le pfsense en passerelle de sortie.
                      et le pfsense aura la passerelle de kimsufi (cf les manuels ovh/soyoustart/kimsufi pour configurer une VMs sur une IP failover.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.