« PI Routeur » : différence entre les versions
mAucun résumé des modifications |
|||
| Ligne 3 : | Ligne 3 : | ||
== Objectif == | == Objectif == | ||
* eth0 (WAN) en **client DHCP** – adresse et passerelle obtenues du réseau amont. | * <code>eth0</code> (WAN) en **client DHCP** – adresse et passerelle obtenues du réseau amont. | ||
* eth1 (USB‑Ethernet) en **IP statique {{Mono|10.11.11.1/24}}** – **passerelle** du LAN. | * eth1 (USB‑Ethernet) en **IP statique {{Mono|10.11.11.1/24}}** – **passerelle** du LAN. | ||
* **Serveur DHCP** via {{Mono|dnsmasq}} : plage **{{Mono|10.11.11.100–10.11.11.200}}**, passerelle **{{Mono|10.11.11.1}}**. | * **Serveur DHCP** via {{Mono|dnsmasq}} : plage **{{Mono|10.11.11.100–10.11.11.200}}**, passerelle **{{Mono|10.11.11.1}}**. | ||
Version du 29 novembre 2025 à 23:14
Routeur Raspberry Pi 2 : WAN DHCP, LAN 10.11.11.0/24, DHCP & NAT
Objectif
eth0(WAN) en **client DHCP** – adresse et passerelle obtenues du réseau amont.- eth1 (USB‑Ethernet) en **IP statique Modèle:Mono** – **passerelle** du LAN.
- **Serveur DHCP** via Modèle:Mono : plage **Modèle:Mono**, passerelle **Modèle:Mono**.
- **Routage IPv4** activé et **NAT** (masquerade) avec Modèle:Mono.
- Contexte OS
Sur Raspberry Pi OS **Bookworm**, le réseau est géré par **NetworkManager** (nmcli/nmtui) plutôt que dhcpcd[1][2]. Sur Debian/Raspberry, **nftables** est le framework firewall/NAT recommandé[3].
Prérequis
- Raspberry Pi 2 (ou équivalent) avec Raspberry Pi OS.
- Un adaptateur USB‑Ethernet pour le LAN (peut être nommé Modèle:Mono ou Modèle:Mono).
- Accès Modèle:Mono.
Identifier les interfaces
ip -o link show | awk -F': ' '/eth|enx/{print $2}'
1) Configuration réseau
1.1 Bookworm (NetworkManager)
NetworkManager stocke des « connexions » persistantes dans Modèle:Mono et se gère avec Modèle:Mono[4][5].
# WAN sur eth0 : DHCP client
sudo nmcli con add type ethernet ifname eth0 con-name wan \
ipv4.method auto ipv6.method ignore
# LAN sur eth1 : IP statique 10.11.11.1/24 (sans route par défaut)
sudo nmcli con add type ethernet ifname eth1 con-name lan \
ipv4.method manual ipv4.addresses 10.11.11.1/24 \
ipv4.never-default yes ipv6.method ignore
# Activer les connexions
sudo nmcli con up wan
sudo nmcli con up lan
1.2 Anciennes versions (dhcpcd)
Si le système utilise Modèle:Mono (pré‑Bookworm), définir l’IP statique du LAN dans Modèle:Mono[6].
sudo nano /etc/dhcpcd.conf
# Ajouter :
interface eth1
static ip_address=10.11.11.1/24
# Redémarrer :
sudo systemctl restart dhcpcd
2) Serveur DHCP (dnsmasq)
Installer et configurer **dnsmasq** pour émettre des baux sur le LAN. Les options suivantes viennent de la Modèle:Mono officielle et du fichier d’exemple upstream[7][8].
sudo apt update
sudo apt install -y dnsmasq
# Fichier dédié au LAN
sudo tee /etc/dnsmasq.d/lan.conf >/dev/null <<'EOF'
# Écoute sur l'interface LAN uniquement
interface=eth1
bind-interfaces
# Bonnes pratiques DNS
domain-needed
bogus-priv
# Plage DHCP, masque, bail
dhcp-range=10.11.11.100,10.11.11.200,255.255.255.0,24h
# Passerelle annoncée
dhcp-option=option:router,10.11.11.1
# (Optionnel) DNS fourni aux clients :
# dhcp-option=option:dns-server,10.11.11.1
# Écouter le DNS local si besoin :
# listen-address=10.11.11.1
EOF
sudo systemctl enable --now dnsmasq
- Notes
- Modèle:Mono limite l’écoute à Modèle:Mono (évite d’exposer le service côté WAN)[9].
- Liste des options DHCP lisibles : Modèle:Mono, Modèle:Mono, etc.[10].
- dnsmasq est recommandé pour de petits réseaux et figure dans de nombreux guides Raspberry[11].
3) Routage IPv4 et NAT (nftables)
3.1 Activer l'IP forwarding
Le noyau doit autoriser le passage des paquets entre interfaces[12][13].
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-ip-forward.conf
sudo sysctl -p /etc/sysctl.d/99-ip-forward.conf
3.2 Règles nftables (filtrage + NAT)
- nftables** est le framework de firewall/NAT par défaut recommandé sous Debian ; le service charge Modèle:Mono au démarrage[14][15].
Le **masquerade** (SNAT dynamique) convient aux IP WAN changeantes[16][17].
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
#!/usr/sbin/nft -f
flush ruleset
# Filtrage : autorise LAN->WAN + retours ; bloque le reste en forward
table inet filter {
chain input { type filter hook input priority 0; policy accept; }
chain output { type filter hook output priority 0; policy accept; }
chain forward { type filter hook forward priority 0; policy drop;
ct state established,related accept
iif "eth1" oif "eth0" accept
}
}
# NAT (masquerade sur la sortie WAN)
table ip nat {
chain postrouting { type nat hook postrouting priority 100;
oif "eth0" masquerade
}
}
EOF
sudo systemctl enable --now nftables
sudo nft list ruleset
4) Tests
4.1 Interfaces
ip addr show eth0
ip addr show eth1
- Modèle:Mono doit être en **DHCP** (adresse fournie par le réseau amont).
- Modèle:Mono doit être en **Modèle:Mono**.
- (Avec NetworkManager : Modèle:Mono pour voir les connexions actives[18].)*
4.2 Baux DHCP (dnsmasq)
journalctl -u dnsmasq --no-pager | tail -n 50
Les clients du switch LAN doivent recevoir **Modèle:Mono** et **passerelle Modèle:Mono**[19].
4.3 Routage + NAT
Depuis un client du LAN :
ping 1.1.1.1
curl -s https://ifconfig.me
L’adresse publique observée doit être celle de Modèle:Mono (NAT masquerade)[20].
5) Dépannage & conseils
- **Nom d’interface USB** : si l’USB‑Ethernet n’est pas Modèle:Mono (ex. Modèle:Mono), remplacer ce nom partout (dnsmasq, nftables, nmcli).
- **Conflits DHCP** : un **seul** serveur DHCP sur le LAN (ne pas laisser un autre routeur servir la même plage)[21].
- **Sécurité dnsmasq** : Modèle:Mono évite d’exposer le service côté WAN[22].
- **Persistance firewall** : Modèle:Mono assure le chargement au boot[23].
- **Iptables (héritage)** : possible, mais Debian recommande **nftables**[24].
- **Bookworm & fallback Link‑Local (LLA)** : le fallback DHCP→LLA via NM n’est pas activé par défaut dans Bookworm ; prévu dans Trixie (Debian suivant)[25].
6) Script d’automatisation (Bookworm)
#!/bin/bash
# Routeur Pi 2 – WAN DHCP (eth0), LAN 10.11.11.0/24 (eth1), DHCP & NAT
set -e
# 1) Réseau (NetworkManager)
sudo nmcli con add type ethernet ifname eth0 con-name wan \
ipv4.method auto ipv6.method ignore
sudo nmcli con add type ethernet ifname eth1 con-name lan \
ipv4.method manual ipv4.addresses 10.11.11.1/24 \
ipv4.never-default yes ipv6.method ignore
sudo nmcli con up wan; sudo nmcli con up lan
# 2) DHCP (dnsmasq)
sudo apt update
sudo apt install -y dnsmasq
sudo tee /etc/dnsmasq.d/lan.conf >/dev/null <<'EOF'
interface=eth1
bind-interfaces
domain-needed
bogus-priv
dhcp-range=10.11.11.100,10.11.11.200,255.255.255.0,24h
dhcp-option=option:router,10.11.11.1
EOF
sudo systemctl enable --now dnsmasq
# 3) Routage IPv4
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-ip-forward.conf
sudo sysctl -p /etc/sysctl.d/99-ip-forward.conf
# 4) NAT & firewall (nftables)
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input { type filter hook input priority 0; policy accept; }
chain output { type filter hook output priority 0; policy accept; }
chain forward { type filter hook forward priority 0; policy drop;
ct state established,related accept
iif "eth1" oif "eth0" accept
}
}
table ip nat {
chain postrouting { type nat hook postrouting priority 100;
oif "eth0" masquerade
}
}
EOF
sudo systemctl enable --now nftables
Annexes
Vérifier le modèle de Raspberry Pi
cat /proc/device-tree/model
Références
- ↑ Raspberry Pi Forums – « Getting Started with Network Manager », décrit la bascule vers NetworkManager et la gestion des connexions via nmcli, Oct 14, 2023. https://forums.raspberrypi.com/viewtopic.php?t=357739
- ↑ Electronics‑Lab – « Bookworm – the new version of Raspberry Pi OS » (Debian 12), indiquant NetworkManager par défaut, Oct 24, 2023. https://www.electronics-lab.com/bookworm-the-new-version-of-raspberry-pi-os/
- ↑ Debian Wiki – « nftables », statut par défaut depuis Debian 10, usage conseillé. https://wiki.debian.org/nftables
- ↑ Raspberry Pi Forums – « Getting Started with Network Manager », nmcli/nmtui, chemins des .nmconnection. https://forums.raspberrypi.com/viewtopic.php?t=357739
- ↑ Raspberry Pi Education AU – « Raspberry Pi Network Manager » (nmcli, nmtui, fichiers .nmconnection), 2024. https://education.raspberrypiaustralia.online/network-manager/raspberry-pi-network-manager
- ↑ Raspberry Pi Guide – « Create wireless access point » utilise dhcpcd pour IP statique avant Bookworm. https://raspberrypi-guide.github.io/networking/create-wireless-access-point
- ↑ Man page officielle dnsmasq – options DHCP/DNS (domain-needed, bogus-priv, dhcp-range, dhcp-option). https://dnsmasq.org/docs/dnsmasq-man.html
- ↑ dnsmasq.conf.example (GitHub, projet officiel), syntaxe et options illustrées. https://github.com/imp/dnsmasq/blob/master/dnsmasq.conf.example
- ↑ Man dnsmasq – option bind-interfaces. https://dnsmasq.org/docs/dnsmasq-man.html
- ↑ Kuan‑Yi Li – « Human‑Readable DHCP Options for DNSMASQ », 2020. https://blog.abysm.org/2020/06/human-readable-dhcp-options-for-dnsmasq/
- ↑ Raspberry Pi Guide – AP avec dnsmasq/hostapd (DHCP). https://raspberrypi-guide.github.io/networking/create-wireless-access-point
- ↑ IT‑Connect – « Configurer le NAT sous nftables » (mention de net.ipv4.ip_forward=1). https://www.it-connect.fr/chapitres/configurer-le-nat-sous-nftables/
- ↑ Gentoo Wiki – « Nftables/Examples », rappel d’activer l’IP forwarding. https://wiki.gentoo.org/wiki/Nftables/Examples
- ↑ Debian Wiki – « nftables » (par défaut, recommandé). https://wiki.debian.org/nftables
- ↑ Server‑World – « Debian 12 Bookworm : Nftables : Enable Service » – service systemd, fichier /etc/nftables.conf. https://www.server-world.info/en/note?os=Debian_12&p=nftables&f=1
- ↑ Red Hat Security Guide – « Configuring NAT using nftables » (masquerade vs SNAT). https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-configuring_nat_using_nftables
- ↑ nftables wiki – « Performing NAT » (hooks, priorités, masquerade). https://wiki.nftables.org/wiki-nftables/index.php/Performing_Network_Address_Translation_%28NAT%29
- ↑ Raspberry Pi Forums – nmcli, gestion des connexions. https://forums.raspberrypi.com/viewtopic.php?t=357739
- ↑ Man dnsmasq – fonctionnement DHCP et options. https://dnsmasq.org/docs/dnsmasq-man.html
- ↑ Red Hat – NAT masquerading expliqué. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-configuring_nat_using_nftables
- ↑ OPNsense docs – rôle de dnsmasq, remarques sur DHCP et topologies petites/moyennes. https://docs.opnsense.org/manual/dnsmasq.html
- ↑ Man dnsmasq – bind-interfaces. https://dnsmasq.org/docs/dnsmasq-man.html
- ↑ Server‑World – comportement de nftables.service (charge /etc/nftables.conf au démarrage). https://www.server-world.info/en/note?os=Debian_12&p=nftables&f=1
- ↑ Debian Wiki – nftables recommandé par défaut. https://wiki.debian.org/nftables
- ↑ GitHub raspberrypi/bookworm-feedback #418 – discussion LLA fallback NM, mai–juin 2025. https://github.com/raspberrypi/bookworm-feedback/issues/418