use new dhcp

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-04-06 18:23:27 +02:00
commit dca0819fac
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
2 changed files with 1 additions and 92 deletions

View file

@ -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
}

View file

@ -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 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 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}" /opt/two/bin/dhcp -name "${vpc_name}_br-${subnet_id}" -subnet "${subnet}" -gateway "${gateway_ip}"
systemctl start "dnsmasq@${vpc_name}_br-${subnet_id}.service"
} }
return 0 return 0
} }