Archives par mot-clé : wifi

Créer et configurer un point d’accès wifi

Mise en situation

Ipfire-Wifi

Le schéma à droite est la première configuration réseau que j’ai testé et mis en place au sein de ma maison. Cependant, créer un point d’accès wifi avec Ipfire peut devenir compliqué surtout quand vous ne possédez que deux cartes réseaux, une ethernet et une wifi, comme les pc portables.

Précaution

D’abord, il faut s’assurer que la carte Ethernet soit bien définit sur red et que la carte wifi soit bien sur green. Normalement pendant l’installation de la distribution, vous avez pu activer le serveur DHCP sur green.

Créer un point d’accès wifi

Après une fraiche installation, il est tout à fait possible de configurer ipfire en ligne de commande. Après s’être rassuré qu’Ipfire soit connecté à Internet, on installe hostapd en ligne de commande.

[code lang= »bash »]pakfire install hostapd
[/code]

Normalement, vous avez un point d’accès visible avec vos autres terminaux. Cependant, il est possible de le modifier rapidement grâce à un heredoc (et de choisir le mot de passe).

[code lang= »bash »]cat << EOF > /var/ipfire/wlanap/setting
DRIVER=NL80211
COUNTRY=FR
CHANNEL=1
INTERFACE=green0
TXPOWER=auto
HW_MODE=g
MACMODE=0
PWD=un_mot_de_passe
DEBUG=0
SYSLOGLEVEL=0
ENC=wpa2
SSID=’Hotspot Wifi via IpFire’
HIDESSID=off
APMODE=on
HTCAPS=
EOF

/etc/init.d/hostapd start
[/code]

Explication:

Pendant que le script /etc/init.d/hostapd lit le fichier /var/ipfire/wlanap/setting, le fichier de configuration /var/ipfire/wlanap/hostapd.conf est renseigné et enfin le point d’accès de lance.

Edit: Suite à une modification de l’installation, ipfire ne nat plus automatiquement, pour l’activer, soit vous allez dans les options à la page https://ipfire:444/cgi-bin/optionsfw.cgi, ou en une ligne de commande.

[code lang= »bash »]sed -i.bak ‘s/^MASQUERADE_GREEN=.*/MASQUERADE_GREEN=on/’ /var/ipfire/optionsfw/settings
[/code]

Il manque plus qu’un « reboot » ou « /etc/init.d/firewall reload ».

Configurer une connexion cliente wifi définit green0

Note: Ici, on copie et on colle directement dans le shell.

Pour mettre en place une connexion wifi pour une carte réseau définit green0 en tant que client, il faut renseigné un fichier de configuration.

[code lang= »bash »]
cat << EOF > /etc/wpa_supplicant.green0
network={
ssid="Hotspot"
psk="password"
}
EOF
[/code]

Créer un script.

[code lang= »bash »]cat << EOF > /etc/init.d/wlan_green
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/wlan_green
#
# Description : Wireless client initscript
#
########################################################################

. /etc/sysconfig/rc
. ${rc_functions}

case "${1}" in
start)
wpa_supplicant -B -i green0 -c /etc/wpa_supplicant.green0
echo $! &gt; /var/run/wlan_green
;;

stop)
if [ test -f /var/run/wlan_green ]; then
kill `cat /var/run/wlan_green`
rm /var/run/wlan_green
fi
;;

restart)
${0} stop
sleep 1
${0} start
;;

status)
statusproc wpa_supplicant
;;

*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 1
;;
esac

# End $rc_base/init.d/wlan_green
EOF
chmod 754 /etc/init.d/wlan_green
[/code]

Avec Ipfire, il est important de prendre en compte une subtilité sur la numérotation des liens symboliques. En effet, lors du démarrage d’Ipfire, le script initialisant la connexion Ethernet « /etc/init.d/networking/red » recherche le processus wpa_supplicant. S’il trouve un pid, le script shunt dhcpcd, voir code source ci-dessous.

[code lang= »bash »]
# Extrait du fichier /etc/init.d/networking/red

elif [ "${TYPE}" == "DHCP" ]; then
# Add firewall rules to allow comunication with the dhcp server on red.
iptables -A REDINPUT -p tcp –source-port 67 –destination-port 68 -i ${DEVICE} -j ACCEPT
iptables -A REDINPUT -p udp –source-port 67 –destination-port 68 -i ${DEVICE} -j ACCEPT

echo -n "${DEVICE}" &gt; /var/ipfire/red/iface

# Check if the wlan-client is used on red.
# To determine this we check if a wpa_supplicant is running.
pid="$(pidof wpa_supplicant)"

if [ -z "${pid}" ]; then
# No wpa_supplicant is running. So it’s save to start dhcpcd.
dhcpcd_start "${DEVICE}"
fi

## Create &amp; Enable vnstat
/usr/bin/vnstat -u -i ${DEVICE} -r –enable –force &gt; /dev/null 2&gt;&amp;1
# fin de l’extrait
[/code]

Il est important de lancer le script wlan_green après le script /etc/init.d/network sinon ipfire ne découvrira pas ses paramètres réseaux.

[code lang= »bash »]ln -s /etc/init.d/wlan_green /etc/rc.d/rc3.d/S21wlan_green
ln -s /etc/init.d/wlan_green /etc/rc.d/rc0.d/K79wlan_green
ln -s /etc/init.d/wlan_green /etc/rc.d/rc6.d/K79wlan_green[/code]

Même en lançant la connexion wifi avant le script /etc/init.d/network, il est possible de forcer l’initialisation DHCP de red.

[code lang= »bash »]dhcpcd red0[/code]