I. Présentation du schéma de l'installation▲
+----------+ +---------+ +--------------------------+ +---------------------+
| INTERNET | )) (( | FREEBOX |----| ROUTEUR/FIREWALL NETGEAR |--| )) (( |--| FreeBSD 6.1-RELEASE |
+----------+ +---------+ +--------------------------+ +---------------------+
IP: 192.168.1.1 IP: 192.168.1.3
Mon réseau personnel se compose de deux ordinateurs, une station de travail, un portable Acer Aspire 3000 avec une carte réseau Broadcom 802.11g Wi-Fi Certified sous FreeBSD, appelée ROMEO, à l'adresse IP 192.168.1.3 et un PC (non représenté sur le schéma) sous Windows XP Professionnel, appelé HECTOR, à l'adresse IP 192.168.1.2.
Ainsi qu'un routeur/pare-feu Netgear WPNT834, ADSL2+ sans fil RangeMax MiMO 108Mbp/s qui supporte les cryptages, WEP, WPA-PSK (TKIP), WPA2-PSK (AES) et WPA-PSK (TKIP) + WPA2-PSK (AES), à l'adresse IP 192.168.1.1 et une Freebox.
II. Comment puis-je obtenir les informations de ma carte réseau et récupérer son pilote ?▲
Je vais procéder en trois étapes, la première consiste à savoir si le noyau a détecté la carte réseau :
# dmesg | more
Pour faire défiler les informations, j'utilise les touches fléchées et après un court instant, j'obtiens ceci :
pci0: <network> at device 11.0 (no driver attached)
Est-ce la bonne carte ? Pour le savoir, étape n° 2, j'utilise la commande :
# pciconf -lv | more
Après une petite recherche, j'obtiens ceci :
none2@pci0:11:0: class=0x028000 card=0x03121468 chip=0x431814e4 rev=0x02 hdr=0x00
vendor = 'Broadcom Corporation'
class = network
pci0 correspond effectivement à ma carte Broadcom, je vais donc pouvoir, en troisième étape, me procurer mon pilote. FreeBSD ne propose pas de pilotes, mais il existe une solution : utiliser les pilotes Microsoft qui utilisent le protocole NDIS, disponibles sur le CD-ROM Aspire 3000/5000 Series System CD Rev 1.0 - Disk 1, dans le répertoire Drivers/802BG et je récupère les fichiers bcmwl5.inf et bcmwl5.sys.
III. Que dois-je faire avec le pilote Microsoft ?▲
À ce stade, mon pilote ne peut pas fonctionner sous FreeBSD sans avoir au préalable subi une petite transformation. Effectivement, je dois le convertir sous la forme d'un module.
Je vais créer un répertoire appelé ndis et y copier les fichiers situés, sur ma clé USB :
# mkdir /root/ndis && cp /mnt/usb/inf* sys* /root/ndis
Pour convertir mon fichier .inf, je vais utiliser un script, ndisgen afin de le transformer en un fichier ASCII, car par défaut, il est au format Unicode. La conversion requiert le programme iconv ainsi que, perl-5.8.8 et libiconv-1.9.2_2 que je vais maintenant récupérer et installer :
# pkg_add iconv-2.0_3.tbz
Je vais convertir mon pilote avec ndisgen :
# ndisgen
et suivre les étapes ci-dessous :
- sélectionner le choix n° 3 Convert driver ;
- saisir le chemin du fichier .inf, > /root/ndis/bcmwl5.inf ;
- appuyer sur la touche [Entrée] à la vue de ce message, « This .INF file appears to be Unicode » ;
- saisir le chemin du fichier .sys, > /root/ndis/bcmwl5.sys ;
- appuyer sur la touche [Entrée] à la vue de ce message : « This .SYS file appears to be in Windows(r) PE format » ;
- appuyer sur [Entrée] pour commencer la conversion ;
- appuyer sur la touche [Entrée] à la vue de ce message : « Conversion was successful » ;
- si vous avez un pilote supplémentaire, veuillez le saisir sinon, appuyez sur la touche [Entrée] pour continuer ;
- appuyer sur la touche [Entrée] à la vue de ce message : « List of files converted firmware files » ;
- appuyer sur la touche [Entrée] à la vue de ce message : « Press enter to compile the stub module and generate the driver module now », pour générer votre module.
Fin des opérations, j'obtiens les messages suivants :
Generating Makefile... done.
Building kernel module... done.
Cleaning up... done.
The file bcmwl5_sys.ko has been successfully generated.
Je vais appuyer une nouvelle fois sur la touche Entrée pour revenir au menu général et quitter le script ndisgen en choisissant le choix n° 4, Exit.
IV. Comment dois-je installer le module sous FreeBSD ?▲
Il existe deux possibilités, utiliser la commande kldload pour le charger immédiatement, par exemple :
# kldload ndis/bcmwl5_sys.ko
et vérifier que le module est chargé:
# kldstat
Je dois théoriquement obtenir cet affichage :
Id Refs Address Size Name
1 11 0xc0400000 691928 kernel
2 1 0xc0a92000 58554 acpi.ko
3 1 0xc3411000 62000 bcmwl5_sys.ko
4 1 0xc3473000 b000 if_ndis.ko
5 2 0xc347e000 13000 ndis.ko
soit, automatiser le démarrage du module à l'aide du fichier loader.conf avec les lignes suivantes :
ndis_load="YES"
if_ndis_load="YES"
bcmwl5_sys_load="YES"
bcmwl5_sys_name="/root/ndis/bcmwl5_sys.ko"
Il faut bien entendu, redémarrer FreeBSD, après quelques secondes, je me loggue et j'exécute la commande kldstat et j'obtiens un affichage identique à celui cité ci-dessus.
V. Quelle est l'utilité d'avoir chargé le module ?▲
Le module permet de charger l'interface réseau que l'on peut visualiser et/ou modifier ses paramètres avec la commande :
% ifconfig
J'obtiens l'affichage suivant :
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
ndis0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:0e:9b:d3:b5:7e
media: IEEE 802.11 Wireless Ethernet autoselect
status: no carrier
ssid "" channel 1
authmode OPEN privacy OFF txpowmax 100 protmode CTS
L'interfacelo0 appelée loopback et ndis0, mon interface.
VI. Comment dois-je configurer mon routeur ?▲
Je configure mon routeur avec le navigateur web en saisissant dans la barre d'adresse son adresse IP en l'occurrence : 192.168.1.1. Je m'identifie en indiquant mon login et mot de passe qui par défaut sont : admin et password. Par mesure de précaution, je vais modifier mon login et mot de passe en cherchant l'option adéquate.
Je vais définir le nom de mon réseau, SSID acronyme de (Service Set IDentifier) en choisissant l'option prévue à cet effet. Le nom du SSID sera VX-DG8E-ZLOA et je valide. Par la même occasion, je vais désactiver ([ ] Enable SSID Broadcast) la diffusion du nom SSID pour éviter d'éveiller la curiosité de mes voisins et je valide.
Je dois maintenant activer le cryptage de mon réseau afin d'assurer la confidentialité de mes données avec un algorithme de chiffrage. À ce jour, il existe, le WEP, acronyme de (Wired Equivalent Privacy) et WPA, acronyme de (Wi-Fi Protected Access). Si votre matériel le permet, utilisez de préférence, le WPA et en dernier recours, le WEP, pour des raisons de sécurité évidentes. Pour le moment, je vais laisser cette option sur none et je valide.
Une option intéressante, le filtrage des adresses MAC. Saisir une à une les adresses IP de vos ordinateurs. Ainsi seuls les appareils (reconnus sur le réseau par leur adresse MAC) pourront accéder au réseau. Malheureusement, le filtrage ne fonctionne pas avec la version actuelle du firmware, 1.0.41. Je vais désactiver cette option en attendant une nouvelle mise à jour.
Je vais maintenant configurer le poste client, mon portable pour qu'il puisse se connecter à Internet.
VII. Dois-je configurer mon interface réseau ?▲
Oui et pour cela, il faut télécharger le programme, wpa_supplicant. Il permet de s'authentifier à un accès sécurisé par WPA et WEP.
Je vais récupérer wpa_supplicant-0.3.8_2, libdnet-1.10_1 et procéder à l'installation :
# pkg_add wpa_supplicant-0.3.8_2.tbz
Je dois charger quelques modules via le fichier loader.conf en y insérant les lignes suivantes :
wlan_wep_load="YES"
wlan_tkip_load="YES"
wlan_ccmp_load="YES"
wlan_xauth_load="YES"
wlan_acl_load="YES"
Je vais redémarrer FreeBSD avec la commande reboot, me logguer de nouveau et vérifier avec la commande kldstat que tous les modules sont chargés.
# kldstat
J'obtiens ceci :
Id Refs Address Size Name
1 21 0xc0400000 696c30 kernel
2 2 0xc0a97000 ca80 if_ndis.ko
3 3 0xc0aa4000 1753c ndis.ko
4 1 0xc0abc000 64330 bcmwl5_sys.ko
5 1 0xc0b21000 2d48 wlan_wep.ko
6 1 0xc0b24000 6da4 wlan_ccmp.ko
7 1 0xc0b2b000 4040 wlan_tkip.ko
8 1 0xc0b30000 1b88 wlan_xauth.ko
9 1 0xc0b32000 2cf4 wlan_acl.ko
10 1 0xc0b35000 58554 acpi.ko
Une fois wpa_supplicant installé, je vais créer son fichier de configuration :
# touch /etc/wpa_supplicant.conf
et je vais ajouter la ligne suivante au fichier rc.conf :
ifconfig_ndis0="WPA DHCP"
Maintenant, je vais tester les différentes méthodes de cryptage.
VIII. Quels algorithmes de cryptage dois-je choisir ?▲
Arrivé sur l'interface de configuration de mon routeur, je choisis la page qui permet de modifier la méthode de cryptage WEP.
* Configuration à clé WEP (côté routeur) :
Je saisis ma passphrase, dl0r8q9p7r et je clique sur le bouton [Generate].
Attention sous Mozilla Firefox version 1.5.0.7, le bouton [Generate] ne fonctionne pas. Il faut donc utiliser Internet Explorer.
Security Options
(*) WEP
Security Encryption (WEP)
Authentication Type: [Automatic]
Security Encryption (WEP) Key
Passphrase: dl0r8q9p7r [Generate]
Key1: (*) E313B5E7FA
Key2: ( ) FAC2C1B14D
Key3: ( ) A2D49B641F
Key4: ( ) 57673F0968
* Configuration à clé WEP (côté client) :
Fichier à modifier : /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=2
network={
ssid="VX-DG8E-ZLOA"
key_mgmt=NONE
wep_key0=E313B5E7FA
wep_tx_keydx=0
}
Je sauvegarde mon fichier et je teste la configuration :
/etc/rc.d/netif start
* Configuration à clé WEP partagée (côté routeur) :
Security Options
(*) WEP
Security Encryption (WEP)
Authentication Type: [Shared Key]
Security Encryption (WEP) Key
Passphrase: dl0r8q9p7r [Generate]
Key1: (*) E313B5E7FA
Key2: ( ) FAC2C1B14D
Key3: ( ) A2D49B641F
Key4: ( ) 57673F0968
* Configuration à clé WEP partagée (côté client) :
Fichier à modifier : /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=2
network={
ssid="VX-DG8E-ZLOA"
key_mgmt=NONE
auth_alg=SHARED
wep_key0=E313B5E7FA
wep_key1=FAC2C1B14D
wep_key2=A2D49B641F
wep_key3=57673F0968
wep_tx_keydx=0
}
Je sauvegarde mon fichier et je teste la configuration :
/etc/rc.d/netif restart
De retour sur l'interface de configuration de mon routeur, je choisis la page qui permet de modifier la méthode de cryptage WPA. Je saisis ma passphrase et je valide.
* Configuration à clé WPA-PSK (TKIP), (côté routeur) :
Security Options
(*) WPA-PSK (TKIP)
Security Encryption (WPA-PSK)
Passphrase: [********** ] (8 ~ 63 characters)
* Configuration à clé WPA-PSK (TKIP), (côté client) :
Je vais arrêter le programme wpa_supplicant et supprimer son fichier de configuration :
/etc/rc.d/netif stop && rm /etc/wpa_supplicant.conf
Je vais générer le fichier wpa_supplicant.conf automatiquement avec le SSID et la clé psk :
wpa_passphrase "VX-DG8E-ZLOA" "E313B5E7FA" > /etc/wpa_supplicant.conf
Voici le contenu du fichier :
network={
ssid="VX-DG8E-ZLOA"
#psk="E313B5E7FA"
psk=7bce519ec5f8f783ec989e7c431509fd292e4f9680c510b44745a7fbbe737f4f
}
Je vais le modifier comme suit :
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=2
network={
ssid="VX-DG8E-ZLOA"
proto=WPA
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=TKIP
group=TKIP
psk=7bce519ec5f8f783ec989e7c431509fd292e4f9680c510b44745a7fbbe737f4f
}
Je sauvegarde le fichier et je teste la configuration :
/etc/rc.d/netif start
À nouveau sur l'interface de configuration de mon routeur, je choisis la page qui permet de modifier la méthode de cryptage WPA. Je saisis ma passphrase et je valide.
* Configuration à clé WPA2-PSK (AES), (côté routeur) :
Security Options
(*) WPA2-PSK (AES)
Security Encryption (WPA-PSK)
Passphrase: [********** ] (8 ~ 63 characters)
* Configuration à clé WPA2-PSK (AES), (côté client) :
Fichier à modifier : /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=2
network={
ssid="VX-DG8E-ZLOA"
proto=RSN
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=CCMP
group=CCMP
psk=7bce519ec5f8f783ec989e7c431509fd292e4f9680c510b44745a7fbbe737f4f
}
Je sauvegarde le fichier et je teste la configuration :
/etc/rc.d/netif restart
De retour sur l'interface de configuration de mon routeur, je choisis la page qui permet de modifier la méthode de cryptage WPA. Je saisis ma passphrase et je valide.
* Configuration à clé WPA-PSK (TKIP) + WPA2-PSK (AES), (côté routeur) :
Security Options
(*) WPA-PSK (TKIP) + WPA2-PSK (AES)
Security Encryption (WPA-PSK)
Passphrase: [********** ] (8 ~ 63 characters)
* Configuration à clé WPA-PSK (TKIP) + WPA2-PSK (AES), (côté client) :
Fichier à modifier : /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
ap_scan=2
network={
ssid="VX-DG8E-ZLOA"
proto=WPA RSN
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=TKIP CCMP
group=TKIP CCMP
psk=7bce519ec5f8f783ec989e7c431509fd292e4f9680c510b44745a7fbbe737f4f
}
Je sauvegarde le fichier et je teste la configuration :
/etc/rc.d/netif restart
IX. Comment savoir si je suis connecté à Internet ?▲
Au moment de tester la configuration, j'utilise toujours les mêmes commandes :
/etc/rc.d/netif start|stop|restart
Suivant la méthode de cryptage utilisée, j'obtiens un affichage similaire à celui-ci :
Starting wpa_supplicant.
DHCPREQUEST on ndis0 to 255.255.255.255 port 67
DHCPREQUEST on ndis0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.3 -- renewal in 43200 seconds.
ndis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::20e:9bff:fed3:b57e%ndis0 prefixlen 64 scopeid 0x2
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:0e:9b:d3:b5:7e
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/54Mbps)
status: associated
ssid VX-DG8E-ZLOA channel 7 bssid 00:14:6c:f1:4c:8a
authmode WPA2/802.11i privacy ON deftxkey UNDEF txpowmax 100 protmode CTS
Je suis bien connecté au réseau avec le SSID VX-DG8E-ZLOA et comme adresse IP 192.168.1.3 attribuée par le routeur. Puis-je sortir vers l'extérieur ? Pour cela, je vais pinguer par exemple le site de FreeBSD:
# ping freebsd.org
J'obtiens ceci :
PING google.com (64.233.167.99): 56 data bytes
64 bytes from 64.233.167.99: icmp_seq=0 ttl=242 time=137.575 ms
64 bytes from 64.233.167.99: icmp_seq=1 ttl=242 time=140.393 ms
64 bytes from 64.233.167.99: icmp_seq=2 ttl=242 time=139.910 ms
64 bytes from 64.233.167.99: icmp_seq=3 ttl=242 time=140.665 ms
J'en conclus que je suis bien connecté à Internet.