Login Logout

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

La commande 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 en direct la quantité de trafic qui passe sur l’interface em0 :

netstat -b -n -w1 -h -I em0

Voir la quantité de trafic écoulé sur l’interface em0

netstat -hI em0 # en nombre de paquets
netstat -bhI em0 # en quantité de data

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.