Catégorie : Proxmox

  • Transformer un ubuntu en contrôleur de domaine avec Samba

    Par défaut les contrôleurs de domaines se font avec un windows server mais il est aussi possible d’en créer avec linux notamment avec Samba4

    1 – Prérequis

    • Mettre une ip fixe sur son linux

    Dans notre exemple nous avons mis 192.168.0.10

    • Vérifier le nom du linux / serveur
    hostname

    Dans notre exemple le serveur s’appele ADDC

    • Éditer le fichier hosts
    nano /etc/hosts

    Ajouter la ligne

    IP nom.nomdudomaine nom

    • Si on as fait notre serveur en tant que conteneur proxmox il faut que unprivileged container soit à false. En effet le conteneur doit être un conteneur privilégié pour pouvoir gérer lui même les ip et que ce ne soit pas proxmox qui gere sont ip
    • Si on as fait notre serveur en tant que conteneur proxmox il faut que le nesting soit à true. En effet, le conteneur doit pouvoir gérer lui même ses namespaces et que ce ne soit pas proxmox qui gère ça

    2 – Installation Samba4

    • On mets à jour le serveur
    apt -y update && apt -y upgrade
    • On installe tous les paquets nécessaires
    export DEBIAN_FRONTEND=noninteractive
     
    apt -y install acl apt-utils attr autoconf bind9utils binutils \
        bison build-essential chrpath curl debhelper dnsutils \
        docbook-xml docbook-xsl flex gcc gdb git glusterfs-common gzip \
        heimdal-multidev hostname htop krb5-config krb5-user krb5-kdc \
        lcov libacl1-dev libarchive-dev libattr1-dev \
        libavahi-common-dev libblkid-dev libbsd-dev libcap-dev libcephfs-dev \
        libcups2-dev libdbus-1-dev libglib2.0-dev libgnutls28-dev libgpgme11-dev \
        libicu-dev libjansson-dev libjs-jquery libjson-perl libkrb5-dev libldap2-dev \
        liblmdb-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpcap-dev \
        libpopt-dev libreadline-dev libsystemd-dev libtasn1-bin libtasn1-dev \
        libunwind-dev lmdb-utils locales lsb-release make mawk mingw-w64 patch \
        perl perl-modules pkg-config procps psmisc \
        python3 python3-dbg python3-dev python3-dnspython python3-gpg \
        python3-iso8601 python3-markdown python3-matplotlib python3-pexpect \
        rng-tools rsync sed sudo tar tree uuid-dev xfslibs-dev xsltproc zlib1g-dev \
        ccache python3-cryptography python3-pyasn1 python3-setproctitle wget \
        libaio-dev libgpgme-dev nettle-dev python3-all-dev python3-dbg \
        python3-dev python3-dnspython

    Ne surtout pas oublier export DEBIAN_FRONTEND=noninteractive . ça permet à samba de se faire une première configuration basique sans devoir poser des questions qui sont un peu prématurées dans l’état actuel des choses

    • Pour ubuntu uniquement, on installe le pack de langue
    apt -y install language-pack-en checkinstall
    • On fait le ménage dans toutes les installations
    apt -y autoremove
    apt -y autoclean
    apt -y clean
    • On télécharge le code source de la dernière version de samba
    wget -O samba-latest.tar.gz https://download.samba.org/pub/samba/samba-latest.tar.gz
    tar zxvf samba-latest.tar.gz
    • On a un dossier samba-4.24.0, on va dedans
    • On configure le compilateur
    ./configure \
    --prefix=/usr --exec-prefix=/usr --enable-fhs \
    --libdir=/usr/lib/x86_64-linux-gnu \
    --sysconfdir=/etc --localstatedir=/var \
    --with-systemd --systemd-install-services --with-systemddir=/etc/systemd/system \
    --systemd-smb-extra=NotifyAccess=all --systemd-nmb-extra=NotifyAccess=all \
    --systemd-winbind-extra=NotifyAccess=all --systemd-samba-extra=NotifyAccess=all \
    --with-lockdir=/var/run/samba \
    --enable-selftest
    • On compile Samba (préparez un café ou autre, ça peux prendre plusieurs minutes)
    make -j && make -j install
    • On va verrouiller l’installation pour etre sûr de ne pas récuperer les paquets des dépots ubuntu qui sont plus anciens
    apt-mark hold samba
    apt-mark showhold

    3 – Création du domaine

    • On va nettoyer s’il y a des anciennes installations
    mv --backup=t /etc/samba/smb.conf /etc/samba/smb.conf.backup
    mv --backup=t /etc/krb5.conf /etc/krb5.conf.backup
    rm -rf /var/lib/samba/private/*

    Rien à nettoyer et c’est normal puisque l’on part, dans notre exemple, d’une installation vierge

    • Création du domaine
    samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL \
    	--realm=HOKUTOTOKISAMA.LAN --domain=HOKUTOTOKISAMA --option="dns forwarder=192.168.0.103"

    Realm = nom du domaine complet

    Domain = nom du domaine sans extension

    dns forwarder = ip du serveur dns (la plupart du temps sa box)

    • On modifie le mot de passe de l’utilisateur Administrator qui a été généré par le domaine
    samba-tool user setpassword administrator
    • On désactive l’expiration du mot de passe de l’utilisateur Administrator
    samba-tool user setexpiry administrator --noexpiry
    • On crée un utilisateur qui va nous servir pour entrer les machines dans le domaine – Dans notre exemple on va l’appeler hokuto
    samba-tool user create hokuto
    • On désactive l’expiration du mot de passe de notre utilisateur
    samba-tool user setexpiry hokuto --noexpiry
    • On rajoute notre utilisateur dans le groupe des administrateurs du domaine
    samba-tool group addmembers "Domain Admins" hokuto
    • On récupère la configuration par défaut de kerberos
    cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
    • On configure notre serveur en tant que serveur dns. En effet, les machines du domaine vont demander au contrôleur de domaine comment résoudre les ip
    nano /etc/resolv.conf

    Mettre les informations suivantes dans le fichier

    nameserver ipduserveur
    search domaineavecextension
    domain domaineavecextension
    • Vérification d’utilisation du port 53. Port utilisé par le dns de Samba
    ss -tunpel | grep ":53 "

    Si on a des choses comme dans l’image suivante alors il faut suivre les étapes suivantes sinon passer à l’étape Démarrage de Samba

    • Désactivation du listener de systemd-resolve
    nano /etc/systemd/resolved.conf

    Décommenter la ligne DNSStubListener et mettre la valeur à no

    • Arrêt et désactivation du service listener
    systemctl stop systemd-resolved
    systemctl disable systemd-resolved.service
    • Vérification
    ss -tunpel | grep ":53 "

    On est tout bon

    4 – Démarrage de Samba

    • Arrêt et désactivation des anciens services
    systemctl stop smbd nmbd winbindd smb nmb winbind
    systemctl disable smbd nmbd winbindd smb nmb winbind

    Si certains services sont en failed c’est normal, cela veux dire qu’ils ne sont pas présents sur le serveur

    • Activation et démarrage de samba
    systemctl unmask samba
    systemctl enable samba
    systemctl start samba
    sleep 5
    samba-tool processes

    Tout les services sont correctement démarrés

    • Création d’une zone de recherche inversée de façon à ce que notre contrôleur de domaine puisse faire la résolution dns des appareils du domaine
    samba-tool dns zonecreate nomserveur ip.in-addr.arpa --username=nomadministrator

    Exemple

    samba-tool dns zonecreate ADDC 0.168.192.in-addr.arpa --username=administrator

    Notre serveur s’appelle ADDC

    On est sur la plage d’ip 192.168.0….

    5 – Test

    Pour tester, on peux essayer de rentrer un appareil sur le domaine

    Le tuto pour rentrer un appareil windows sur le domaine est ici

    Le tuto pour rentrer un appareil linux sur le domaine est ici

  • Installer des images docker dans un conteneur LXC Proxmox

    Depuis la version 9.1 de proxmox il est possible de créer des conteneurs lxc à partir d’image docker. Voici comment faire

    1 – Télécharger l’image docker

    • Se rendre sur docker hub pour trouver l’image que l’on veux
    • Copier l’url en ignorant la partie hub.docker.com/r/

    Dans notre exemple on copie itzg/minecraft-bedrock-server

    • Sur Proxmox aller dans Local puis CT Templates
    • Cliquer sur Pull from OCI Registry
    • Dans Reference : mettre ce que l’on a copier puis cliquer sur Query Tags
    • Dans tag on va retrouver tous les tags des versions de notre image
    • On choisi la version que l’on veux puis on fais Download

    Notre image a bien été rajoutée dans les CT Templates

    2 – Créer le conteneur LXC

    • On cliques sur Create CT
    • Remplir le CT Id, le hostname, le password et le confirm password (comme pour tous les conteneurs LXC)
    • Bien penser à laisser cocher Unprivileged et Nesting (Attention, certaines images docker peuvent demander des conteneurs privilégiés et dans ce cas décocher unpriviliged, mais cela nuit à la sécurité dans le sens où le root du conteneur sera alors root de l’hôte)
    • Dans template, on choisi notre image Docker
    • Continuer avec Disks, CPU, Memory
    • Dans Network, il faut obligatoirement mettre, au minimum l’ipv4 en statique et définir une ip v4, au risque d’avoir une erreur (si on n’a pas d’ipv6, on mets en static mais on ne rempli rien)
    • Plus qu’à finir avec DNS et confirm et notre Conteneur est crée

    3 – Paramétrage

    Certaines images docker demandent des paramètres. Les paramètres se trouvent sur l’image dans options puis Environment

    • Sélectionner Environment puis Edit
    • On peux alors rajouter toutes les variables d’environnement que l’on veux via « Add Variable »
    • En général les variables possibles sont données par le créateur de l’image sur la page docker hub

    4 – Démarrage du conteneur et Tests

    • On démarre le conteneur comme n’importe quel conteneur
    • Puis on peux tester en lançant minecraft et en se connectant sur le serveur
  • Utiliser ProxMox en ligne de commandes

    Quelques lignes de commandes utiles pour pouvoir utiliser proxmox en ligne de commandes

    1 – Mettre à jour les modèles de conteneurs

    pveam update

    2 – Lister les modèles disponibles

    pveam available

    on peux filtrer avec l’argument –section suivi de la section, par exemple

    pveam available --section system

    on peux aussi faire un | grep après la commande pour grep suivant le texte

    pveam available --section system | grep ubuntu

    3 – Télécharger un modèle pour qu’il soit disponible dans ct templates

    pveam download local nomdumodele, par exemple

    pveam download local debian-12-turnkey-zoneminder_18.0-1_amd64.tar.gz

    4 – Lister les modèles de ct templates

    pveam list local

    5 – Lister les conteneurs lxc

    pct list

    6 – Voir la configuration d’un conteneur

    pct config idduconteneur

    on peux aussi voir la configuration directement dans un fichier pour le modifier à chaud

    nano /etc/pve/lxc/idconteneur.conf

    7 – Entrer directement dans le shell d’un conteneur

    pct enter idduconteneur

    on quitte avec exit

    8 – Démarrer ou arrêter un conteneur

    pct start idduconteneur
    pct shutdown idduconteneur

    9 – Modifier la configuration d’un conteneur à chaud

    pct set idduconteneur -optionamodifier valeur

    10 – Créer un conteneur

    pct create id image \
    -- hostname nom \
    -- cores nombresdecoeur \
    -- memory memoire \
    -- swap swap \
    -- rootfs emplacementdisque:taille \
    -- net0 informations reseau
    -- unprivileged (0 ou 1) \
    -- features lesoptions \
    -- tags lestags \
    -- password motdepasseduroot \
    -- start (0 pour pas automatique, 1 pour automatique)

    11 – Supprimer un conteneur

    pct destroy idduconteneur --purge

    attention, le conteneur dois être arrêté