From dca0819facbbe64df2d9ae29ba8d6d01d5585022 Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Mon, 6 Apr 2026 18:23:27 +0200 Subject: [PATCH] use new dhcp Signed-off-by: GnomeZworc --- lib/dhcp.sh | 89 --------------------------------------------------- lib/subnet.sh | 4 +-- 2 files changed, 1 insertion(+), 92 deletions(-) delete mode 100644 lib/dhcp.sh diff --git a/lib/dhcp.sh b/lib/dhcp.sh deleted file mode 100644 index 008fa7d..0000000 --- a/lib/dhcp.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash - -# Fonction pour convertir une adresse IP en entier -function ip_to_int() { - local ip=$1 - local a b c d - IFS=. read -r a b c d <<< "$ip" - echo "$((a * 256 ** 3 + b * 256 ** 2 + c * 256 + d))" -} - -# Fonction pour convertir un entier en adresse IP -function int_to_ip() { - local int=$1 - echo "$((int >> 24 & 255)).$((int >> 16 & 255)).$((int >> 8 & 255)).$((int & 255))" -} - -# Fonction pour générer une adresse MAC unique (incrémenter tous les octets) -function int_to_mac() { - local base_mac="00:22:33" # Préfixe de base pour la MAC (4 premiers octets) - local incr=$1 # Incrément global pour les derniers octets - local byte1=$(( (incr >> 16) & 0xFF )) # Incrémenter le premier octet des 2 derniers octets - local byte2=$(( (incr >> 8) & 0xFF )) # Incrémenter le second octet - local byte3=$(( incr & 0xFF )) # Incrémenter le troisième octet - - printf "%s:%02X:%02X:%02X\n" "$base_mac" "$byte1" "$byte2" "$byte3" -} - -function generate_dhcp_file { - # CIDR de départ (ex: "10.10.10.0/24") - cidr="${1}" - gateway_cidr=${3} - gateway="$(echo "${gateway_cidr}" | cut -d\/ -f1)" - subnet="$(echo "${cidr}" | cut -d\/ -f1)" - output_file="/etc/dnsmasq.d/${2}.conf" - - # Extraire l'adresse de réseau et le masque - IFS='/' read -r network mask <<< "$cidr" - network_int=$(ip_to_int "$network") - - # Calcul du masque - netmask=$(( 0xFFFFFFFF ^ ((1 << (32 - mask)) - 1) )) - - # Calcul de l'adresse de fin - end_ip=$((network_int + ( ( 0xFFFFFFFF ^ netmask )))) - - # Calcul du nombre d'IP dans la plage - num_ips=$((end_ip - network_int + 1)) - - # Vérifier si le nombre d'adresses est correct - if [ "$num_ips" -le 0 ]; then - echo "Erreur dans le calcul de la plage IP. Le CIDR est probablement mal formé." - exit 1 - fi - - # Si trop d'adresses, éviter de les générer toutes à la fois - if [ "$num_ips" -gt 1000000 ]; then - echo "La plage d'adresses est trop grande pour être générée en une seule fois. Essayez avec un plus petit sous-réseau." - exit 1 - fi - - # Vider le fichier de sortie avant d'écrire - > "$output_file" - - echo "no-resolv" >> "$output_file" - echo "dhcp-range=${subnet},static,255.255.255.0,12h" >> "$output_file" - echo "dhcp-option=3,${gateway}" >> "$output_file" - echo "dhcp-option=6,1.1.1.1,8.8.8.8" >> "$output_file" - - # Variables pour l'incrémentation des MAC et IP - mac_incr=0 - ip_incr=$network_int - - # Générer les réservations - for i in $(seq 0 $((num_ips - 1))) - do - # Calculer l'adresse IP - ip=$(int_to_ip "$ip_incr") - - # Calculer l'adresse MAC valide (incrémenter tous les octets) - mac=$(int_to_mac $mac_incr) - - # Ajouter la ligne dans le fichier de configuration - echo "dhcp-host=$mac,$ip" >> "$output_file" - - # Incrémenter les variables - mac_incr=$((mac_incr + 1)) # Incrémenter l'adresse MAC - ip_incr=$((ip_incr + 1)) # Incrémenter l'adresse IP - done -} \ No newline at end of file diff --git a/lib/subnet.sh b/lib/subnet.sh index 3cf6e7e..03a30cc 100644 --- a/lib/subnet.sh +++ b/lib/subnet.sh @@ -82,9 +82,7 @@ function create_subnet { ebtables -A FORWARD --out-interface "br-${subnet_id}" -p arp --arp-op Request --arp-ip-dst "${gateway_ip}" -j DROP ebtables -A FORWARD --out-interface "br-${subnet_id}" -p IPv4 --ip-protocol udp --ip-source-port 67:68 --ip-destination-port 67:68 -j DROP - #generate_dhcp_file "${subnet}" "${vpc_name}_br-${subnet_id}" "${gateway_ip}" - systemctl start "dnsmasq@${vpc_name}_br-${subnet_id}.service" - + /opt/two/bin/dhcp -name "${vpc_name}_br-${subnet_id}" -subnet "${subnet}" -gateway "${gateway_ip}" } return 0 }