ajout d'une configuration pour faire du NAT entre WAN et LAN
This commit is contained in:
parent
506dfb1086
commit
a3ecc212dd
scripts/server-dhcp
|
@ -0,0 +1,88 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
# Objectif : Faire du NAT du LAN vers le WAN
|
||||
|
||||
# Import des fonctions utilitaires communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
||||
# Vérification des droits root
|
||||
check_root
|
||||
|
||||
echo "[+] Détection des interfaces réseau..."
|
||||
|
||||
# Détection de l'interface WAN (par défaut la passerelle)
|
||||
WAN_IF=$(ip route | grep default | awk '{print $5}' | head -n 1)
|
||||
if [[ -z "$WAN_IF" ]]; then
|
||||
echo "[❌] Aucune interface WAN détectée (pas de route par défaut)."
|
||||
exit 1
|
||||
fi
|
||||
echo "[+] Interface WAN détectée : $WAN_IF"
|
||||
|
||||
# Détection de l'interface LAN (IP privée autre que WAN_IF)
|
||||
LAN_IF=""
|
||||
LAN_IP=""
|
||||
LAN_SUBNET=""
|
||||
|
||||
while IFS= read -r line; do
|
||||
IFACE=$(echo "$line" | awk '{print $2}')
|
||||
IP_CIDR=$(echo "$line" | awk '{print $4}')
|
||||
IP_ADDR=${IP_CIDR%%/*}
|
||||
|
||||
# Vérifie que l'interface n'est pas celle du WAN et possède une IP privée
|
||||
if [[ "$IFACE" != "$WAN_IF" ]] && (
|
||||
[[ "$IP_ADDR" =~ ^192\.168\. ]] ||
|
||||
[[ "$IP_ADDR" =~ ^10\. ]] ||
|
||||
([[ "$IP_ADDR" =~ ^172\. ]] && [[ $(echo "$IP_ADDR" | cut -d. -f2) -ge 16 ]] && [[ $(echo "$IP_ADDR" | cut -d. -f2) -le 31 ]])
|
||||
); then
|
||||
LAN_IF="$IFACE"
|
||||
LAN_IP="$IP_ADDR"
|
||||
LAN_SUBNET="$IP_CIDR"
|
||||
break
|
||||
fi
|
||||
done < <(ip -o -4 addr show)
|
||||
|
||||
if [[ -z "$LAN_IF" || -z "$LAN_SUBNET" ]]; then
|
||||
echo "[❌] Impossible de détecter l'interface LAN ou le sous-réseau."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[+] Interface LAN détectée : $LAN_IF ($LAN_IP / $LAN_SUBNET)"
|
||||
echo "[ℹ️] Toutes les interfaces réseau :"
|
||||
ip -o -4 addr show | awk '{print "- Interface:", $2, "=> IP:", $4}'
|
||||
|
||||
if [[ "$LAN_IF" == "$WAN_IF" ]]; then
|
||||
echo "[❌] Erreur : L'interface LAN et WAN sont identiques ($WAN_IF). Corrige ta configuration réseau."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$LAN_IF" ]]; then
|
||||
echo "[+] Interface LAN détectée : $LAN_IF"
|
||||
echo "[+] Sous-réseau LAN détecté : $LAN_SUBNET"
|
||||
else
|
||||
echo "[⚠️] Aucune interface réseau avec une IP privée détectée."
|
||||
echo " Vérifiez votre configuration réseau ou connectez-vous à un réseau local."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
echo "[+] Mise à jour et installation des paquets nécessaires..."
|
||||
apt update -y
|
||||
apt install -y iptables iproute2
|
||||
|
||||
echo "[+] Activation de l'IP forwarding..."
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
sed -i '/^#net.ipv4.ip_forward=1/s/^#//' /etc/sysctl.conf
|
||||
sysctl -p
|
||||
|
||||
echo "[+] Nettoyage des anciennes règles iptables NAT..."
|
||||
iptables -t nat -F
|
||||
iptables -F
|
||||
|
||||
echo "[+] Mise en place du NAT (MASQUERADE)..."
|
||||
iptables -t nat -A POSTROUTING -s "$LAN_SUBNET" -o "$WAN_IF" -j MASQUERADE
|
||||
|
||||
echo "[+] Sauvegarde des règles iptables..."
|
||||
apt install -y iptables-persistent
|
||||
netfilter-persistent save
|
||||
|
||||
echo "[✅] NAT opérationnel : $LAN_SUBNET sort par $WAN_IF"
|
Loading…
Reference in New Issue