29 points par GN⁺ 2026-03-31 | 1 commentaires | Partager sur WhatsApp
  • Procédure pas à pas pour transformer un ordinateur classique ou un mini PC en routeur complet
  • Configuration d’un réseau filaire et sans fil avec un minimum de paquets comme hostapd, dnsmasq et bridge-utils sous Debian ou Alpine Linux
  • Avec seulement deux interfaces Ethernet, n’importe quel équipement — desktop, laptop, SBC — peut être converti en routeur
  • Mise en place de fonctions dignes d’un routeur du commerce via la configuration du pare-feu (nftables), des services DHCP/DNS et de l’IP forwarding
  • Possibilité de construire une infrastructure réseau stable et flexible uniquement avec du matériel réformé et de l’open source

Comment transformer n’importe quel appareil en routeur

  • Présentation d’une méthode pour construire soi-même un routeur à partir de matériel existant, à la suite de l’interdiction d’importation de routeurs grand public décidée par le gouvernement américain
  • À partir d’une expérience de plusieurs années d’exploitation stable d’un routeur basé sur un mini PC sous Linux, l’article détaille pas à pas les composants nécessaires et la procédure de configuration
  • Un routeur ayant fondamentalement la même architecture qu’un ordinateur classique, il peut être réalisé avec des équipements variés comme un desktop, un laptop ou un SBC
  • Configuration sous Debian ou Alpine Linux avec un minimum de paquets comme hostapd, dnsmasq, bridge-utils
  • L’objectif n’est pas de répondre à une politique particulière, mais de réutiliser du matériel existant et de mieux comprendre le fonctionnement des réseaux

Choix du matériel

  • Un mini PC à refroidissement passif est idéal, mais n’importe quel appareil convient à partir du moment où il dispose de deux interfaces Ethernet
    • On peut compléter avec un dongle USB-Ethernet ; c’est un peu moins fiable, mais cela fonctionne très bien
  • Exemple donné : une machine Celeron 3205U dual-core (1,5 GHz) peut traiter 820 à 850 Mbps en filaire et environ 300 Mbps en sans fil
  • Par le passé, l’auteur a assemblé un système à partir de pièces de récupération comme un ThinkPad T60, un pont ExpressCard-PCIe, un switch Cisco 2960 et un routeur D-Link (utilisé uniquement comme AP)
    • Le résultat était peu élégant, mais fonctionnait comme un routeur complet

Configuration réseau

  • Configuration des interfaces
    • eth0 : WAN
    • eth1 : LAN (filaire)
    • wlan0 : LAN (sans fil)
  • Le LAN filaire et sans fil sont réunis dans un bridge pour fonctionner sur le même réseau
  • Si davantage de ports LAN sont nécessaires, on peut ajouter des dongles USB-Ethernet et les rattacher au bridge
  • Le système d’exploitation utilisé est Debian Linux, avec les composants essentiels suivants
    • hostapd : création du réseau Wi-Fi
    • dnsmasq : services DNS et DHCP
    • bridge-utils : bridging des ports

Installation et configuration initiale

  • Réglages BIOS/UEFI
    • Désactiver le démarrage réseau PXE
    • Désactiver la gestion de l’alimentation USB/PCI
    • Activer l’option « démarrage automatique après retour du courant secteur »
    • Utiliser un dongle HDMI factice pour résoudre les problèmes de démarrage sans écran connecté
  • Certains matériels nécessitent l’activation du dépôt non-free-firmware
  • Installation du firmware selon le chipset Wi-Fi
    • Intel : firmware-iwlwifi
    • Realtek : firmware-ath9k-htc
    • Anciennes puces Atheros : firmware-atheros

Installation des paquets indispensables

  • Installer les principaux utilitaires avec la commande suivante
    sudo apt install bridge-utils hostapd dnsmasq
    
  • L’ensemble du système représente environ 250 paquets

Fixer les noms des interfaces réseau

  • Les versions récentes de Linux utilisent des noms du type enp0s31f6, mais il est possible de les fixer au format traditionnel ethX
  • Créer le fichier /etc/systemd/network/10-persistent-ethX.link
    [Match]
    MACAddress=AA:BB:CC:DD:00:11
    [Link]
    Name=ethX
    

Créer le réseau sans fil

  • Configurer un dongle Wi-Fi USB en point d’accès (AP)
  • Exemple de /etc/hostapd/hostapd.conf
    interface=wlan0
    bridge=br0
    hw_mode=g
    channel=11
    ssid=My Cool and Creative Wi-Fi Name
    wpa_passphrase=mysecurepassword
    
  • Activer le service hostapd
    sudo systemctl unmask hostapd
    sudo systemctl enable --now hostapd
    

Configuration des interfaces

  • Configuration de /etc/network/interfaces
    allow-hotplug eth0
    allow-hotplug eth1
    auto wlan0
    auto br0
    iface eth0 inet dhcp
    iface br0 inet static
    bridge_ports eth1 wlan0
    address 192.168.1.1/24
    
  • Après redémarrage, vérifier l’état du bridge avec la commande brctl show br0

Activer l’IP forwarding

  • Ajouter dans le fichier /etc/sysctl.d/10-forward.conf
    net.ipv4.ip_forward=1
    
  • Appliquer ensuite
    sudo systemctl restart systemd-sysctl.service
    

Configuration du pare-feu et du NAT

  • Configuration basée sur nftables (/etc/nftables.conf)
    • blocage du trafic externe
    • autorisation du DNS, du DHCP et du SSH internes
    • mise en place du NAT
  • Activer le service
    sudo systemctl enable nftables.service
    

Configuration DHCP et DNS

  • Utilisation de dnsmasq (/etc/dnsmasq.conf)
    interface=br0
    dhcp-range=192.168.1.50,192.168.1.250,255.255.255.0,6h
    dhcp-option=option:router,192.168.1.1
    dhcp-option=option:dns-server,192.168.1.1
    cache-size=10000
    
  • Activer le service
    sudo systemctl enable dnsmasq
    

Gestion du port série

  • Si l’appareil dispose d’un port console série, il peut être administré sans moniteur
  • Modifier /etc/default/grub
    GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8'
    GRUB_TERMINAL=serial
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    
  • Exécuter systemctl enable [email protected], puis sudo update-grub

Vérification du fonctionnement

  • Après redémarrage, vérifier l’état du pare-feu avec sudo nft list ruleset
  • Valider la configuration avec sudo nft -c -f /etc/nftables.conf
  • Les règles peuvent être rechargées sans interruption via sudo systemctl reload nftables.service
  • Vérifier les logs DHCP
    sudo less /var/lib/misc/dnsmasq.leases
    sudo journalctl -eu dnsmasq.service
    

Fonctionnalités supplémentaires

  • Extensions possibles : journalisation et analyse du trafic, segmentation VLAN, prise en charge d’IPv6, tunneling VPN, routage dynamique (BGP, IGP)
  • Ajout possible de fonctions comme le monitoring basé sur Prometheus, le port forwarding DMZ, ainsi que la détection et le blocage d’intrusion
  • En revanche, il vaut mieux éviter d’installer trop de logiciels directement sur le routeur lui-même, et préférer l’isolation du trafic via une DMZ ou des VLAN

Conclusion

  • Il est possible de construire un routeur complet uniquement avec des logiciels gratuits et du matériel réformé
  • Un routeur n’est au fond rien d’autre qu’un ordinateur classique, et tout le monde peut donc en fabriquer un soi-même
  • Réutiliser du matériel inutile permet de bâtir une infrastructure réseau stable et flexible

1 commentaires

 
GN⁺ 2026-03-31
Commentaires sur Hacker News
  • Excellent article. J’aimerais présenter le script create_ap que je maintiens depuis longtemps
    Il est disponible dans le dépôt GitHub.
    C’est un script shell qui transforme n’importe quel ordinateur Linux en routeur Wi‑Fi avec une seule ligne de commande.
    Il configure automatiquement la carte Wi‑Fi en mode AP, ainsi que WPA2/3, le filtrage MAC et même un serveur DHCP/DNS.
    Il a très peu de dépendances et ne nécessite pas NetworkManager.
    Je l’ai aussi utilisé comme passerelle Internet domestique sur un vieux mini-PC Atom, et je m’en sers souvent pour créer un réseau de test pour le reverse engineering d’appareils IoT
    On peut voir un cas lié dans cet article

    • Je me demande si quelqu’un aurait une recommandation de chipset Wi‑Fi offrant de bonnes performances en mode AP
  • Beaucoup de commentaires disent « utilise simplement X », mais l’essentiel de cet article est de montrer la configuration minimale du routage et sa simplicité
    Si vous avez déjà utilisé du NAT dans Docker ou une VM, vous avez en fait déjà fait la même chose.
    La fonction hotspot Wi‑Fi d’Android s’appuie elle aussi au final sur les mêmes fonctionnalités du noyau Linux.
    Même ce message vous parvient probablement en passant par plusieurs routeurs logiciels

    • Moi aussi, je trouve plus intéressant de le construire soi-même à partir de zéro. C’est ce qui permet de décider en connaissance de cause s’il faut l’implémenter soi-même ou utiliser une solution existante
      Je pense que c’est un bon principe de conception logicielle
    • En réalité, n’importe quel ordinateur peut devenir un routeur si on le veut
      Le Partage de connexion Internet de Windows n’était au fond qu’une case à cocher pour activer le NAT
      Le fait de regrouper pare-feu, switch, serveur de fichiers, etc. sur une seule machine et d’appeler cela un « routeur » semble troubler les gens
  • Cet article m’a rappelé de vieux souvenirs. Mon premier usage de Linux, c’était de fabriquer un routeur avec un ordinateur de récupération
    J’avais mis deux cartes réseau ISA 3Com dans un Pentium à 100 MHz et je l’avais configuré en suivant l’IP-Masquerading HOWTO.
    Je l’ai ensuite fait évoluer à partir du livre Linux Firewalls de Robert Ziegler, en y ajoutant même un filtre anti-spam et un cache Squid, ce qui m’a permis de tirer quelque chose d’utile de matériel destiné à la benne

    • J’ai suivi un parcours similaire. Je partageais la ligne ISDN d’un bureau de journal avec un seul ordinateur, et cela a fini par mener à la création d’un site web
      27 ans plus tard, on m’appelle encore quand quelqu’un veut savoir « comment résoudre ça à bas coût avec Linux, des élastiques et des trombones »
    • Il y a longtemps, quand la DSL de mes parents était tombée, j’avais bricolé une connexion Wi‑Fi provisoire avec un bridge OpenBSD sur un Pentium MMX 200 MHz. Étonnamment, c’était suffisamment rapide
    • Avec un switch compatible VLAN, le routage avec une seule carte réseau est aussi possible
    • Dans mon cas, c’était l’inverse : j’ai d’abord appris Linux en flashant un firmware de routeur avec OpenWRT
    • Aujourd’hui, c’est un livre vieux de 25 ans, donc beaucoup trop daté. Quelqu’un devrait écrire un nouveau livre sur les routeurs Linux
      Référence : Linux Routers - A Primer for Network Administrators
  • J’utilise OPNsense/pfSense depuis longtemps et je le recommande vivement
    Les fonctionnalités sont excellentes : mises à jour automatiques, sauvegardes, tunnels WireGuard, filtrage de paquets basé sur Suricata, etc.
    C’est pratique de pouvoir configurer cela via une interface web plutôt que dans un terminal pendant qu’on administre le réseau le week-end
    Site officiel

    • D’accord, mais les GUI collent souvent mal aux concepts de Linux. J’utilisais un routeur Barracuda et j’ai fini par saisir directement des commandes en SSH pour résoudre le problème
      pfSense, OpenWRT, Barracuda, Verizon OEM, etc. offrent les mêmes fonctions mais les présentent chacun à leur manière
    • Moi, je n’ai plus envie d’administrer le réseau le week-end. J’aimerais qu’il existe une distribution de routeur totalement orientée appliance, comme TrueNAS
    • Si j’ai abandonné OPNsense, c’est parce qu’il limitait la configuration que je voulais mettre en place.
      Je n’aime pas les produits qui adoptent l’attitude « la machine sait mieux que moi ». Le manque de flexibilité a été décisif
    • Apprendre avec Linux, c’est très bien, mais un routeur, c’est gênant quand ça se passe mal
      J’ai routé jusqu’à 300 Mb/s avec un mini-PC Atom, puis je suis passé à une VM OPNsense en migrant vers un accès gigabit
      C’est amusant de faire du passthrough port par port vers la VM avec une carte Intel à 4 ports
  • J’utilise un équipement de routeur N100 + 10 Gbit et j’ai l’impression que la latence est plus élevée qu’avec un routeur matériel dédié
    Les chipsets spécialisés traitent les paquets sans intervention du CPU, donc c’est bien plus efficace.
    Je me demande si quelqu’un a réellement mesuré cette différence. La plupart des gens ne font que des tests de bande passante

    • Oui, un bridge Linux ne peut pas être aussi rapide qu’un ASIC de switch dédié
      OpenWRT prend en charge certaines API de switch matériel, mais il n’existe presque rien sous forme de carte PCIe
      Le CCR2004-1G-2XS-PCIe de Mikrotik en est un exemple intéressant.
      Le principe consiste à connecter en PCIe une carte routeur complète qui fait tourner RouterOS.
      Si vous pouvez exploiter les ports à 25 Gbit/s, cela vaut le coup ; sinon, la différence avec un RB5009 n’est pas énorme
  • Si vous avez un switch manageable, il est possible de monter un routeur avec une seule carte réseau
    En le configurant en port trunk 802.1q, on peut utiliser le switch comme un prolongateur d’interfaces
    Chez moi, c’est une configuration « router-on-a-stick »
    En combinant un switch PoE et un Aruba IAP d’occasion, on peut obtenir un Wi‑Fi bien meilleur que sur du matériel grand public
    Avant, j’utilisais un ThinkPad comme routeur, mais je suis passé à un Dell Optiplex, que j’utilise maintenant comme routeur de homelab faisant aussi tourner des VM
    Alpine Linux est excellent pour cet usage

    • Je me demande jusqu’où les performances en latence du Wi‑Fi mesh peuvent s’améliorer. Par rapport à un routeur grand public, l’écart est de quel ordre ?
    • L’AP fourni par mon FAI prend lui aussi en charge le Wi‑Fi gigabit. En revanche, comme il impose certains DNS à des fins de surveillance, je veux le remplacer
      C’est dommage, car acheter un AP offrant les mêmes performances me coûterait environ 180 dollars
  • Je me demande quelle est la raison politique des interdictions d’importation de routeurs
    Comme l’essentiel du trafic est déjà chiffré en TLS, je me demande pourquoi cela est encore considéré comme un risque
    Est-ce lié aux botnets, aux attaques DDoS, aux mots de passe par défaut faibles, ou à l’intrusion dans les réseaux internes ?

    • Dans le secteur de la sécurité, on appelle cela des APT (Advanced Persistent Threat).
      Des cas comme Volt Typhoon ou Flax Typhoon sont toujours actifs.
      Cela ne se résout pas entièrement en interdisant du matériel étranger, mais la sécurité n’est pas un produit, c’est un processus, donc contrôler la chaîne d’approvisionnement reste nécessaire
    • Toutes les raisons que tu cites sont valables. Il faut aussi ajouter la capacité à désactiver les équipements à distance, qui constitue un risque majeur
      J’ai autrefois travaillé sur la Bot Mitigation chez Amazon et j’ai vu le trafic généré par des appareils grand public dans le monde entier.
      Avec moins de la moitié des appareils actifs, on atteignait déjà un volume de trafic impossible à bloquer
    • En réalité, si la FCC se souciait vraiment de sécurité, elle aurait imposé des mots de passe uniques par appareil ou une responsabilisation des fabricants qui ne corrigent pas leurs appareils.
      Que ce soit Huawei ou Netgear, la source des DDoS reste la même
    • Les raisons sont multiples
      Accès aux métadonnées DNS/de trafic, attaques contre le réseau interne, DDoS, coupure d’Internet, etc.
      Au final, cela peut être détourné comme outil de surveillance et de contrôle
    • Techniquement, c’est exact. Même avec du TLS, les métadonnées suffisent largement pour surveiller.
      L’hypothèse qu’un équipement étranger puisse contenir une porte dérobée est réaliste
  • Dire « utilise simplement OPNsense » est un bon conseil en production, mais c’est le pire possible pour apprendre
    La valeur de cet article est de montrer à quel point le routage repose sur des principes simples

    • Le matériel SOHO ne fait pas du routage au sens strict du terme
  • Ce n’est pas mentionné dans l’article, mais si on utilise cela comme routeur, on peut réduire la surcharge avec des réglages comme ceux-ci dans /etc/sysctl.d/10_router.conf :

    net.ipv4.ip_early_demux = 0  
    net.ipv4.tcp_early_demux = 0  
    net.ipv4.udp_early_demux = 0
    

    C’est efficace pour des ajustements visant à réduire la latence et la gigue, par exemple pour la VoIP ou les jeux.
    J’ajuste aussi gro_flush_timeout, sch_cake, napi_defer_hard_irqs, etc.
    L’objectif est que la famille ressente une meilleure expérience de jeu

    • Je désactive moi aussi early_demux, mais je n’ai jamais vraiment testé la différence en pratique.
      Dans mon cas, fq_codel suffit déjà à rester parfaitement stable en environnement 10 Gbit/s
  • Pour ma part, je suis encore plus intéressé par le remplacement du modem fibre
    Celui fourni par AT&T ralentit souvent et sa sécurité me semble douteuse.
    Je me demande s’il existe un guide expliquant comment le remplacer soi-même par un modem fibre