Dans ce tutoriel, nous allons voir comment mettre en place un point d'accès wifi sous linux en utilisant simplement des règles iptables.
Le matériel qui doit être à votre disposition pour mettre en oeuvre ce tutoriel est le suivant:
Cette étape est sensiblement équivalente à celle du tutoriel présentant la création d'un AP en mode bridge à la différence près que le fichier de configuration de hostapd ne doit plus contenir la primitive bridge
.
Ainsi le fichier /etc/hostapd/hostapd.conf
devrait plutôt ressembler à celui-ci:
interface=wlan0
driver=nl80211
# YOUR COUNTRY HERE
country_code=FR
ieee80211d=1
# MODIFY YOUR SSID HERE
ssid=AP-linux-antoine
# CHANGE MODE HERE IF NEEDED
hw_mode=g
# CHANGE CHANNEL EVENTUALLY
channel=6
wme_enabled=0
macaddr_acl=0
auth_algs=1
# WE USE WPA2
wpa=2
# MODIFY YOUR PASSPHRASE HERE
wpa_passphrase=mdpanaee123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Contrairement à l'installation par bridge nous allons mettre en place un serveur DHCP très léger qui est dnsmasq
. Dnsmasq est maintenant embarqué par défaut dans les distributions de type debian et ubuntu et travaille main dans la main avec Networkmanager (d'ailleurs on peut le désactiver dans le fichier /etc/NetworkManager/NetworkManager.conf
).
Installons dnsmasq si ce n'est pas déjà fait:
apt-get install dnsmasq
Passons maintenant à sa configuration; pour cela il nous faut modifier le fichier /etc/dnsmasq.conf
avec le contenu suivant:
# disables dnsmasq reading any other files like /etc/resolv.conf for nameservers
no-resolv
# Interface to bind to
interface=wlan0
# Specify starting_range,end_range,lease_time
dhcp-range=10.0.0.3,10.0.0.20,12h
# dns addresses to send to the clients
server=8.8.8.8
server=8.8.4.4
Dans cet exemple nous configurons le serveur dhcp de manière :
no-resolv
) mais plutôt qu'il utilise les DNS de google 8.8.8.8
et 8.8.4.4
.Il ne nous reste plus qu'à mettre tout ça en musique de manière automatique.
Pour cela voici le script magique:
#!/bin/sh
iInf="eth0" #Interface with Internet Connectivity (ex: eth0)
wInf="wlan1" #Wireless interface (ex: wlan2)
echo "Stopping network manager ..."
service network-manager stop
echo "Stopping dnsmasq ..."
service dnsmasq stop
echo "Bringing down wireless interface ..."
ifconfig $wInf down
echo "Starting hostapd ..."
hostapd -dd -B /etc/hostapd/hostapd.conf
echo "Configuring wireless interface ..."
ifconfig $wInf 10.0.0.1 netmask 255.255.255.0
echo "Starting dnsmasq as DHCP server ..."
dnsmasq
echo "Stopping firewall and allowing everyone ..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "Enabling NAT ..."
iptables -t nat -A POSTROUTING -o $iInf -j MASQUERADE
echo "Enabling IP forwarding ..."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Wireless gateway setup is complete"