« PI Routeur » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
(Page créée avec «  = Routeur Raspberry Pi 2 : WAN DHCP, LAN 10.11.11.0/24, DHCP & NAT = == Objectif == * {{Mono|eth0}} (WAN) en **client DHCP** – adresse et passerelle obtenues du réseau amont. * {{Mono|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}}**. * **Routage IPv4** activé et **NAT** (masquerade) avec {{M... »)
 
mAucun résumé des modifications
Ligne 3 : Ligne 3 :


== Objectif ==
== Objectif ==
* {{Mono|eth0}} (WAN) en **client DHCP** – adresse et passerelle obtenues du réseau amont.
* eth0 (WAN) en **client DHCP** – adresse et passerelle obtenues du réseau amont.
* {{Mono|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}}**.
* **Routage IPv4** activé et **NAT** (masquerade) avec {{Mono|nftables}}.
* **Routage IPv4** activé et **NAT** (masquerade) avec {{Mono|nftables}}.

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

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

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

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

  1. 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
  2. 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/
  3. Debian Wiki – « nftables », statut par défaut depuis Debian 10, usage conseillé. https://wiki.debian.org/nftables
  4. Raspberry Pi Forums – « Getting Started with Network Manager », nmcli/nmtui, chemins des .nmconnection. https://forums.raspberrypi.com/viewtopic.php?t=357739
  5. Raspberry Pi Education AU – « Raspberry Pi Network Manager » (nmcli, nmtui, fichiers .nmconnection), 2024. https://education.raspberrypiaustralia.online/network-manager/raspberry-pi-network-manager
  6. Raspberry Pi Guide – « Create wireless access point » utilise dhcpcd pour IP statique avant Bookworm. https://raspberrypi-guide.github.io/networking/create-wireless-access-point
  7. Man page officielle dnsmasq – options DHCP/DNS (domain-needed, bogus-priv, dhcp-range, dhcp-option). https://dnsmasq.org/docs/dnsmasq-man.html
  8. dnsmasq.conf.example (GitHub, projet officiel), syntaxe et options illustrées. https://github.com/imp/dnsmasq/blob/master/dnsmasq.conf.example
  9. Man dnsmasq – option bind-interfaces. https://dnsmasq.org/docs/dnsmasq-man.html
  10. Kuan‑Yi Li – « Human‑Readable DHCP Options for DNSMASQ », 2020. https://blog.abysm.org/2020/06/human-readable-dhcp-options-for-dnsmasq/
  11. Raspberry Pi Guide – AP avec dnsmasq/hostapd (DHCP). https://raspberrypi-guide.github.io/networking/create-wireless-access-point
  12. 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/
  13. Gentoo Wiki – « Nftables/Examples », rappel d’activer l’IP forwarding. https://wiki.gentoo.org/wiki/Nftables/Examples
  14. Debian Wiki – « nftables » (par défaut, recommandé). https://wiki.debian.org/nftables
  15. 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
  16. 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
  17. nftables wiki – « Performing NAT » (hooks, priorités, masquerade). https://wiki.nftables.org/wiki-nftables/index.php/Performing_Network_Address_Translation_%28NAT%29
  18. Raspberry Pi Forums – nmcli, gestion des connexions. https://forums.raspberrypi.com/viewtopic.php?t=357739
  19. Man dnsmasq – fonctionnement DHCP et options. https://dnsmasq.org/docs/dnsmasq-man.html
  20. Red Hat – NAT masquerading expliqué. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-configuring_nat_using_nftables
  21. OPNsense docs – rôle de dnsmasq, remarques sur DHCP et topologies petites/moyennes. https://docs.opnsense.org/manual/dnsmasq.html
  22. Man dnsmasq – bind-interfaces. https://dnsmasq.org/docs/dnsmasq-man.html
  23. 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
  24. Debian Wiki – nftables recommandé par défaut. https://wiki.debian.org/nftables
  25. GitHub raspberrypi/bookworm-feedback #418 – discussion LLA fallback NM, mai–juin 2025. https://github.com/raspberrypi/bookworm-feedback/issues/418