Point d’accès WiFi à base de RaspberryPI

Objet :

Configurer une carte RaspberryPI comme relais WiFi pour créer un accès isolé du réseau local. Ex : salle de cours, accès invités…

Prérequis :

Avoir une carte avec la configuration de base.

Méthode d’installation :

Renseigner le fichier de configuration config_var.sh :

WIFI_INTERFACE= »wlan0″
BR_INTERFACE= »br0″
WIRE_INTERFACE= »eth0″
AP_INTERFACE= »ap »

WIFI_COUNTRY= »FR »
WIFI_SSID= »leSSIDquiVaBien »
WIFI_PSK= »leCodeQuiVaBien »

GATEWAY= »10.44.4.1/24″
DNS= »192.168.0.254 1.1.1.1″

AP_SSID= »RaspiLocal »
AP_PSK= »LeCodeLocal »
AP_COUNTRY= »FR »
AP_CHANNEL=11

Exécuter le script config_net_ap_wire.sh :

!/bin/bash
#https://raspberrypi.stackexchange.com/questions/108592/use-systemd-networkd-for-general-networking
#
#https://raspberrypi.stackexchange.com/questions/89803/access-point-as-wifi-router-repeater-optional-with-bridge
#
#À valider
#

CMD_DIR=$(dirname $0)
source ${CMD_DIR}/config_var.sh

#deinstall classic networking

apt –autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common rsyslog
apt-mark hold ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common rsyslog raspberrypi-net-mods openresolv
rm -r /etc/network /etc/dhcp

#setup/enable systemd-resolved and systemd-networkd

apt –autoremove purge avahi-daemon
apt-mark hold avahi-daemon libnss-mdns
apt install libnss-resolve
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
systemctl enable systemd-networkd.service systemd-resolved.service

sed -i ‘s/#DNSSEC=.$/DNSSEC=no/’ /etc/systemd/resolved.conf

cat > /etc/wpa_supplicant/wpa_supplicant-${WIFI_INTERFACE}.conf <<EOF
country=${WIFI_COUNTRY}
ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1
p2p_disabled=1

network={
ssid= »${WIFI_SSID} »
psk= »${WIFI_PSK} »
}
EOF

chmod 600 /etc/wpa_supplicant/wpa_supplicant-${WIFI_INTERFACE}.conf
systemctl disable wpa_supplicant.service
systemctl enable wpa_supplicant@${WIFI_INTERFACE}.service
rfkill unblock wlan

apt install hostapd

cat > /etc/hostapd/hostapd.conf <<EOF
driver=nl80211
ssid=${AP_SSID}
country_code=${AP_COUNTRY}
hw_mode=g
channel=${AP_CHANNEL}
auth_algs=1
wpa=2
wpa_passphrase=${AP_PSK}
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
bridge=${BR_INTERFACE}
EOF

chmod 600 /etc/hostapd/hostapd.conf

#accesspoint@

echo # Texte à copier … :

cat <<EOF

[Unit]
Description=accesspoint with hostapd (interface-specific version)
Wants=wpa_supplicant@%i.service

[Service]
ExecStartPre=/sbin/iw dev %i interface add ${AP_INTERFACE}@%i type __ap
ExecStart=/usr/sbin/hostapd -i ${AP_INTERFACE}@%i /etc/hostapd/hostapd.conf
ExecStopPost=-/sbin/iw dev ${AP_INTERFACE}@%i del

[Install]
WantedBy=sys-subsystem-net-devices-%i.device
EOF

read -p « Copier le contenu précédent pour le coller dans la commande suivante … »

systemctl edit –force –full accesspoint@.service

read -p  » Valider … »

systemctl enable accesspoint@${WIFI_INTERFACE}.service
rfkill unblock wlan

cat >/etc/wpa_supplicant/wpa_supplicant-${WIFI_INTERFACE}.conf <<EOF
country=${WIFI_COUNTRY}
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
p2p_disabled=1

network={
ssid= »${WIFI_SSID} »
psk= »${WIFI_PSK} »
#key_mgmt= »WPA-PSK » # see ref (4)
}
EOF

chmod 600 /etc/wpa_supplicant/wpa_supplicant-${WIFI_INTERFACE}.conf
systemctl disable wpa_supplicant.service

#wpa_supplicant@

echo # Texte à copier … :
cat <<EOF

[Unit]
BindsTo=accesspoint@%i.service
After=accesspoint@%i.service

[Service]
ExecStartPost=/lib/systemd/systemd-networkd-wait-online –interface=%i –timeout=60 –quiet
ExecStartPost=/bin/ip link set ap@%i up
ExecStopPost=-/bin/ip link set ap@%i up
EOF

read -p « Copier le contenu précédent pour le coller dans la commande suivante … »

systemctl edit wpa_supplicant@${WIFI_INTERFACE}.service

read -p  » Valider … « 

cat > /etc/systemd/network/08-wifi.network <<EOF
[Match]
Name=wl*
[Network]
LLMNR=no
MulticastDNS=yes
DHCP=yes
EOF

cat > /etc/systemd/network/02-${BR_INTERFACE}.netdev <<EOF
[NetDev]
Name=${BR_INTERFACE}
Kind=bridge
EOF

cat > /etc/systemd/network/04-${WIRE_INTERFACE}.network <<EOF
[Match]
Name=${WIRE_INTERFACE}
[Network]
Bridge=${BR_INTERFACE}
EOF

cat > /etc/systemd/network/16-${BR_INTERFACE}_up.network <<EOF
[Match]
Name=${BR_INTERFACE}
[Network]
LLMNR=no
MulticastDNS=yes
IPMasquerade=yes
Address=${GATEWAY}
DHCPServer=yes
[DHCPServer]
DNS=${DNS}
EOF

echo « Tout doit être prêt, il faut redémarrer !!! »

RaspberryPI : disque externe

Objet :

Comment installer l’OS pour l’utiliser avec un disque USB.

Prérequis :

Pour commencer le plus simple est d’avoir copier l’ISO sur la carte SD qui sera toujours utilisée pour le démarrage.

Concernant le disque il faut au minimum une partition «ext4» pour accueillir le filesystem root et une partition swap en option.

Étapes

Copier la partition root de la carte SD vers le disque USB.

Modifier le fichier «/boot/cmdline.txt» pour lui indiquer sur quelle partition se trouve le filesystem racine.

Modifier le fichier «/etc/fstab» pour finaliser le montage correct des partitions.

Organisation du disque

Pour permettre de faire facilement des tests, j’ai créé 5 partitions sur mon disque :

fs_root : qui sera la partion racine de l’installation.

fs_back : destiné à recevoir la base brute de la partition root de la carte SD avec la configuration minimale de RaspiOS.

fs_datas : pour stocker les scripts ou fichiers utiles à la configuration.

fs_appli : Sauvegarde après configuration des applications.

Ça sert à quoi un site?

Finalement je ne suis toujours pas plus inspiré pour rédiger des articles pour le site. Les sujets ne manquent pourtant pas, mais à quoi bon raconter ses idées s’il n’y a pas de retour et comme je ne suis pas prêt à jouer le modérateur, je ne compte pas ouvrir les commentaires.

Le seul intérêt de ce site est donc de me familiariser avec l’administration de WordPress.

Passage au site sécurisé

L’hébergeur Ouvaton permet maintenant de sécuriser les sites avec «Let’s Encrypt». J’ai donc fait le nécessaire pour rediriger toutes les requêtes vers le protocole https en adaptant le fichier «.htaccess» du site.

Par la même occasion j’en ai profité pour le adapter aussi la galerie photos également hébergée chez Ouvaton.