J’ai remarqué une tendance ces derniers temps. Plutôt que de remplacer un routeur lorsqu’il cesse littéralement de fonctionner, j’ai dû agir plus tôt – en échangeant un nouvel équipement parce qu’un vieux routeur ne pouvait plus suivre l’augmentation des vitesses Internet disponibles dans la région. (Notez que je suis dûment reconnaissant pour ce problème.) Comme dernier exemple, toute une série de routeurs Netgear ProSafe 318G m’ont lâché pour la dernière fois alors que les petites entreprises sont passées de connexions T1 traditionnelles de 1,5-9 mbps à des connexions coaxiales (câble) de 50 mbps.

Oui, le coaxial – pas la fibre. Même le coaxial s’est avéré trop difficile pour l’ancienne série ProSafe. Ces appareils n’ont pas seulement échoué à suivre, ils sont tombés à plat sur leurs visages. Fréquemment, les anciens routeurs ont fait chuter les résultats des tests de vitesse de 9mbps avec l’ancienne connexion à 3mbps ou moins avec la connexion 50mbps. Évidemment, cela ne vole pas.

Voir plus

De nos jours, la réponse semble de plus en plus être les routeurs sans fil. Ceux-ci ont tendance à être longs sur le plastique d’apparence lisse et les interfaces Web aux couleurs vives, mais courts sur les caractéristiques techniques et la fiabilité. Que doit faire un administrateur système mercenaire ? Eh bien, à la base, tout ce qui possède deux interfaces réseau physiques peut être un routeur. Et aujourd’hui, il existe des tas et des tas de boîtes génériques relativement rapides, peu coûteuses et (super important !) entièrement à semi-conducteurs.

Donc, le moment était enfin venu. Face au matériel vieillissant et aux nouvelles offres grand public qui ne répondaient pas à mes besoins, j’ai décidé de construire mon propre routeur. Et si le paysage de la connectivité en mutation d’aujourd’hui vous laisse dans une position similaire, il s’avère que la construction et la construction sont assez rapides.

Pourquoi le faire de la manière difficile

Beaucoup d’entre vous sont probablement en train de marmonner, « d’accord, pfSense, bien sûr. » Certains d’entre vous pensent peut-être même à smoothwall ou untangle NG. J’ai joué avec la plupart des distros de pare-feu qui existent, mais j’ai décidé d’aller plus basique, plus old school : une installation simple, en CLI seulement, d’Ubuntu Server et quelques règles iptables.

Admettre, ce n’est probablement pas l’approche la plus pratique pour chaque lecteur, mais cela avait du sens pour moi. J’ai pas mal d’expérience pour peaufiner iptables et le noyau Linux lui-même pour un débit élevé à l’échelle d’Internet, et moins il y a de fonctionnalités brillantes et de graphiques et de choses cliquables qui sont mises entre moi et la table de pare-feu, moins il y a de fluff que je dois retirer du chemin et moins il y a de nouvelles choses non applicables dans le reste de mon travail que je dois apprendre. Toute règle que je sais déjà créer dans iptables pour gérer l’accès à mes serveurs, je sais également comment l’appliquer à mon pare-feu – si mon pare-feu exécute la même distro que mes serveurs.

Enlarge / Behold, a Unix beard.

Alors, je travaille assez fortement avec OpenVPN, et je veux pouvoir continuer à configurer à la fois ses serveurs et ses clients de la manière dont je compte déjà. Certaines distros de pare-feu ont un support OpenVPN intégré et d’autres non, mais même celles qui ont un support intégré ont tendance à s’attendre à ce que les choses fonctionnent différemment de ce que je fais. Encore une fois, plus le système reste en dehors de mon chemin, plus je serai heureux.

Comme un bonus supplémentaire, je sais que je peux très facilement garder tout complètement à jour sur mon nouveau routeur Ubuntu complètement vanille. Tout est supporté directement par Canonical, et il peut (et fait) tous avoir des mises à jour automatiques activées. Ajoutez le travail cron occasionnel pour redémarrer le routeur (pour obtenir les nouveaux noyaux), et je suis en or.

Matériel, matériel, matériel

Nous passerons en revue le comment-faire dans un prochain morceau, mais aujourd’hui, il est important d’établir pourquoi un routeur-bâtiment DIY peut être la meilleure option. Pour ce faire, vous devez d’abord comprendre le paysage général d’aujourd’hui.

Dans le monde grand public, les routeurs ont pour la plupart d’itty-bitty little MIPS CPUs sous le capot sans beaucoup de RAM (pour le moins). Ces routeurs se différencient largement les uns des autres en fonction de l’interface : A quel point est-elle brillante ? Combien de fonctionnalités techniques possède-t-il ? Les utilisateurs peuvent-ils le comprendre facilement ?

Publicité

À l’extrémité supérieure du marché SOHO, vous commencez à voir des processeurs ARM de niveau smartphone et beaucoup plus de RAM. Ces routeurs – comme la série Nightgear Nighthawk, dont l’un d’entre eux sera martelé plus tard – comportent plusieurs cœurs, des vitesses d’horloge plus élevées et beaucoup plus de RAM. Ils sont également beaucoup plus chers que leurs concurrents moins chers. J’ai pris un Linksys EA2750 pour 89 $, mais le Netgear Nighthawk X6 que j’ai eu avec lui était presque trois fois plus cher (même en vente pendant les vacances !) à 249 $.

Agrandir / Ne me jugez pas – j’avais faim.

Pour autant, je voulais emprunter une voie différente. Un grand nombre de petites machines sans ventilateur x86-64 intéressantes et raisonnablement bon marché ont commencé à apparaître sur le marché dernièrement. Le truc pour construire un routeur est d’en trouver un avec plusieurs NICs. Vous pouvez trouver quelques machines assez sûres sur Amazon, mais il s’agit de vieux processeurs basés sur Atom, et je voulais un Celeron plus récent. Après avoir parcouru l’Internet et tergiversé, j’ai finalement fait le saut sur Alibaba et commandé un nouveau mini-PC Partaker à Shenzhen Inctel Technology Company. Après 240 $ pour le routeur lui-même et 48 $ de plus pour un SSD Kingston de 120 Go provenant de Newegg, j’ai dépensé environ 40 $ de plus pour le Homebrew Special que pour le Nighthawk. Cela en vaudrait-il la peine ?

Un challenger apparaît

Avant de commencer les tests, jetons un rapide coup d’œil visuel sur les concurrents.

Enlarge / Dans le sens des aiguilles d’une montre, à partir de l’extrême gauche : 1. le Homebrew Special alimenté par Ubuntu, 2. le Netgear Nighthawk X6, 3. le Buffalo WHR-G300N-v2, et 4. le Linksys N600 EA-2750. Tout à droite, les dominant tous : Monolith, l’un des deux serveurs utilisés pour les tests.

Ce Nighthawk est, par rapport aux autres, ÉNORME et imposant (encore plus que la photo ne le laisse paraître). Il est en fait beaucoup plus grand que mon Homebrew Special, qui est un PC tout à fait fonctionnel et polyvalent que vous pourriez utiliser comme un bureau parfaitement compétent. C’est comme si DC Comics avait demandé à H.R. Giger de lui prêter main forte pour concevoir un routeur sans fil pour Batman.

Le Homebrew Special lui-même est plutôt adorable. Il a une LED bleue et une LED rouge à l’intérieur du boîtier, et la nuit, la lumière des deux sort indirectement de ses évents de refroidissement, donnant à la pile réseau un look de fête. S’il y avait des ventilateurs pour provoquer un scintillement, cela me rendrait fou, mais puisque c’est une lueur douce à l’état stable, je l’aime bien en fait.

Le Linksys et le Buffalo, d’autre part, ressemblent exactement à ce qu’ils sont – des routeurs bon marché. Cependant, il convient de noter que le style du Linksys est une grande amélioration par rapport au passé de la marque. Il ressemble davantage à quelque chose de professionnel et moins à un jouet pour enfants. (Mais assez parlé du style – il est temps de faire passer ces pauvres routeurs à travers le gant.)

Le premier défi évident est un simple test de bande passante. Vous mettez un ordinateur sur le côté LAN et un ordinateur sur le côté WAN, et vous exécutez un petit outil astucieux appelé iperf au milieu. Simple, non ?

Agrandir / Non représenté : résultats intéressants.

Publicité

Bien, cela ferait un article court et ennuyeux. Le réseau lui-même mesure le gigabit, les trois routeurs gigabit mesurent le gigabit, et le routeur 100 mégabit mesure le 100 mégabit.

En réalité, un test aussi simple ne commence même pas à raconter l’histoire. La seule raison de le faire peut être de montrer à quel point il est inutile. Les fabricants de routeurs sont de plus en plus conscients que les gens testent réellement leur produit, et aucun fabricant ne veut que son produit soit ailleurs que dans le haut de quelque chose comme le tableau des routeurs de smallnetbuilder. A la lumière, les fabricants courent activement après les stats ces jours-ci.

Le problème est que les stats ne sont que des stats. Être capable d’atteindre un nombre élevé sur un test de débit pur est mieux que rien, mais c’est loin d’être toute l’histoire. J’ai appris cette leçon à la dure en travaillant pour un fournisseur de T-1 au début des années 2000. Leurs modems Adtran, extrêmement coûteux, pouvaient gérer sans problème l’utilisation normale d’Internet de 50 à 100 personnes, mais un seul utilisateur faisant tourner Limewire ou un autre client P2P faisait tout tomber en un clin d’œil. (La solution à l’époque : mettre un routeur Netopia à 150 $, peu coûteux mais génial, devant ce modem Adtran onéreux. Problème résolu.)

Publicité

Même pour un routage relativement simple – pas d’inspection approfondie des paquets, pas de recherche de logiciels malveillants en continu ou de détection d’intrusion, pas de mise en forme – le processeur et la RAM dont dispose le routeur sont tous deux importants bien au-delà de la capacité à saturer la liaison Internet. Le partage de fichiers en peer-to-peer est l’activité la plus brutale qu’un réseau puisse connaître de nos jours (qu’il s’agisse de bittorrent, d’une des variantes de Gnutella ou d’eDonkey, ou du système de téléchargement peer-to-peer d’une société de jeux). J’avais fini de jouer à WoW au moment où le système de distribution P2P de Blizzard a été introduit, mais mon colocataire de l’époque ne l’était pas. Le jour de son lancement, le nouveau système de téléchargement peer-to-peer de WoW a, par défaut et de manière peu utile, refusé toute limitation. Il a joyeusement essayé de trouver et de maintenir des connexions avec des milliers de clients simultanément, et mon réseau domestique s’est effondré comme Gilbert Godfried se faisant plaquer par Terry Tate. Mon colocataire et moi avons eu des mots.

Sur la base d’une telle expérience passée, je ne veux pas simplement « tester » minimalement mes challengers et appeler ça un jour, je veux vraiment les faire transpirer. Donc, pour ce faire, je vais les frapper avec des charges de travail qui mettent l’accent sur trois domaines problématiques : saturer le lien réseau, établir et rompre des connexions TCP/IP individuelles très rapidement, et maintenir un nombre massif de connexions TCP/IP individuelles ouvertes en même temps.

J’ai un botnet dans ma poche, et je suis prêt à le balancer

J’ai brièvement envisagé de mettre en place une sorte de monstruosité hideuse, alimentée par Docker, avec des dizaines de milliers de conteneurs Linux avec des adresses IP individuelles, tous réclamant des connexions et/ou servant des pages web. Puis j’ai repris mes esprits. En ce qui concerne les routeurs, il n’y a aucune différence entre maintenir des connexions vers des milliers d’adresses IP individuelles ou simplement vers des milliers de ports sur la même adresse IP. J’ai passé un peu de temps à transformer le serveur web préféré de Lee Hutchinson, nginx, en un monstre lovecraftien ridicule avec 10 000 têtes et un appétit de destruction.

Pour chaque routeur, j’ai utilisé ApacheBench pour tester le téléchargement d’un jpeg avec trois tailles de fichiers différentes (10K, 100K et 1M) à quatre niveaux de concurrence différents (10, 100, 1 000 et 10 000 clients simultanés). Cela nous donne 12 tests au total, sans compter notre test iperf initial, et il vaut la peine de les voir tous comme une sorte de spectre.

Publicité

À bien des égards, ce fichier de 10K est plus difficile. La petite taille du fichier signifie que vous pouvez délivrer beaucoup plus de fichiers individuels par seconde avant de saturer l’interface, ce qui signifie faire et couper beaucoup plus de connexions TCP, ce qui est taxant pour le CPU du routeur. D’autre part, le fichier de 1M signifie que vous êtes assuré de garder plus de connexions ouvertes sur les niveaux de concurrence plus élevés. Cela vaut la peine de voir comment les routeurs gèrent l’ensemble du spectre, parce que chaque niveau fait un travail assez décent de modélisation d’un défi assez commun qu’un routeur pourrait avoir à gérer (téléchargement ou envoi d’un grand nombre d’e-mails, gestion du partage de fichiers peer-to-peer, ou navigation générale sur le Web d’un grand nombre d’utilisateurs) s’il est porté à un niveau extrême.

En fin de compte, j’ai fini par devoir non seulement régler nginx, mais le noyau Linux lui-même, afin de fournir de manière fiable le type de débit que je recherchais. Les routeurs eux-mêmes sont « stock » – même mon Homebrew Special n’a pas été réglé – mais les serveurs de test, Menhir et Monolith (chacun avec un processeur AMD FX-8320 à 8 cœurs, 32 Go de RAM DDR3, et Ubuntu Trusty OS patché complètement à jour) ont eu besoin d’un massage assez sérieux afin de gérer ce genre de charge.

Avec une telle folie, vous voulez vous assurer de ce que vos serveurs et votre réseau réels sont capables de faire avant de sauter à des conclusions sur les routeurs que vous mettez entre eux. Pour commencer, j’ai d’abord testé Menhir par lui-même sur l’interface localhost (pas de réseau du tout), puis j’ai testé entre les serveurs à travers mon commutateur réseau uniquement (un Netgear ProSafe 16-port gigabit, au cas où vous vous poseriez la question).

Enlarge / Chaque expérience a besoin d’un contrôle.

Les résultats de localhost n’auraient pas pu être meilleurs – un débit beaucoup, beaucoup plus élevé que gigabit pour chaque test. En fait, j’ai dû limiter manuellement l’échelle de l’axe Y du graphique, sinon vous auriez eu du mal à voir les tests réels. Le test de réseau direct n’était pas trop mauvais, mais nous commençons manifestement à atteindre certaines limites à l’extrémité supérieure. Je ne sais pas si le composant qui pose problème est le commutateur lui-même ou les interfaces réseau embarquées des deux serveurs, mais quelque chose n’est pas complètement à la hauteur. C’est assez bon pour travailler avec, cependant. Il est temps d’engager enfin les routeurs.

Préparons-nous à gronder !

J’étais un peu nerveux. Je me sentais déjà assez affectueux envers mon petit appareil homebrew – après tout, je l’ai construit moi-même. Je savais qu’il dominerait facilement le vieux Buffalo que j’ai déterré d’un tiroir et le Linksys, qui était littéralement la chose la moins chère chez Staples avec une interface gigabit. Mais pouvait-il battre ce marteau à vapeur atomique guidé par laser qu’est le Nighthawk ? Je le pensais, mais je n’en étais pas sûr.

Agrandir / Pictured : victoire sans faille.

Quand les tests de téléchargement ont été terminés, il n’y avait plus de questions sur le Homebrew Special. Oui, il pouvait battre le Nighthawk… et repartir en baillant après. Mis à part un petit creux au niveau de la taille du fichier 10K/10 connexions simultanées (qui met au défi le CPU avec le plus absolu de connexions faites et brisées), il s’est comporté de manière presque identique à la connexion réseau directe elle-même.

Publicité

Le Nighthawk, soit dit en passant, est vraiment un excellent routeur SOHO que j’ai déployé assez souvent. Cependant, il a chuté presque immédiatement. Pour les téléchargements de mégaoctets 10 à la fois, il était au coude à coude. Avec n’importe quel autre défi, les performances ont commencé à s’incliner fortement.

Le Linksys, sans surprise, n’a pas bien fonctionné du tout. Même une tâche aussi simple que le téléchargement de 10 fichiers en même temps a réduit son débit à presque la moitié de ce que le test naïf iperf a montré. Les choses n’ont fait qu’empirer à partir de là, et il n’a même pas réussi à terminer plusieurs tests. Du côté positif, le Linksys démontre bien que votre routeur a vraiment de l’importance.

Enfin, le vaillant petit Buffalo mérite un coup de chapeau. Bien qu’il ait coûté moins cher que le Linksys lorsqu’il était tout neuf (il y a huit ans, remarquez) et qu’il ait langui dans un tiroir de bureau pendant cinq ans, il est descendu du tabouret de bar proverbial et a effectivement battu le Linksys dans la moitié des tests. Le Buffalo a obtenu ce succès malgré une interface réseau dont la vitesse était dix fois inférieure. C’est du courage. La prochaine fois que quelqu’un portera un coup de poignard bon marché à des produits de fabrication chinoise fraîchement sortis du bateau, je crierai :  » Souvenez-vous du Buffalo ! « 

Publicité

Avant de tirer des conclusions, il faut toutefois tenir compte des vitesses de téléchargement.

Agrandir / Je dois regarder deux fois pour m’assurer que ce n’est pas le même graphique.

Heureusement, rien n’a vraiment changé dans les relations entre les routeurs ici. Le Homebrew semble toujours comme s’il n’était même pas là, correspondant presque complètement à une connexion réseau directe. Le Nighthawk continue à dominer totalement le Linksys, et le petit Buffalo fait toujours de son mieux pour être obsolète. En termes absolus, vous pouvez voir que le Nighthawk et le Linksys font légèrement mieux en upload qu’en download, mais il n’y a rien à en dire. Cette ligne de fond reste la même : le Homebrew Special suit le réseau (bizarrement, il fait même mieux qu’une connexion directe dans le test de 10 000 connexions/10K fichiers), le Nighthawk vaut clairement son prix par rapport au Linksys, et le Linksys est, eh bien, bon marché.

Avec ce dernier graphique, nous avons un nouvel ensemble de résultats, cependant – les barres de couleur saumon, qui sont assez stables à un peu plus de 200mbps sur l’ensemble du graphique. C’est le Homebrew Special qui fait jouer ses muscles cryptographiques. Il a un serveur OpenVPN qui tourne. Pour ce test, le serveur côté WAN, Menhir, est connecté au serveur OpenVPN intégré du routeur. Le trafic pour le côté LAN du Homebrew Special est acheminé à travers le tunnel VPN, de sorte que Menhir frappe l’adresse IP LAN de Monolith (le serveur côté LAN) par le biais d’un cryptage impressionnant de 2048 bits, basé sur SSL. Étant donné que personne ne propose encore de connexions Internet de plus de 200 Mbps dans ma région, cela fait danser de joie le crypto nerd qui est en moi. Je pourrais littéralement crypter chaque octet de mon trafic Internet, dans les deux sens, sans pénalité de performance.

Une rapide mise en garde finale

Aussi impressionnant que soit mon petit Homebrew Special, il lui manque une chose, que les trois autres concurrents offrent : l’accès sans fil. Je pourrais ajouter une carte sans fil au Homebrew et le faire servir sans fil, mais pour l’instant je n’en ai pas l’intention. Je ne connais que trop bien les cartes sans fil disponibles pour les PC, et elles puent toutes sur la glace. Même les appareils bon marché comme les Linksys ou les Buffalo sont très performants en termes de couverture et de portée sans fil, et le Nighthawk n’est même pas dans la même catégorie. Le Nighthawk ne joue même pas dans la même catégorie. C’est vraiment un marteau-piqueur atomique guidé par laser lorsqu’il s’agit de portée sans fil, de couverture et de connectivité simultanée. (J’en ai un qui couvre plus de 50 utilisateurs dans une installation de 53 000 pieds carrés d’un coin à l’autre en ce moment.)

Cela dit, rien ne vous empêche d’utiliser un WAP (Wireless Access Point) séparé strictement pour gérer les fonctions Wi-Fi. Chez moi, c’est une paire de WAP Ubiquiti « hockey puck », un pour chaque étage de la maison. Ils sont un peu plus difficiles à gérer que le Nighthawk, mais la paire coûte deux fois moins cher. Il s’agit de dispositifs Linux assez standard auxquels on peut accéder directement par SSH et qui sont gérés à partir d’une petite application Web assez cool que l’on peut exécuter… vous l’avez deviné, directement sur le Homebrew Special. (La migration du serveur Ubiquiti de ma station de travail vers le Homebrew Special sera l’une de mes premières tâches après cette pièce, et je le promouvrai ensuite pour une utilisation active devant mon réseau de bureau à domicile.)

Au nom de la minutie, nous devrions observer une limitation partagée, quelque chose par tout le matériel réseau grand public que j’ai jamais géré : le désir de redémarrer après presque tout changement. Certains de ces redémarrages prennent bien plus d’une minute. Je n’ai pas la moindre idée du pourquoi, mais quelle que soit la raison, le Homebrew Special n’est pas affligé de ce standard industriel. Vous faites un changement, vous l’appliquez, vous avez terminé. Et si vous avez besoin de redémarrer le Spécial ? Il est de nouveau opérationnel en 12 secondes. (Je l’ai chronométré en comptant les pings abandonnés.)

Alors, si les chiffres vous ont influencé, et que vous voulez construire votre propre Homebrew Special, tout ce qu’il faut est un PC avec deux interfaces réseau physiques. Cela peut être un mini PC spécial comme celui que j’ai utilisé ici, ou cela peut être n’importe quelle vieille boîte que vous avez à portée de main et dans laquelle vous pouvez insérer deux cartes réseau. Ne vous laissez pas intimider par la première capture d’écran. Construire votre propre routeur vraiment rapide n’est pas si difficile à maîtriser. Et si vous réclamez une feuille de route, en fait, nous décrirons le processus tout au long du chemin de « voici un ordinateur ordinaire » à « voici un routeur, et voici comment vous le configurez » bientôt.

Publicité

Jim Salter (@jrssnet) est un auteur, un conférencier, un propriétaire de petite entreprise, un administrateur système mercenaire et un père de trois enfants-pas nécessairement dans cet ordre. Il a eu son premier véritable aperçu de l’open source en faisant tourner Apache sur son propre serveur FreeBSD 3.1 dédié en 1999, et il est depuis lors un fervent défenseur des logiciels libres. Il a également créé et maintient http://freebsdwiki.net et http://ubuntuwiki.net.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.