![]() |
|
![]() | |
![]() |
Mise à jour le 13 août 2005 La page Speedtouch & Debian expliquait comment connecter votre PC à Internet. Mais si vous voulez vous connecter avec un 2nd PC sans débrancher le 1er, il faut transformer ce dernier en passerelle. Et pour peu que le 2nd PC soit un laptop, ce serait bien pratique de le relier en Wifi ! Cette page vous explique comment faire tout ça avec une debian (sarge), un noyau 2.4 ou 2.6, une carte WLAN NetGear WG311 (802.11g) et les drivers madwifi. On peut sans doute l'adapter facilement à d'autres configurations. Matériel nécessaire :
- Rappels réseau Rappels réseauOn va monter un petit réseau ; c'est pas très compliqué mais ce sera encore plus agréable si vous avez les idées claires sur les notions réseau de base. Pour cela n'hésitez pas à jeter un oeil sur cette excellente page. Pour ce qui est du principe d'une passerelle, j'ai pour ma part vu la lumière grâce à ces schémas (merci alexis !). Configuration du noyauEn root dans le répertoire où l'on a décompressé les sources d'un noyau 2.4 (en 2.6 Networking options est sous Device Drivers > Networking support > Networking support, et il n'y a plus de Socket Filtering à activer), faire un Networking options[y] Packet socket: mmapped IO [y] Network packet filtering (replaces ipchains) [y] Socket Filtering IP: Netfilter Configuration [m] Connection tracking (required for masq/NAT) [m] FTP protocol support [m] IRC protocol support [m] IP tables support (required for filtering/masq/NAT) [m] netfilter MARK match support [m] Multiple port match support [m] Connection state match support [m] Packet filtering [m] REJECT target support [m] Full NAT [m] MASQUERADE target support [m] Packet mangling [m] LOG target support [m] TCPMSS target support Network device supportWireless LAN (non-hamradio) [y] Wireless LAN (non-hamradio) Cela fait, compiler le noyau et les modules, et les installer ( Rebooter avec ce beau noyau. Installation des drivers madwifiLa carte doit être insérée dans un port PCI et apparaître avec un Le Wifi 802.11g (qui permet un débit théorique de 54 Mbps, contre 11 Mbps avec la norme 802.11b) n'est pas encore supporté en natif dans le noyau linux ; heureusement des projets parallèles permettent néanmoins d'exploiter les chipsets haut débit. Les deux principaux sont madwifi (chipsets Atheros) et Prism54 (chipsets Prism). Une recherche sur Google montre que des gens sont parvenus à faire fonctionner la WG311 avec les deux drivers, mais le plus adapté est le madwifi (et il permet le mode Master, cf. plus loin). En root dans un répertoire où les sources des drivers seront stockés sous cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi cd madwifi make make install modprobe ath_pci Pour que la prochaine fois le chargement du module soit automatique, rajouter dans Configuration de l'interface Wifi ath0Il faut tout d'abord installer les utilitaires wireless (not. Ensuite on complète le # Interface WLAN : cf. iwconfig(8) auto ath0 iface ath0 inet static address 192.168.0.1 netmask 255.255.255.0 pre-up /sbin/iwpriv ath0 mode 3 # Mode 3 = 802.11g / 2 = 802.11b / 1 = 802.11a wireless_essid Nom-du-reseau wireless_mode Master wireless_channel 9 wireless_key off NB :
On peut maintenant monter l'interface :
Installation de la passerelleNotre passerelle utilisera le mécanisme de translation d'adresse réseau (NAT en Anglais, masquerading en Linuxien), qui est implémenté par le programme #!/bin/sh # /etc/network/if-pre-up.d/iptables-start # # Initialise les règles de filtrage iptables # D'après http://people.via.ecp.fr/~alexis/formation-linux/config/iptables-start.sh ##### # Remise à zéro des règles iptables -F iptables -t nat -F # # Politiques par défaut # ##### # Accepte les connexions entrantes iptables -P INPUT ACCEPT # Accepte les connexions destinées à être forwardées iptables -P FORWARD ACCEPT # Accepte les connexions sortantes iptables -P OUTPUT ACCEPT # # Règles de filtrage # ##### # Pas de filtrage iptables -A INPUT -j ACCEPT # # Règles pour le partage de connexion (le NAT) # ##### # Le système fait serveur NAT ; l'interface extérieure est ppp0 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # Si la connexion que vous partagez est une connexion ADSL, vous # serez probablement confronté au fameux problème du MTU. En résumé, # le problème vient du fait que le MTU de la liaison entre votre # fournisseur d'accès et le serveur NAT est un petit peu inférieur au # MTU de la liaison Ethernet qui relie le serveur NAT aux machines qui # sont derrière le NAT. Pour résoudre ce problème : iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o ppp0 --clamp-mss-to-pmtu # # Règles de port forwarding # ##### # Décommentez la ligne suivante pour que les requêtes TCP reçues sur # le port 80 de l'interface eth0 soient forwardées à la machine dont # l'IP est 192.168.0.3 sur son port 80 (la réponse à la requête sera # forwardée au client) #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80 Là encore, lorsque le réseau fonctionnera, ce sera une bonne idée de le sécuriser en rajoutant dans ce fichier des règles un peu moins laxistes. NB : si iptables refuse de démarrer en prétextant des unresolved symbols à gogo, recompiler le noyau en commençant par un Enfin on n'oublie surtout pas d'activer l'ip_forwarding dans le noyau : Voilà, si la carte est bien installée sur le laptop on doit pouvoir pinguer une IP extérieure ; si ça ne fonctionne pas on peut regarder ce qui transite sur les interfaces avec un Configuration du DHCPLe problème c'est qu'à moins de configurer en dur les serveurs DNS sur le laptop, on ne peut atteindre que des IP, pas des noms genrewww.cnedra.org. La solution c'est d'installer un serveur DHCP qui enverra au client la liste des serveurs DNS de notre FAI (ici codée en dur avec ceux de Wanadoo ; on pourrait imaginer un mécanisme de recopie à partir du resolv.conf lorsque ppp0 est montée...) : apt-get install dhcp3-server, puis on éditer /etc/dhcp3/dhcpd.conf :
# /etc/dhcp3/dhcpd.conf
#
# Config du serveur DHCP de l'ISC (package 'dhcp3-server')
# D'après http://people.via.ecp.fr/~alexis/formation-linux/config/dhcpd.conf
# cf. dhcpd.conf(5)
#####
#
# Options globales
# (s'appliqueront par défaut à tous les sous-réseaux)
#####
# Nom de domaine
#option domain-name "exemple.org";
# Adresses des serveurs DNS (séparées par une virgule)
option domain-name-servers 80.10.246.1, 80.10.246.132;
# Durée du bail en secondes
default-lease-time 6000;
max-lease-time 6000;
# Le serveur DHCP est autoritaire pour les sous-réseaux déclarés ci-dessous
authoritative;
#
# Déclaration des sous-réseaux et des machines
#
#####
# Déclaration du sous-réseau 192.168.0.0/255.255.255.0
subnet 192.168.0.0 netmask 255.255.255.0
{
# Adresse du routeur
option routers 192.168.0.1;
# Plage d'adresses à attribuer pour les machines non déclarées
range 192.168.0.100 192.168.0.200;
# deny unknown-clients;
}
# La déclaration d'une machine permet de lui attribuer une adresse IP fixe
host MonLaptop
{
hardware ethernet 00:0b:cd:5a:fb:43; # @MAC de la carte Wifi du laptop
fixed-address 192.168.0.12;
}
NB : là encore pour sécuriser on pourrait retirer le commentaire devant Voilà, maintenant si on renouvelle la config réseau du laptop (sous Windows : Aller plus loin...On peut vouloir accéder à un VPN depuis notre laptop ; dans ce cas commencer par essayer d'établir la connexion comme si l'on était branché directement. En effet si le protocole utilisé par le VPN est L2TP, notre passerelle linux ne nécessite aucune modification ; en revanche il est probable si le laptop est sous Windows 2000 qu'il faudra appliquer un patch permettant au L2TP de traverser le NAT). ConclusionVoilà, on a créé notre Access-Point Wifi ; il faut maintenant bien sûr faire attention aux problèmes de sécurité qui ne sont qu'évoqués dans cette page ; cela dit il n'est pas interdit de trouver charmante la perspective d'un maillage d'Access-Points ouverts qui couvrirait nos agglomérations. À bon entendeur... | |