Ça y est, la fibre est arrivée ! Enfin depuis juillet. On passe d’environ 25Mbps à 300 puis 400Mbps depuis quelques jours avec l’offre actuelle de mon fournisseur d’accès à internet. La première chose à changer pour en profiter est donc de passer de bornes wifi 802.11n à 150Mbps (avec un lien montant en 100Mbps…) avec des répéteurs à du wifi 6 maillé à 3000Mbps, les prix pouvant atteindre des montants astronomiques pour des technologies plus récentes. J’ai donc opté pour un kit de 3 stations Mercusys H80X après avoir lu les bons avis sur les débits et le prix contenu que j’ai complété avec un autre kit H3000X payé un poil moins cher. Je ne sais pas quelle est la différence entre les deux à part que le premier n’est vendu que par trois alors que l’autre l’est à l’unité, par deux ou trois mais les caractéristiques techniques sont identiques.
Il faut être à côté de la borne principale, celle qui est connectée au lien montant, pour profiter du meilleur débit. Avec un lien montant à 1Gbps, j’arrive presque à saturation mais il faudrait donc une carte 2,5Gbps au moins pour tirer parti de l’entièreté des capacités du wifi. Évidemment, ça dépend aussi de la distance et les débits sont divisés par deux quand on est connecté à une autre borne. Ce sont surtout les enfants qui sont contents avec une meilleure latence.
Par contre, la VM KVM openbsd qui me servait de routeur affiche des débits lamentables qui ne dépassent pas 20Mbps, ce qui suffisait avec une liaison VDSL. Je crois que c’est lié aux pilotes virtio.
Pour illustrer ça, voici le résultat d’un test iperf3 vers internet :
router# iperf3 -c iperf.online.net
Connecting to host iperf.online.net, port 5201
[ 4] local 192.168.1.14 port 30484 connected to 51.158.1.21 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 4] 0.00-1.01 sec 256 KBytes 2.08 Mbits/sec 0 11.7 KBytes
[ 4] 1.01-2.01 sec 256 KBytes 2.10 Mbits/sec 0 12.3 KBytes
[ 4] 2.01-3.01 sec 384 KBytes 3.15 Mbits/sec 0 14.1 KBytes
[ 4] 3.01-4.01 sec 256 KBytes 2.10 Mbits/sec 0 8.85 KBytes
[ 4] 4.01-5.01 sec 384 KBytes 3.15 Mbits/sec 0 12.0 KBytes
[ 4] 5.01-6.01 sec 256 KBytes 2.10 Mbits/sec 0 5.66 KBytes
[ 4] 6.01-7.01 sec 384 KBytes 3.15 Mbits/sec 0 9.51 KBytes
[ 4] 7.01-8.01 sec 256 KBytes 2.10 Mbits/sec 0 11.3 KBytes
[ 4] 8.01-9.01 sec 256 KBytes 2.10 Mbits/sec 0 7.62 KBytes
[ 4] 9.01-10.01 sec 256 KBytes 2.09 Mbits/sec 0 8.38 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 4] 0.00-10.01 sec 2.88 MBytes 2.41 Mbits/sec 0 sender
[ 4] 0.00-10.38 sec 2.91 MBytes 2.35 Mbits/sec receiver
iperf Done.
C’est quand même assez mauvais depuis la VM elle-même mais étrangement c’était quand même meilleur depuis une autre machine du réseau.
Un autre test vers une machine sur le lan donne des résultats un peu meilleurs mais c’est pas non plus foufou :
router# iperf3 -c iperf.lan
Connecting to host iperf.lan, port 5201
[ 4] local 192.168.0.1 port 38939 connected to 192.168.0.172 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 4] 0.00-1.02 sec 2.25 MBytes 18.5 Mbits/sec 0 42.1 KBytes
[ 4] 1.02-2.02 sec 1.88 MBytes 15.7 Mbits/sec 0 31.8 KBytes
[ 4] 2.02-3.01 sec 1.75 MBytes 14.9 Mbits/sec 0 25.2 KBytes
[ 4] 3.01-4.02 sec 2.12 MBytes 17.6 Mbits/sec 0 38.9 KBytes
[ 4] 4.02-5.01 sec 1.75 MBytes 14.8 Mbits/sec 0 35.0 KBytes
[ 4] 5.01-6.01 sec 1.75 MBytes 14.6 Mbits/sec 0 34.7 KBytes
[ 4] 6.01-7.01 sec 1.25 MBytes 10.5 Mbits/sec 0 25.4 KBytes
[ 4] 7.01-8.01 sec 2.12 MBytes 17.8 Mbits/sec 0 32.1 KBytes
[ 4] 8.01-9.01 sec 2.12 MBytes 17.8 Mbits/sec 0 26.8 KBytes
[ 4] 9.01-10.01 sec 2.12 MBytes 17.8 Mbits/sec 0 32.1 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 4] 0.00-10.01 sec 19.1 MBytes 16.0 Mbits/sec 0 sender
[ 4] 0.00-20.03 sec 19.2 MBytes 8.02 Mbits/sec receiver
iperf Done.
Si on fait le test avec une VM KVM sous Linux, on a quand même de meilleurs résultats :
root@f77f0d5c-9756-4d22-96c1-eecddb41d748:~# iperf3 -c iperf.online.net
Connecting to host iperf.online.net, port 5201
[ 5] local 192.168.0.191 port 49566 connected to 51.158.1.21 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.01 sec 20.6 MBytes 172 Mbits/sec 0 655 KBytes
[ 5] 1.01-2.01 sec 20.8 MBytes 174 Mbits/sec 0 757 KBytes
[ 5] 2.01-3.00 sec 21.2 MBytes 180 Mbits/sec 0 840 KBytes
[ 5] 3.00-4.00 sec 22.2 MBytes 186 Mbits/sec 0 953 KBytes
[ 5] 4.00-5.00 sec 20.9 MBytes 175 Mbits/sec 0 953 KBytes
[ 5] 5.00-6.09 sec 17.4 MBytes 134 Mbits/sec 0 953 KBytes
[ 5] 6.09-7.00 sec 3.46 MBytes 31.8 Mbits/sec 0 953 KBytes
[ 5] 7.00-8.01 sec 5.79 MBytes 48.2 Mbits/sec 1 1003 KBytes
[ 5] 8.01-9.00 sec 16.9 MBytes 143 Mbits/sec 0 1.04 MBytes
[ 5] 9.00-10.00 sec 16.6 MBytes 139 Mbits/sec 0 1.04 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 166 MBytes 139 Mbits/sec 1 sender
[ 5] 0.00-10.11 sec 163 MBytes 136 Mbits/sec receiver
iperf Done.
Et c’est encore mieux avec une VM bhyve sour Linux :
root@4c5b11bb-a425-4b10-8a0b-ff156a834052:~# iperf3 -c iperf.online.net
Connecting to host iperf.online.net, port 5201
[ 5] local 192.168.0.170 port 43948 connected to 51.158.1.21 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 15.2 MBytes 127 Mbits/sec 0 742 KBytes
[ 5] 1.00-2.02 sec 40.9 MBytes 337 Mbits/sec 0 1.51 MBytes
[ 5] 2.02-3.00 sec 42.5 MBytes 363 Mbits/sec 0 1.51 MBytes
[ 5] 3.00-4.02 sec 42.4 MBytes 349 Mbits/sec 0 1.60 MBytes
[ 5] 4.02-5.02 sec 35.6 MBytes 299 Mbits/sec 0 1.70 MBytes
[ 5] 5.02-6.01 sec 39.6 MBytes 335 Mbits/sec 0 1.70 MBytes
[ 5] 6.01-7.00 sec 32.1 MBytes 272 Mbits/sec 0 1.70 MBytes
[ 5] 7.00-8.03 sec 13.6 MBytes 110 Mbits/sec 0 1.79 MBytes
[ 5] 8.03-9.00 sec 32.5 MBytes 282 Mbits/sec 0 1.88 MBytes
[ 5] 9.00-10.00 sec 34.5 MBytes 289 Mbits/sec 0 1.99 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 329 MBytes 276 Mbits/sec 0 sender
[ 5] 0.00-10.08 sec 329 MBytes 274 Mbits/sec receiver
iperf Done.
J’ai donc créé une nouvelle zone OS pour assurer les mêmes fonctions, et là c’est sans appel :
[root@router01 ~]# iperf3 -c iperf.online.net
Connecting to host iperf.online.net, port 5201
[ 6] local 192.168.1.27 port 43526 connected to 51.158.1.21 port 5201
[ ID] Interval Transfer Bitrate
[ 6] 0.00-1.00 sec 43.1 MBytes 361 Mbits/sec
[ 6] 1.00-2.00 sec 48.0 MBytes 403 Mbits/sec
[ 6] 2.00-3.00 sec 47.9 MBytes 402 Mbits/sec
[ 6] 3.00-4.00 sec 47.9 MBytes 402 Mbits/sec
[ 6] 4.00-5.00 sec 48.0 MBytes 402 Mbits/sec
[ 6] 5.00-6.00 sec 46.9 MBytes 393 Mbits/sec
[ 6] 6.00-7.00 sec 48.0 MBytes 402 Mbits/sec
[ 6] 7.00-8.00 sec 47.9 MBytes 402 Mbits/sec
[ 6] 8.00-9.00 sec 48.1 MBytes 403 Mbits/sec
[ 6] 9.00-10.00 sec 47.0 MBytes 394 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 6] 0.00-10.00 sec 473 MBytes 396 Mbits/sec sender
[ 6] 0.00-10.28 sec 473 MBytes 386 Mbits/sec receiver
iperf Done.
Et vers une machine sur le réseau, on n’est pas loin de la limite :
[root@router01 ~]# iperf3 -c iperf.lan
Connecting to host iperf.lan, port 5201
[ 5] local 192.168.0.9 port 64196 connected to iperf.lan port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 125 MBytes 1.05 Gbits/sec
[ 5] 1.00-2.00 sec 117 MBytes 983 Mbits/sec
[ 5] 2.00-3.00 sec 95.6 MBytes 803 Mbits/sec
[ 5] 3.00-4.00 sec 113 MBytes 948 Mbits/sec
[ 5] 4.00-5.00 sec 133 MBytes 1.11 Gbits/sec
[ 5] 5.00-6.00 sec 95.8 MBytes 804 Mbits/sec
[ 5] 6.00-7.00 sec 67.8 MBytes 567 Mbits/sec
[ 5] 7.00-8.01 sec 83.4 MBytes 695 Mbits/sec
[ 5] 8.01-9.00 sec 75.8 MBytes 641 Mbits/sec
[ 5] 9.00-10.01 sec 101 MBytes 844 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 1007 MBytes 844 Mbits/sec sender
[ 5] 0.00-10.02 sec 1007 MBytes 843 Mbits/sec receiver
iperf Done.
J’obtiens les mêmes débits depuis le reste du réseau ; en wifi, ça dépend évidemment de plusieurs facteurs dont la distance par rapport aux points d’accès.
Sur la VM OpenBSD, plusieurs services tournaient qu’il faut également remplacer.
Pour relayd, j’ai créé une zone pour héberger un serveur haproxy. Pour wireguard, j’ai créé une VM bhyve sous Linux parce que je n’ai pas réussi à le faire fonctionner dans une zone SmartOS. Pour les dépôts git de mes graphes Logseq - il faudra que je fasse une note à ce propos, j’ai créé une zone SmartOS.
Et pour router tout ce beau monde, j’ai mis en place du port mapping sur le routeur dans /etc/ipf/ipnat.conf
:
rdr net1 192.168.1.27/32 port 22 -> 192.168.0.171 port 22
rdr net1 192.168.1.27/32 port 80 -> 192.168.0.169 port 80
rdr net1 192.168.1.27/32 port 443 -> 192.168.0.169 port 443
rdr net1 2a01:cafe:dead:beef::1/128 port 22 -> 2a01:cafe:aaaa:bbbb:cccc:dddd:eeee:fff0 port 22
rdr net1 2a01:cafe:dead:beef::1/128 port 80 -> 2a01:cafe:aaaa:bbbb:cccc:dddd:eeee:ffff port 80
rdr net1 2a01:cafe:dead:beef::1/128 port 443 -> 2a01:cafe:aaaa:bbbb:cccc:dddd:eeee:ffff port 443
rdr net1 192.168.1.27/32 port 51820 -> 192.168.0.170 port 51820 udp
[
La première ligne permet d’atteindre le port du serveur ssh de la VM contenant les depôts git Logseq pour la synchronisation entre tous les clients. La seconde et la troisième autorisent l’accès aux ports http et https de la zone contenant le reverse proxy haproxy. Les trois suivantes font la même chose en IPv6. Et enfin la dernière permet aux clients wireguard de se connecter sur le serveur dans la VM bhyve.
En parlant d’IPv6, la box de mon fournisseur autorise la délégation de préfixe. J’utilise cette fonctionnalité avec dhcpcd et la configuration suivante dans /opt/local/etc/dhcpcd.conf
:
duid
noipv6rs
waitip 6
vendorclassid
option domain_name_servers, domain_name, domain_search
option classless_static_routes
option interface_mtu
option host_name
option rapid_commit
require dhcp_server_identifier
slaac hwaddr
interface net1
ipv6rs
# Assign WAN the iaid 1.
iaid 1
# Assign a Normal Address to the interface with iaid 1 (i.e. WAN).
ia_na 1
# Delegate a prefix with wan interface iaid 1 (i.e. WAN) and lan interface LAN.
#ia_pd 1 net0
ia_pd 1/::/64 net0/0/64
Il faut alors lancer dhcpcd net1
, je n’ai pas encore trouvé comment lancer ça automatiquement au démarrage de la VM.
Et pour que les clients configurent automatiquement une adresse et le routeur IPv6, on ajoute le préfixe fourni par l’opérateur dans /etc/inet/ndpd.conf
:
if net0 AdvSendAdvertisements 1
prefix 2a01:cafe:aaaa:bbbb::/64 net0
Et on active le service ndp :
svcadm enable ndp