Wonderlan ?
Old OpenBSD is old
Il y a quasi deux ans, je vous avais parlé de la mise en place d'une Alix sous OpenBSD comme routeur. J'avais un certain nombre de limitation avec cette carte, comme le fait qu'elle est mon routeur donc si j'upgrade je n'ai plus de réseau. De plus, elle est en i386 et c'est la seule machine de mon lan avec cette architecture donc je ne peux pas compiler sur une autre pour lui donner des binaires ; avec les perfs du CPU et la carte CF pour la mémoire, je ne voulais/pouvais pas compiler avec et comme le projet ne fournit pas des patchs binaires .... Résultat des courses, j'ai pas upgradé pendant longtemps j'avais pas mal de patchs de sécu non appliqués (je sais, c'est mal :().
Je suis quand même arrivé à 255 jours d'uptime, ce qui en dit long aussi sur la stabilité de la machine (et non, l'uptime n'est pas codé sur 8 bits :p).
Des envies de jouer
Cela fait un moment que j'ai envie de jouer avec diverses choses présentes dans OpenBSD, tel que vlan(4), trunk(4) (j'veux dire, davantage que sur un laptop), carp(4), toute la stack ipsec et les daemons de routage openbgpd et ospfd. Mon réseau était trop limité pour faire tout ça.
Quel hardware ?
Pour le switch
J'ai donc acheté un switch TL-SG3424 pour avoir plein de ports et arrêter de passer mon temps à brancher/débrancher des machines. Le switch est aussi manageable, contrairement à mon switch précédent et me permet de faire des vlans, du trunk lacp etc.
Pour le routeur
A vrai dire, la question ne s'est pas vraiment posée, j'ai toujours été satisfait de l'alix donc je me suis naturellement dirigé vers son successeur, l'apu. La machine est plus puissante, a des NIC gigabit et supporte même le boot usb. Quand je repense à l'installation de l'alix qui avait du se faire via le pxe, le boot usb devrait faciliter quand même les débutants à franchir le pas :p Et surtout son architecture est de l'amd64, donc ça me permet d'homogénéiser mon lan \o/
Ok ok, et concrètement
On installe -stable
Je vais éviter de compiler dessus, j'ai des machines plus rapides dans mon lan. Même si 5.7 sort dans même pas un mois, je voulais du -stable donc j'ai choisi 5.6. 5.6 ayant pas mal de patchs de sécu à appliquer, j'ai donc commencé par builder une -stable afin de partir avec du neuf.
On crée la clé usb bootable avec dd if=$RELEASEDIR/miniroot56.fs
of=/dev/rsd2c
.
Pour se connecter en serial à la machine, on utilise
cu -s 115200 -l /dev/ttyU0
On devrait voir les messages de boot. On peut appuyer sur F12 pour
avoir la liste des périphériques USB puis on boote sur la clé USB. Au
prompt boot>
on indique à OpenBSD qu'on est sur une console serial
avec une vitesse de 115200 bauds
stty com0 115200
set tty com0
Puis on installe OpenBSD, comme d'hab.
On choisit comment on va faire son réseau
Répartition des interfaces
J'ai dit précédemment que je voulais jouer avec du trunk(4) et des vlan(4). Sur l'alix j'avais sur les trois interfaces :
- un switch pour mon lan
- un ap wifi pour mon wifi et faire mes trunk(4) failover sur mes lappy
- mon modem en mode bridge pour monter une session pppoe pour mon adsl
Sur les trois interfaces, je ne sais jamais laquelle est la 0 et laquelle est la 2, seule la 1 étant au milieu je sais avec certitude laquelle c'est.
Mon but étant de faire un trunk(4) avec deux interfaces et de connecter la troisième au modem, j'ai choisi de faire le trunk(4) sur les interfaces 0 et 2, et d'utiliser la 1 pour le modem car l'ordre des interfaces pour un trunk lacp n'a pas d'importance (malin comme un singe, t'as vu).
Les vlans
J'avais donc deux réseaux :
- un pour mon lan
- un pour mon wifi
J'ai donc décidé de mettre ces deux réseaux sous forme de vlan(4). Hébergeant aussi une probe atlas, je me suis dit que ça pouvait être mieux de la mettre dans un vlan(4) séparé for moar fun.
Donc cela donne :
- lan = vlan 10
- wifi = vlan 20
- probe atlas = vlan 30
non mais j'ai dit concrètement
# ls hostname*
hostname.pppoe0 hostname.re0 hostname.re1 hostname.re2 hostname.trunk0 hostname.vlan10 hostname.vlan20 hostname.vlan30
Dans l'ordre (du plus simple au plus compliqué), re1 c'est donc celle pour le modem, rien ne change sur celle-là. re0
et re2 servent à faire le trunk(4) lacp et ne contiennent donc
seulement : up
. Le trunk(4) lacp :
trunkproto lacp trunkport re0 trunkport re2
up
Maintenant, on peut mettre les vlans avec les adresses
IP. hostname.vlan10 est simplement un copié collé de
hostname.vrmachin de l'alix, préfixé de vlandev
trunk0
. hostname.vlan20 pareil, copié/collé de hostname.vrautremachin
de l'alix préfixé de vlandev trunk0
. Un exemple concret avec hostname.vlan30 :
vlandev trunk0
inet 10.250.250.1/24
inet6 2001:910:1322:250::1 64
les autres confs
On récupère de l'alix :
- /etc/pf.conf
- /etc/dhcpd.conf
- toutes les merdes qu'il y a dans les $HOME
On installe tout ça sur l'apu, on reboot en la branchant comme il faut, et on debug ce qui ne marche pas.
Mais tout ça c'est vraiment utile ?
Typiquement le trunk(4) lacp, ne me sert pas à grand chose, mais comme dit au début de l'article mon but est de jouer :)
Et ça ne fait que commencer. J'espère.