La gestion des interfaces réseaux sous Linux est bien différente que sous Windows. Les utilisateurs Linux confirmé, aiment la console car elle offre des possibilités plus optimisées et parfois plus personnalisable qu'avec une interface graphique. Nous allons voir à travers cette page comment créer un script qui va nous permettre de nous connecter sur un réseau ou sur un autre, que ce soit en Wifi ou en Ethernet.





Linux est très riche en logiciel à utiliser dans le shell, nous ne pouvons pas présenter la liste des programmes utilisables ils sont beaucoup trop nombreux. Pour résumer, à travers le programme que nous allons élaborer, on peut tout de même définir une liste de commandes de bases. Il faut faire attention au miniscules/majuscules sous Linux, les commandes sont sensibles à la casses, comme sur internet.


airodump                   # Permet de voir les connexions WiFi alenours
echo                       # Affiche du texte
if                         # Condition
function ma_fonction {}    # Déclaration d une fonction
ifconfig                   # Paramètrage d une interface
iwconfig                   # Configuration des interfaces sans fil.
route                      # Défini, affiche les informations de routage 

Cela peut para?tre peu, mais contrairement aux apparences ont peut faire beaucoup de choses avec ces commandes, par exemple, on peut changer l'adresse MAC de l'interface réseau choisie avec ifconfig, on peut s'associer à un point d'accès en WEP, WPA, ou même en ad-hoc avec iwconfig.

Il y a quelques notions simplistes à savoir en Bash, par exemple, le commentaire se fait à l'aide du sybole dièse, le point-virgule permet d'enchainer des commandes - dans certains cas spécifiques il est indispensable (pour les tests, pour les tests conditionnels). Il ne faut pas hésiter à lire le manuel de la fonction pour en savoir plus. Pour votre propre curiosité, vous pouvez aller chercher les commandes dans les dossiers /sbin, /bin, /usr/bin et /usr/sbin puis taper un man nom_du_programme pour en savoir plus sur le programme. (man étant l'abbréviation de manual)





Tout d'abord établissons nos besoins et les endroits oà nous sommes susceptibles de nous déplacer. Bien évidemment on suppose qu'à certains endroit, on ait besoin d'une configuration spécifique.

- A la maison, nous avons un réseau sans wifi et en adressage IP statique
- Au travail, nous avons un réseau local et un serveur DHCP, nous sommes donc en adressage IP dynamique
- Nous voudrions aussi une option pour se connecter aux bornes wifi libres lorsque nous sommes en déplacement

Pour définir une adresse IP depuis la console, dans Linux il faut avoir les droits "super utilisateurs", il faut donc taper sudo devant ou bien passer sur un shell en root avec la commande su. Ensuite il suffit de taper la commande suivante :


ifconfig eth0 192.168.1.22 

On peut spécifier les autres options, comme le masque de sous-réseau, le broadcast et la passerelle.


ifconfig eth0 192.168.1.22 255.255.255.0 192.168.1.255 192.168.1.1 

Concernant les connexions Wifi, nous allons commencer par scanner les réseaux alentours. On suppose que l'interface réseau de la carte wifi est eth1, ce qui est souvent le cas pour les ordinateurs récents (chipset Intel). Avant il faut s'assurer être en mode 'monitor' - mode qui permet de surveiller les points d'accès plutôt que de s'y associer.


iwconfig eth1 mode monitor
airodump eth1 test 0 

Un point d'accès libre a un cryptage marqué OPN (pour 'opened' : 'ouvert') par airodump. On peut donc s'y associer. Il y pas mal d'outils pour ça, NetwrorkManager, Kwifi, mais pour automatiser la tâches, et surtout la personnaliser nous pouvons taper sous le shell la commande ci-dessous. "MON_WIFI_LIBRE" correspond au nom donné au point d'accès, c'est à dire le ESSID. ESSID signifie en anglais "Extended Service Set IDentifier" ce qui veut dire en français "identifiant défini par un service étendu", on peut comparer par analogie au nom donné d'un ordinateur par son adresse MAC, le nom qui est fourni bien entendu par votre système d'exploitation - à savoir que la plus part des routeurs ont un système de type Unix. Il faut donc se remettre en mode 'managed' pour pouvoir s'associer à l'AP (Access Point - point d'accès).


iwconfig eth1 mode managed
iwconfig eth1 essid MON_WIFI_LIBRE 

Une fois associé il nous faut déclarer l'adresse MAC sur le réseau en faisant une demande de connexion par DHCP. En bon français ça veut dire que l'on doit se connecter au réseau en identifiant notre machine, en faisant ainsi:


# eth1 étant votre interface wifi (ici : intel)
dhclient eth1 

A ce stade là nous sommes maintenant connecté sur le réseau, pour ça nous pouvons tester, en faisant un petit script en Bash. Le test simple correspond à un ping sur le serveur de Google. L'utilité d'écrire plusieurs commandes sur une seule ligne est le fait que nous n'avons pas à attendre le délai du timeout. La commande ci-dessous envoie un ping donc sur google en vérifiant que le paquet est envoyé, car un paquet envoyé sur le réseau à un temps de vie défini ( | grep "ttl" ). Un seul paquet suffit en principe ( -c 1 ). Le ; délimite deux commandes.


ping -c 1 66.102.9.104 | grep "ttl" ; ping -c 1 google.fr | grep "ttl" 




Comme nous l'avons vu ci-dessus la configuration IP statique d'une interface n'est pas compliquée en soit, à condition bien sûr d'avoir les informations, parceque vouloir rentrer sur un réseau en adresse IP statique, il faut plusieurs choses que nous verrons après avoir vu les bases. Dans un tel environnement il faut aussi définir le serveur de résolution de nom (serveur DNS) et la passerelle. La configuration DNS se trouve dans un fichier, qui contient la liste des serveurs DNS, ce fichier est /etc/resolv.conf. Pour ce qui est de la passerelle, il faut la préciser dans les paramètres de routage : la passerelle correspond à la "default gateway" - ou passerelle par défaut. Pour définir une passerelle par défaut il suffit de la déclarer sur notre route.


# On configure l adresse IP
ifconfig eth0 192.168.1.22
 
# On ajoute la passerelle par défaut dans la route pour accéder au réseau externe (internet)
route add default gw 192.168.1.1
 
# On définit le serveur DNS, qui reconnaitra www.google.fr en tant que 66.102.9.104 (par exemple) 
echo "nameserver 192.168.1.1" > /etc/resolv.conf 

Une fois la configuration statique établie, on peut vérifier notre connexion internet. Pour ne pas avoir à retapter toute cette ligne à chaque fois on peut faire un petit script.


# On inscrit les commandes PING dans le fichier
echo "ping -c 1 66.102.9.104 | grep 'ttl' ; ping -c 1 google.fr | grep 'ttl'" > /usr/sbin/test_internet
 
# On permet au fichier de s executer
chmod +x /usr/sbin/test_internet
 
# On lance le script en question
test_internet 




Nous avons tout les éléments pour écrire un script, un mini gestionnaire de connexions personnalisé en fonction de nos besoin.


#!/bin/bash
# Ce premier commentaire permet de capturer (le symbole !) les évènements sur la console (/bin/bash)
 
 
# La configuration personnalisée
ADRESSE_IP=172.124.69.94
ESSID_HOME="FBX_PERSO"
CANAL=1
PASSERELLE=172.124.96.1
MASQUE=255.255.0.0
 
# La clé dépend du cryptage
KEY="051BA0353E7885B5593A807185"
INTERFACE_WIFI=eth1
INTERFACE_LAN=eth0
 
 
# Ecriture d une fonction pour afficher l aide
# A noter la fonction exit qui permet de quitter le programme
function usage {
	echo
	echo "Gestionnaire de connexions"
	echo
	echo "Usage: "
	echo "conect-manager  [paramètres] "
	echo
	echo paramètres peut avoir les valeurs suivantes :
	echo "--home     configure les interfaces réseaux pour la connexion à la maison"
	echo "--work     configuration des interfaces pour la connexion au réseau d entreprise"
	echo "--else     paramètre les connexions en mode automatique (DHCP)"
	echo
	exit
}
 
 
# Au travail, le DHCP paramètres l interface réseau automatiquement
if  [ $1 ==  --work  ]  ; then
	ifconfig $INTERFACE_LAN 0.0.0.0
	dhclient $INTERFACE_LAN
	exit
fi
 
 
# A la maison on a mis une réseau en adresses IP statique sur le réseau Wifi
# pour minimiser le piratage, en plus de notre clé WPA
if  [ $1 ==  --home  ]  ; then
	iwconfig $INTERFACE_WIFI essid $ESSID_HOME
	iwconfig $INTERFACE_WIFI key $KEY
	iwconfig $INTERFACE_WIFI channel $CANAL
	ifconfig $INTERFACE_WIFI $ADRESSE_IP
	route add default gw $PASSERELLE	
	echo "nameserver $PASSERELLE" > /etc/resolv.conf
	exit
fi
 
 
# Autrement on se considère sur un réseau avec un serveur DHCP
if  [ $1 ==  --else  ]  ; then
	ifconfig $INTERFACE_WIFI 0.0.0.0
	ifconfig $INTERFACE_LAN 0.0.0.0
	dhclient $INTERFACE_WIFI
	dhclient $INTERFACE_LAN
	exit
fi
 
 
# Si le paramètre entré n est pas bon oà s il n y pas le bon nombre
# de paramètres alors on affiche l aide contextuelle
usage 




Nous avons pu voir que se connecter sur internet à partir d'un linux n'est pas sorcier, c'est vrai qu'il y a deux ou trois trucs à connaitre, mais rien de bien difficile. Le but de cet article est de vous simplifier la tâche, pour la connexion à un réseau ou un autre. Il y a des outils qui simplifie encore plus la tâches dans Ubuntu, seulement ils ne permettent pas de personnaliser la connexion au maximum. Quel que soit la distribution Linux, la console est vraiment l'environnement le plus puissant, car lorsqu'on le maitrise, on peut dialoguer avec le matériel.

Quelques références :


Introduction aux scripts BASH
Guide avancé d'écriture des scripts Bash


   =>   Écrit par : Nicolas, le 06 octobre 2007


 
Mots clés :  
  network 
  
  bash 
  
  linux 
    >   Articles connexes :

GitVuln

GitVuln


HTTP Server, tell me who you are ?


Discuter avec un serveur web *apparement* muet ? Voici comment faire...


Chiffrement multicouche

Chiffrement multicouche



HTTP Download

HTTP Download



Comment gagner du temps sur Internet

Comment gagner du temps sur Internet



Cheat SHeet OpenSSL

Cheat SHeet OpenSSL


3105788