Se connecter en Wifi sur NetBSD
Introduction
La configuration d'une connexion Wifi est basique sur NetBSD. Il faut tout faire à la main, à l'ancienne.
La page du manuel sur netbsd.org est bien faîte... mais elle oublie un paquet de trucs !
Pré-requis
- Vous disposez d'une interface Wifi sur votre machine qui est reconnue par le système.
Lorsque vous tapez 'ifconfig', vous voyez cette interface wifi (généralement iwm0). Si vous ne la voyez pas, c'est que votre système ne prend pas votre carte en compte, il vous manque des drivers... ça commence donc mal !
La connexion à un réseau wifi repose sur 2 étapes majeures
- L'activation des paramètres nécessaires : 'Activer le Wifi'
- dhcpcd
- dhcpcd_flags
- pare-feu (!)
- démarrage de la carte wifi
- démarrage de wpa_supplicant
- Configurer la connexion à un réseau wifi : 'Se connecter à un réseau'
- Faire un scan des réseaux disponibles
- Créer la configuration dans /etc/wpa_supplicant.conf
- Recharger wpa_supplicant
Pour ceux qui ont installé l'environnement de bureau XFCE, le paquet 'wpa_gui' vous facilitera le travail de configuration dans /etc/wpa_supplicant.conf, mais il faut d'abord passer l'étape 1 !
Donc, sans plus tarder, voici les étapes
(je précise que toutes les étapes de configuration suivantes se font avec des droits root.
Mettez-vous en root directement !)
1) 'Activer le Wifi'
Le service dhcpcd
2 options. Si vous utilisez un service DHCP habituellement avec votre connexion ethernet, alors vous avez déjà certainement l'entrée suivante dans votre fichier /etc/rc.conf :
dhcpcd=YES
Si c'est le cas, alors votre service dhcpcd démarre donc en même temps que votre serveur.
Si ce n'est pas le cas, réfléchissez à votre besoin d'un service DHCP pour votre connexion Wifi.
Si vous comptez sur un serveur DHCP pour recevoir la configuration IP de votre machine une fois connecté au réseau wifi, alors il faudra démarrer le service au moins une fois (après avoir configuré les flags).
Si vous ne souhaitez pas utiliser de DHCP, alors il faudra faire une configuration IP statique dans /etc/rc.conf (je vous renvoie à l'article du blog concernant les configurations statiques)
Je continue en considérant que vous utiliserez un service DHCP pour votre connexion wifi.
Indiquer votre carte wifi dans les flags afin que le service dhcpcd diffuse ses requêtes dessus (dans /etc/rc.conf) :
dhcpcd_flags='-qM wm0 iwm0'
wm0 est ma carte ethernet classique, je rajoute simplement ma carte wifi iwm0
Il faut à présent (Re)démarrer le service dhcpcd
Afin que le service dhcpcd diffuse ses requêtes sur la carte wifi, il faut relancer le service dhcpcd.
2 cas de figure : si vous avez placé dhcpcd=YES dans le fichier /etc/rc.conf, alors la commande est
service dhcpcd restart
si vous n'avez PAS placé dhcpcd=YES dans /etc/rc.conf :
service dhcpcd onestart
(rajoutez one devant)
Le pare-feu !
Si vous avez mis en place un pare-feu sur votre machine (style NPF), il faut absolument que vous précisiez l'interface wifi dans le fichier de règles.. autrement vous ne pourrez rien faire !
Si vous avez suivi le fichier de règles NPF que j'ai rédigé sur le blog, alors vous devez impérativement remplacer wm0 par iwm0 au début du fichier :
# Interface WAN
$WAN_if = 'iwm0'
$WAN_addrs = ifaddrs(iwm0)
Puis relancer NPF :
service npf restart
Une autre solution consiste à créer 2 nouvelles entrées $WAN_if2 et $WAN_addrs2 pour l'interface iwm0 et dupliquer les règles du groupe WAN... C'est beaucoup plus long, et vu que généralement je ne me connecte en wifi que de façon temporaire, je fais le remplacement, simplement.
Démarrer l'interface Wifi
2 options là aussi.
Si vous utilisez le wifi de façon temporaire, alors un simple démarrage de l'interface suffit :
ifconfig iwm0 up
Mais si vous souhaitez activer le wifi dès le démarrage du serveur, vous pouvez configurer le démarrage de l'interface wifi automatique. Dans /etc/rc.conf, placez :
ifconfig_iwm0='up'
Démarrage de wpa_supplicant
2 options là encore.
Si vous utilisez le wifi de façon temporaire, alors un simple démarrage suffit :
service wpa_supplicant onestart
Mais si vous souhaitez activer le wifi dès le démarrage du serveur, vous pouvez configurer le démarrage du service automatiquement. Dans /etc/rc.conf, placez :
wpa_supplicant=YES
Nous sommes prêts pour nous connecter à un réseau à présent.
2) 'Se connecter à un réseau'
Pour ceux utilisent l'environnement de bureau XFCE (je n'ai pas testé avec CTWM, il manquera peut-être des paquets). Il est possible d'utiliser un petit logiciel graphique pour faire le reste de la configuration, car c'est la plus délicate et chiante !
Installez-le :
pkgin -y in wpa_gui
A savoir, vous ne pourrez pas démarrer le programme en tapant son nom dans un terminal, le lien ne fonctionne pas.
Il se trouve ici, et ne doit évidemment pas être lancé en tant que root. Il faut redevenir un utilisateur standard (qui doit être membre du groupe wheel !)
/usr/pkg/sbin/wpa_gui
Bon à savoir encore, ne vous avisez pas de quitter le programme, vous ne pourrez pas le relancer, il faudra redémarrer le serveur... ça, c'est un peu pénible !
Dans l'environnement XFCE, on peut simplement fermer la fenêtre et il se miniaturise alors dans la barre du haut.
Une fois le soft lancé, vous n'aurez pas de difficulté à comprendre qu'il faut scanner, double-cliquer sur le réseau qui vous intéresse, entrer son PSK (le secret partagé - le 'mot de passe') et votre machine se connectera d'elle-même. un bloc de configuration pour se reconnecter ultérieurement au réseau apparaîtra alors directement dans /etc/wpa_supplicant.conf... Autant dire que c'est de loin la façon la plus rapide de se connecter à un réseau wifi !
Configuration manuelle (sans wpa_gui)
Maintenant, on va considérer que vous êtes un pur et dur et que vous bossez à l'ancienne, sans environnement de bureau (et donc vous n'utiliserez pas wpa_gui)
Scan des réseaux
Il faut donc réaliser un scan des réseaux.
2 commandes pour cela :
wlanctl -a
Cette commande vous affichera tous les réseaux wifi disponibles en passant par toutes les cartes wifi disponibles et allumées sur votre serveur..
la sortie est imbuvable !
Le SSID des réseaux (quand il n'est pas caché) se trouve sur la ligne commençant par 'ess'.
La sécurité des réseaux se voit au paramètre 'priva'. Mais sans mention explicite de type 'rsn', vous n'aurez aucun moyen de connaître le protocole de chiffrement utilisé (wep, wpa2 etc..). Ces réglages sont laissés à l'appréciation des administrateurs réseaux, qui lorsqu'ils sont bons, les cachent !
Cette commande recèle donc beaucoup d'information mais est difficilement utilisable pour nous.
Nous allons en utiliser une autre : wla_cli
Cette commande permet de configurer intégralement une connexion wifi temporaire (elle ne stockera pas la configuration dans /etc/wpa_supplicant.conf). Mais elle présente des désavantages, le plus important étant qu'il est plus difficile de scripter une configuration wifi automatique en l'utilisant.
L'usage classique préfère le bloc de configuration dans /etc/wpa_supplicant.conf, nous allons donc préférer cette méthode.
D'abord, nous réalisons un scan des réseaux :
wpa_cli scan
Ceci va lancer un scan des réseaux en arrière-plan... Sauf que cette commande prend du temps.
Attendez donc au moins 10 secondes avant d'afficher les résultats avec la commande suivante :
wpa_cli scan_results
Les réseaux vont alors apparaître sous une forme bien plus concise et lisible qu'avec wlanctl -a !
Le SSID, le chiffrement, tout y est !
Configuration dans /etc/wpa_supplicant.conf
Grâce à ces informations, nous pouvons à présent générer le bloc de configuration dans le fichier /etc/wpa_supplicant.conf.
Je vous donne un exemple de configuration standard pour un réseau classique avec chiffrement en WPA2 :
# ne touchez surtout pas aux 3 lignes ci-dessous du fichier !
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
# voici un blog de configuration wifi standard :
network={
ssid='Livebox-trucmuche'
psk='le-super-mot-de-passe-hypra-trop-long-du-wifi-de-la-box'
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
Petite précision : ici, nous utilisons le ssid pour identifier le réseau wifi à rejoindre.
Ce n'est parfois pas pratique du tout, notamment dans le cas de répéteurs ! Plusieurs réseaux possédant le même ssid pourraient apparaître au scan. Certains de ces 'réseaux' pourraient ne pas être bons ou ne pas fournir de configuration DHCP par exemple. Il n'y a pas 36 options hélas, vous devrez chercher manuellement lequel est le bon à taton ou utiliser directement l'application wpa_gui qui se chargera de discriminer les différents ssid identiques jusqu'à en trouver un qui délivre une IP.
Dans ce cas, après avoir identifié lequel est le bon, il sera préférable d'utiliser l'option bssid='ADRESSE-MAC' du réseau wifi en question et supprimer l'option ssid, ainsi, votre machine se connectera d'elle-même au bon réseau lors d'un prochain démarrage. C'est d'ailleurs du reste, une méthode un peu plus sûre.
Une fois cette configuration effectuée, il suffit de recharger wpa_supplicant :
service wpa_supplicant reload
Votre machine va alors se connecter au réseau toute seule.
Si vous avez activé les différents services au démarrage du serveur, la machine se reconnectera d'elle-même au redémarrage de l'ordinateur.
Une fois votre expérience Wifi terminée, il ne faudra pas oublier de défaire tout ce qui a été fait ici !
Quelques commandes qui peuvent être fort utiles
- Tuer le processus wpa_supplicant en cours :
pkill wpa_supplicant
- Relancer l'interface wifi iwm0 :
ifconfig iwm0 down ; ifconfig iwm0 up
- Lancer la connexion en tâche de fond :
wpa_supplicant -B -i iwm0 -c /etc/wpa_supplicant.conf
↑ Haut de page