Réseau








1 Configurer le réseau
   1.1 Adresse IP
    1.2 Dhcp
    1.3 Route
    1.4 DNS
2 Connexion ADSL
    2.1 Configurer la connexion
    2.2  Partager la connexion
    2.3 Sécuriser la connexion
    2.4 Filtrage transparent

3 Le Wifi (802.11b) : Configurer la connexion en AP (Point d'accès)


1 Configuration de base

1.1 Configurer les cartes réseau

La gestion réseau est très simple, même pour les cartes un peu exotiques. Quiconque a pataugé avec le module pcmcia sous Linux appréciera. Pour connaître votre interface réseau : dmesg |more. La carte réseau est reconnue automatiquement au démarrage de votre machine.
Contrairement au kernel Linux, BSD ne classe pas les interfaces par type, mais par constructeur, ainsi pas de eth0, eth1... pour les cartes ethernet, mais 2 ou 3 lettres pour le constructeur puis 1 chiffre pour le numéro de carte en commençant par 0 pour la 1ère de la série:

dc :Xircom PCMCIA
rl : Realtek 8139
fxp :Intel Etherpro
xl  : 3 Com
ne : Realtek 8029
le : Interface Virtuelle de VMWare
wi,an : cartes Wi-Fi 802.11        wi pour le driver générique, an pour les cartes cisco aironet.

Pour la configurer lancer alors la commande 
ifconfig fxp0 172.16.0.1 netmask 255.255.0.0 up
fxp0 pour une carte Intel avec comme adresse IP 172.16.0.1 et up pour la rendre active.
Pour vérifier lancer la commande  
ifconfig -a 
qui affiche tous les paramètres réseau (et non ifconfig qui n'affiche sous Linux que les interfaces up).

Pour rendre active cette carte réseau au redémarrage de la machine, vous devez créer le fichier /etc/hostname.fxp0 avec dedans la ligne
inet 172.16.0.1 255.255.0.0 NONE
Un truc comme cela doit pouvoir le faire sans problème 
echo "inet 172.16.0.1 255.255.0.0 NONE" > /etc/hostname.fxp0
Notons que NONE représente le type d'option que l'on peut passer, c'est à dire en pratique la connexion physique :
10 ou 100Mb, simple ou full duplex.

Pour ajouter une deuxième carte réseau faire la même chose avec le nom de la carte (voir cela avec dmseg). Si la carte est la même, on a alors fxp1. 

Éventuellement pour relancer le réseau sh /etc/netstart 

1.2 Client DHCP

Si vous souhaitez que votre machine OpenBSD soit cliente d'un serveur DHCP, vous devez simplement mettre dhcp dans le fichier /etc/hostname.fxp0 (fxp0 dépend de votre carte réseau, à vous de l'adapter). Il ne doit donc, dans ce fichier plus y avoir que cela.

Pour relancer une demande d'adresse IP auprès d'un serveur DHCP, vous devez relancer avec la commande 
dhclient     fxp0
     où fxp0 est le nom de l'interface réseau
ou 
sh /etc/netstart
Vous pouvez paramétrer ce client avec le fichier /etc/dhclient.conf. Voir le man dhclient.conf pour en savoir plus.

1.3 Les routes
 
La passerelle par défaut se trouve dans le fichier /etc/mygate, on peut aussi la mettre dans chaque fichier de configuration des cartes réseau.
route show  affiche toutes les routes, ou netstat -nr.
Pour ajouter une route la syntaxe est assez simple, route add -host 195.98.246.50 172.16.0.10 (pour ajouter une route en direction de la machine 195.98.246.50).  -net si vous ajoutez une route pour un réseau.
La commande route ne change pas beaucoup de son équivalent sous Linux.
Afin de lancer votre route au démarrage vous devez placer la (ou les) lignes dans le fichier /etc/mygate ou dans /etc/hostname.fi (par carte réseau) ou pour ajouter d'autres routes /etc/rc.local.

Pour faire de votre machine OpenBSD une passerelle (en fait un routeur) vous devez modifier dans le fichier /etc/sysctl.conf la ligne net.inet.ip.forwarding=1 (Par défaut il n'est pas actif). Il faut que le noyau soit compilé pour cela, mais c'est le cas pour le noyau par défaut (GENERIC). Pour ne pas être obligé de redémarrer faites sysctl -w net.inet.ip.forwarding=1 (qui sera perdu au redémarrage). 
Attention, ceci ne concerne que IPV4 (l'actuelle version),si vous vous lancez dans le routage IPV6 (c'est bien!), la commande devient :
net.inet6.ip6.forwarding=1 dans /etc/sysctl.conf ou avec sysctl -w net.inet6.ip6.forwarding=1. 
 
1.4 Configurer le client DNS

Tout se passe dans /etc/resolv.conf qui doit avoir la tête suivante :
search ac-creteil.fr      (votre domaine)
nameserver    193.252.19.4    (le DNS de votre provider)
nameserver    193.252.19.3     (un second au cas ou le premier tombe)        # Très fortement conseillé !
lookup file bind

Cela n'empêche pas d'avoir un fichier /etc/host en plus.
Cela ne change pas beaucoup du monde Linux.
Pour prendre les modifications en compte sh /etc/netstart


2 Connexion ADSL

Pour commencer il vous faut une ligne ADSL (netissimo 1 ou 2), un modem loué à FT, j'utilise ici un modem alcatel ethernet - ethernet. 
Le but est ici d'utiliser une machine OpenBSD comme passerelle vers l'internet. On envisage donc de mettre dessus deux cartes réseau, une vers le réseau local, une directement sur le modem. Si on veut mettre en place une DMZ il est possible de mettre en place une troisième ou plus. Mais les règles de pf commencent à devenir complexes.

Le protocole mis en place par FT est actuellement PPPoE. Celui ci est déjà supporté par votre serveur OpenBSD. Les fichiers de configuration se trouvent dans /etc/ppp.
Par défaut le modem Alcatel à comme adresse IP 10.0.0.138. Vous pouvez modifier sa configuration en utilisant votre navigateur. Les modems alcatel ont des problèmes de sécurité. On peut par exemple simplement y accéder en telnet facilement. 

2.1 Configurer la connexion
Copier le fichier exemple /etc/ppp/ppp.conf.sample en ppp.conf

# ppp.conf

default:
 set log Phase Chat LCP IPCP CCP tun command
 set redial 15 28800
 set reconnect 15 28800

pppoe:
 set device "!/usr/sbin/pppoe -i vr0"
 disable acfcomp protocomp
 deny acfcomp
 set mtu max 1492
 set speed sync
 enable lqr
 set lqrperiod 5
 set cd 5
 set dial
 set login
 set timeout 0
 set authname VOTRE_INDENTIFIANT_DE_CONNEXION
 set authkey VOTRE_MOT_DE_PASSE_DE_CONNEXION
 enable sroutes
 add default HISADDR
 enable mssfixup
 enable dns

Enlevez toutes les lignes inutiles, enfin qui ne sont pas pppoe....et il y en a.
Un ppp.conf propre à télécharger.

Puis faites de même avec le fichier ppp.linkup.sample
En fait vous mettez en place les règles de FireWall propre à la connexion ADSL au moment ou celle-ci se monte. Impossible d'activer le firewall dès le démarrage, le tunnel ppp n'existe pas encore, rien ne fonctionnerait.
 
# ppp.linkup 

MYADDR:
! sh -c "/sbin/ifconfig pflog0 up"
! sh -c "/sbin/pfctl -e -l tun0 -F all -O agressive -R /etc/pf.conf -N /etc/nat.conf" (3.0 & 3.1)
! sh -c "/sbin/pfctl -e -l tun0 -F all -O agressive -f /etc/pf.conf " (3.2)

De même pour le ppp.linkdown

MYADDR:
! sh -c "/sbin/pfctl -F all -d"  
 
on supprime toutes les règles mises en place pour la connexion ADSL. 
On peut aussi recréer un autre fichier de règles lorsque la connexion adsl n'est pas active.
Il vous reste à lancer la connexion pour voir ce qui se passe.
ppp --ddial pppoe
un petit script à lancer par rc.local, pour lancer la connexion au démarrage.
Vous pouvez tester depuis la machine elle même (en faisant un ping vers l'extéreiur).
Vous pouvez aussi en faisant un ifconfig -a vérifier l'adresse IP que vous avez reçu de votre provider.


Enfin faites netstat -nr pour vérifier que vous avez bien une route par défaut.
Remarquez que l'adresse que j'ai reçu de mon provider est 80.11.133.196 et que la passerelle par défaut est 80.11.133.1



Si vous souhaitez que votre connexion garde ou reprenne la ligne de façon permanente vous devez ajouter dans le fichier /etc/ppp/options
lock
persist
noauth
debug

2.2 Partager la connexion

Le but étant de partager la connexion avec les autres machines de votre réseau intranet, il vous faut activer le partage.
Dans le fichier /etc/sysctl.conf remplacez net.inet.ip.forwarding=0 par net.inet.ip.forwarding=1

Puis dans le fichier /etc/nat.conf ajouter la ligne suivante :
nat                         on tun0             from                 172.16.0.0/16 to any -> tun0
Active
la "mascarade IP" sur l'interface tun0   depuis le sous-réseau    172.16.0.0/16        vers toute adresse

Pour que les clients puissent utiliser cette passerelle, vous devez indiquer comme route par défaut, l'adresse IP de la carte réseau côté intranet de cette machine.
Afin que cela soit pris en compte il faut rebooter votre machine. Mais avant toute chose pensez à mettre en place votre pare-feu pf.

2.3 Sécuriser votre connexion ADSL

En fait vous devez mettre en place des règles avec pf.
A savoir dans ce cas que l'interface côté internet est tun0 et non pas le nom de votre carte réseau.
Le principe consiste à tout bloquer en entrée et autoriser les protocoles dont vous avez besoin en sortie.
Les problèmes un peu compliqués à résoudre sont le ftp, netmeeting... etc.

2.4 Filtrage transparent :

Le pont filtrant a deux cartes réseaux, comme un routeur, MAIS aucune n'a d'adresse IP. Par conséquent la machine est pratiquement invisible. Elle servira à interconnecter deux réseaux en routant les paquets et en les filtrant, car on prendra soin d'activer pf. Il suffit d'activer le routage IP ou IPV6.
Intérêts :
- Vous séparez les domaines de collision (comme un commutateur).
- Vous routez IP et bloquez IPX, NetBeui....
- Vous filtrez de manière quasi indétectable le traffic. (En fait l'entête Ethernet sera celle de la carte réseau du pont et non celle de la machine expéditrice).

Inconvénients :
- Sans adresse IP, votre machine sera incapable de communiquer (pas de Cvsup, pas de mail, pas de SSH, rien!) .
Solution
:Mettre une troisième carte réseau qui aura, elle, une adresse IP. une vieille carte 10 Mb suffira pour gérer la machine en SSH. Attention, votre pont redevient détectable (et attaquable) par cette carte.
- Les cartes réseaux sont en mode promiscious, elles écoutent tout le trafic réseau et pas seulement celui dont elles sont destinatrices. Cela induira une charge supplémentaire pour la carte et le bus. Certaines (tl :
Texas Instruments ThunderLAN Ethernet driver) ne supportent pas ce mode.

Comment ? :
Supposons que vous ayez deux cartes 3Com:
cat /etc/hostname.xl0        donne         up.
cat /etc/hostname.xl1        donne         up.
cat /etc/bridgename.bridge0 donne
add xl0
add xl1
blocknonip xl0           
#Optionnel ; permet de bloquer les paquets non-IP (IPX ou NetBEUI par ex.)
blocknonip xl1
Puis brconfig bridge0 up.

Ou alors, sans le fichier /etc/bridgename.bridge0:
brconfig bridge0 add xl0 add xl1 up

Il est très recommandé de n'appliquer de règles de filtrage que sur une des deux cartes réseaux. Rien n'interdit de le faire sur les deux, mais attention aux erreurs de configurations; c'est bien plus compliqué.
n'oubliez pas man brconfig.Pour y trouver plein d 'idées.

3 Connexion sans fil : Wifi (802.11b)

        Très à la mode, le wifi est ,bien entendu, géré par OpenBSD. Comme sous Linux, les cartes à base de chipset Prism sont parfaitement reconnues. Sans faire de publicité pour l'un ou pour l'autre des fabricants de carte utilisant ce chipset, j'ai fait tous les tests,ici, sur une carte Netgear PCI MA311 et une carte PCMCIA Netgear MA401. La présence d'un driver pour cartes Aironet de Cisco montre que ce choix (Netgear) est loin d'etre le seul. Pour  le choix, je ne saurais que vous recommender un des nombreux sites traitant du wireless tous OS confondus (OpenBSD inclus).


Nous allons voir comment transformer votre routeur ADSL sous OpenBSD en point d'accès :
1. Vérifiez que votre carte Wifi est reconnue : dmesg |more.
2.
"Allumez" et ajoutez une IP fixe, dans une plage d'adresses privées, à cette carte :  ifconfig wi0 10.10.10.10 netmask 255.255.255.0 up, par exemple.
3. Réglez-la en AP :wicontrol -i wi0 -p 6
Ajoutez maintenant un serveur dhcpd et c'est parti. N'oubliez pas de rajouter les règles qui vont bien dans pf, quand meme..
Ca marche.....presque.
Attention :Tout ce ci est TOTALEMENT non sécurisé.. N'importe qui avec sa carte wifi sort de votre routeur, voire plus si vous avez été laxiste sur les règles de filtrage.
Ajout prochain : la sécu.


© Philippe Schwarz -  Philippe Chadefaux  - $Id: Reseau.htm,v 1.16 2003/10/09 08:32:36 phil Exp $ -