291 lines
5.9 KiB
Markdown
291 lines
5.9 KiB
Markdown
---
|
|
categories: openbsd network
|
|
title: Howto Réseau sous OpenBSD
|
|
---
|
|
|
|
OpenBSD est particulièrement pratique comme équipement réseau car
|
|
celui-ci intègre toute une panoplie d'outil réseau dans le système de
|
|
base que certaines applications tierces (via les ports/pckages)
|
|
viennent compléter.
|
|
|
|
[La FAQ6 est consacrée au réseau](https://www.openbsd.org/faq/faq6.html)
|
|
|
|
La commande
|
|
[ifconfig](http://www.openbsd.org/cgi-bin/man.cgi?query=ifconfig) est
|
|
l'outil principal pour gérer le réseau.
|
|
|
|
# Configuration
|
|
|
|
Configuration manuelle d'une interface :
|
|
|
|
~~~
|
|
# ifconfig vr0 192.0.32.10/24
|
|
# ifconfig vr0 inet6 2a01:4:3:2::1/64
|
|
~~~
|
|
|
|
Suppression d'une adresse d'une interface :
|
|
|
|
~~~
|
|
# ifconfig vr0 192.0.32.10/24 delete
|
|
# ifconfig vr0 inet6 2a01:4:3:2::1/64 delete
|
|
~~~
|
|
|
|
Configuration automatique :
|
|
|
|
~~~
|
|
# echo "inet 192.0.32.10 255.255.255.0" > /etc/hostname.vr0
|
|
# echo "inet6 2a01:4:3:2::1 64" >> /etc/hostname.vr0
|
|
~~~
|
|
|
|
Attention il ne s'agit pas de la même syntaxe qu'ifconfig, on ne met
|
|
pas le mot clé netmask, sinon la configuration ne sera pas chargée
|
|
(Voir `man hostname.if`). À noter qu'on peut aussi utiliser une
|
|
notation CIDR.
|
|
|
|
# Alias
|
|
|
|
Ajouter un alias :
|
|
|
|
~~~
|
|
# ifconfig vr0 inet alias 192.0.32.11 netmask 255.255.255.0
|
|
~~~
|
|
|
|
Supprimer un alias :
|
|
|
|
~~~
|
|
# ifconfig vr0 192.0.32.11 delete
|
|
~~~
|
|
|
|
# Manipulation de la table de routage
|
|
|
|
Afficher la table de routage :
|
|
|
|
~~~
|
|
# route -n show
|
|
~~~
|
|
|
|
Afficher que la table de routage pour l'IPv6
|
|
|
|
~~~
|
|
# route -n show -inet6
|
|
~~~
|
|
|
|
Ajouter une route par défaut :
|
|
|
|
~~~
|
|
# route add default 192.0.32.254
|
|
~~~
|
|
|
|
Ajouter une route pour une adresse :
|
|
|
|
~~~
|
|
# route add -host 192.0.33.42 192.0.32.253
|
|
~~~
|
|
|
|
Ajouter une route pour un réseau :
|
|
|
|
~~~
|
|
# route add 192.0.33.0/24 192.0.32.252
|
|
~~~
|
|
|
|
Pour supprimer une route :
|
|
|
|
~~~
|
|
# route delete 192.0.33.0/24
|
|
~~~
|
|
|
|
Voir la route utilisée pour joindre une IP :
|
|
|
|
~~~
|
|
# route get 8.8.8.8
|
|
~~~
|
|
|
|
# Debug / résolutions de problèmes
|
|
|
|
Voir des erreurs réseau :
|
|
|
|
~~~
|
|
# netstat -i
|
|
~~~
|
|
|
|
Voir des stats :
|
|
|
|
~~~
|
|
# netstat -s
|
|
~~~
|
|
|
|
Optimiser les buffers réseau :
|
|
|
|
~~~
|
|
# sysctl net.inet.udp.recvspace=262144
|
|
# sysctl net.inet.udp.sendspace=262144
|
|
~~~
|
|
|
|
Rappel des solutions "classiques" : soucis avec le MTU, ECN à
|
|
désactiver, Window Scaling à ajuster, Autoneg à désactiver
|
|
|
|
Voir la quantité de trafic qui passe sur l'interface em0 :
|
|
|
|
~~~
|
|
netstat -b -n -w1 -h -I em0
|
|
~~~
|
|
|
|
# PPPoE
|
|
|
|
Via configuration :
|
|
|
|
~~~
|
|
# cat /etc/hostname.bge0
|
|
description "Lien vers ADSL"
|
|
up
|
|
# cat /etc/hostname.pppoe0
|
|
inet 0.0.0.0 255.255.255.255 NONE \
|
|
pppoedev bge0 authproto chap \
|
|
authname 'LOGIN' authkey 'PASS' up
|
|
dest 0.0.0.1
|
|
inet6 <adresse IPv6> <masque>
|
|
~~~
|
|
|
|
Manuellement :
|
|
|
|
~~~
|
|
# ifconfig bge0 up
|
|
# ifconfig pppoe0 0.0.0.0 255.255.255.255 \
|
|
pppoedev bge0 authproto chap authname 'LOGIN' authkey 'PASS' up
|
|
# ifconfig pppoe0 0.0.0.0 0.0.0.1
|
|
# ifconfig pppoe0 inet6 <adresse IPv6>/<masque>
|
|
~~~
|
|
|
|
Pour stopper :
|
|
|
|
~~~
|
|
# ifconfig pppoe0 down
|
|
# ifconfig bge0 down
|
|
~~~
|
|
|
|
Rajouter des routes statiques vers PPPoE :
|
|
|
|
~~~
|
|
# route add 1.2.3.0/24 -ifp pppoe0 0.0.0.1
|
|
~~~
|
|
|
|
Gestion de la route _default_ avec PPPoE (attention, on ne peut pas se servir du fichier `/etc/mygate`) :
|
|
|
|
~~~
|
|
# rm /etc/mygate
|
|
# echo '!route add default -ifp pppoe0 0.0.0.1' >> /etc/hostname.pppoe0
|
|
# echo '!route add -inet6 default fe80::%pppoe0' >> /etc/hostname.pppoe0
|
|
~~~
|
|
|
|
# IPv6
|
|
|
|
Activation de l'autoconfiguration IPv6 :
|
|
|
|
~~~
|
|
# ifconfig em0 inet6 autoconf
|
|
~~~
|
|
|
|
Activation de *rtadvd* pour annoncer un préfixe et un routeur.
|
|
|
|
`/etc/rtadvd.conf` :
|
|
|
|
~~~
|
|
sis0:\
|
|
:addr="2001:4:3:2::":prefixlen#64:raflags#64:\
|
|
:mtu#1492
|
|
~~~
|
|
|
|
Puis on le lance :
|
|
|
|
~~~
|
|
# rtadvd sis0
|
|
~~~
|
|
|
|
ATTENTION, activer rtadvd ET l'autoconfiguration IPv6 sur la même machine (même si c'est pour des interfaces différentes) semble poser des problèmes.
|
|
Notamment l'ajout d'une adresse statique sur l'interface gérée par rtadvd n'ajoute pas de route "link" !
|
|
|
|
# Bridge
|
|
|
|
Pour faire un bridge, il faut créer un fichier `/etc/hostname.bridge0` et ajouter les interfaces à bridger. Il ne faudra pas oublier de « up » les interfaces.
|
|
|
|
/etc/hostname.bridge0
|
|
|
|
~~~
|
|
add em1
|
|
add em2
|
|
stp em1
|
|
stp em2
|
|
up
|
|
~~~
|
|
|
|
STP permet d'activer le spanning tree.
|
|
|
|
`/etc/hostname.em1`
|
|
|
|
~~~
|
|
up
|
|
~~~
|
|
|
|
`/etc/hostname.em2`
|
|
|
|
~~~
|
|
up
|
|
~~~
|
|
|
|
# Contrôle du STP
|
|
|
|
Un rappel sur le fonctionnement :
|
|
|
|
<https://en.wikipedia.org/wiki/Spanning_Tree_Protocol>
|
|
<http://www.cisco.com/image/gif/paws/10556/spanning_tree1.swf>
|
|
|
|
Un simple ifconfig permet d'afficher le status.
|
|
|
|
|
|
~~~
|
|
bridge0: flags=41<UP,RUNNING>
|
|
groups: bridge
|
|
priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
|
|
em2 flags=eb<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 3 ifpriority 128 ifcost 200000 discarding role alternate
|
|
em1 flags=eb<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 2 ifpriority 128 ifcost 65535 forwarding role root
|
|
|
|
~~~
|
|
|
|
On voit ici que le port em2 est bloqué, et le port em1 est le port pour contacter le bridge root.
|
|
|
|
On pourra changer la priorité d'un bridge pour forcer le passage par lui. Par défaut ils ont une valeur identique de 32768.
|
|
|
|
|
|
~~~
|
|
ifconfig bridge0 spanpriority 16384
|
|
~~~
|
|
|
|
Par défaut OpenBSD est en RSTP, la bascule prend ~6. En STP, la bascule prend ~30s.
|
|
|
|
~~~
|
|
bridge0: flags=41<UP,RUNNING>
|
|
groups: bridge
|
|
priority 0 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
|
|
designated: id 90:e2:ba:28:b2:01 priority 0
|
|
em2 flags=eb<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 3 ifpriority 128 ifcost 200000 forwarding role designated
|
|
em1 flags=eb<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 2 ifpriority 128 ifcost 65535 forwarding role designated
|
|
|
|
~~~
|
|
|
|
|
|
/!\\ Attention, toucher au maxage et fwddelay peut causer une boucle. On déconseille de toucher à ces valeurs.
|
|
|
|
On peut aussi changer le maxage et le fwddelay pour une bascule plus rapide. (Minimum de 6s).
|
|
|
|
|
|
~~~
|
|
ifconfig bridge0 maxage 6
|
|
ifconfig bridge0 fwddelay 6
|
|
~~~
|
|
|
|
Ainsi en théorie bascule durera entre 6 et 12s.
|