#!/bin/bash # Importer les fonctions communes source "$(dirname "$0")/../common/common_utils.sh" # Vérifier si le script est exécuté en root check_root # Installer dnsmasq s'il n'est pas déjà installé if ! command -v dnsmasq &> /dev/null; then echo "Installation de dnsmasq..." apt update && apt install -y dnsmasq else echo "dnsmasq est déjà installé." fi # Obtenir l'adresse IP du serveur sur l'interface principale IP_SERVEUR=$(ip -4 addr show $(ip route show default | awk '/default/ {print $5}') | grep -oP '(?<=inet\s)\d+(\.\d+){3}') if [[ -z "$IP_SERVEUR" ]]; then echo "Impossible de déterminer l'adresse IP du serveur." exit 1 fi # Vérifier si l'IP est dans une plage privée autorisée if [[ "$IP_SERVEUR" =~ ^10\..* || "$IP_SERVEUR" =~ ^192\.168\..* || "$IP_SERVEUR" =~ ^172\.(1[6-9]|2[0-9]|3[0-1])\..* ]]; then echo "Adresse IP privée détectée : $IP_SERVEUR" else echo "Erreur : L'adresse IP $IP_SERVEUR n'est pas dans un réseau privé." exit 1 fi # Déduire le sous-réseau en fonction de l'adresse IP détectée if [[ "$IP_SERVEUR" =~ ^10\. ]]; then SOUS_RESEAU=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1".0.0.0/8"}') DHCP_START=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1".0.0.10"}') DHCP_END=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1".0.0.100"}') elif [[ "$IP_SERVEUR" =~ ^172\.(1[6-9]|2[0-9]|3[0-1])\. ]]; then SOUS_RESEAU=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2".0.0/16"}') DHCP_START=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2".0.10"}') DHCP_END=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2".0.100"}') elif [[ "$IP_SERVEUR" =~ ^192\.168\. ]]; then SOUS_RESEAU=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2"."$3".0/24"}') DHCP_START=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2"."$3".10"}') DHCP_END=$(echo "$IP_SERVEUR" | awk -F '.' '{print $1"."$2"."$3".100"}') fi # Demander le nom de domaine read -p "Entrez le domaine (ex: monreseau.local): " DOMAINE if [[ -z "$DOMAINE" ]]; then echo "Domaine invalide." exit 1 fi # Configurer dnsmasq echo "Configuration de dnsmasq..." cat < /etc/dnsmasq.conf # Configuration de dnsmasq # Interface réseau principale interface=$(ip route show default | awk '/default/ {print $5}') # Activer le service DHCP dhcp-range=${DHCP_START},${DHCP_END},12h # Associer le nom de domaine domain=${DOMAINE} # Activer la mise à jour DNS dynamique pour les clients DHCP dhcp-authoritative expand-hosts domain-needed bogus-priv no-resolv server=9.9.9.9 server=149.112.112.112 # Activer la journalisation pour voir les affectations DHCP/DNS log-queries log-dhcp EOF # Redémarrer dnsmasq pour appliquer les modifications systemctl restart dnsmasq echo "Configuration terminée avec succès!" echo "Serveur DHCP/DNS fonctionnel sur $IP_SERVEUR" echo "Les clients recevront une IP entre $DHCP_START et $DHCP_END et seront associés au domaine $DOMAINE"