pont wifi Ethernet avec Raspbian Jessie

Paramétrer le Raspberry Pi B/B+ pour se connecter via Ethernet ou une clé WiFi USB

Modérateurs : Francois, maxty01

Répondre
pat499
Messages : 4
Enregistré le : sam. 3 déc. 2016 21:54

pont wifi Ethernet avec Raspbian Jessie

Message par pat499 » sam. 3 déc. 2016 23:49

Bonjour

La réalisation d'un pont (ou bridge) entre les ports Ethernet et wifi m'a demandé pas mal de recherches et de lectures. Aussi, je partage ici mon expérience qui pourra être utile à d'autres. L'idée de ma manip était de réaliser un point d'accès WiFi avec un Raspberry Pi 3. Pour cela je suis parti de la distribution Jessie Lite, celle sans interface graphique. Toutes les manips ont été faites depuis un autre ordi avec une connexion SSH, le Raspberry étant connecté à mon réseau local sur un port de ma box.

Je n'ai pas assigné d'adresse IP fixe au Raspberry puisqu'il est accessible sans connaître son adresse
$ ssh pi@raspberrypi.local

J'ai installé le paquet hostapd pour créer un point d'accès WiFi.
$ sudo apt-get install hostapd

Pour créer le fichier de configuration /etc/hostapd/hostapd.conf, je suis parti du fichier /usr/share/doc/hostapd/examples/hostapd.conf.gz. Utiliser la commande zcat pour décompresser. Attention, il ne faut pas ajouter de # ni d'espace en fin de ligne dans le fichier hostapd.conf (eg 'driver=nl80211 ' ou 'driver=nl80211 # commentaire'). Pour info, ci-dessous le contenu de mon fichier. On remarquera qu'il va créer un pont br0 (2nd ligne). En conséquence, lors de l'initialisation du point d'accès, le pont br0 sera déclaré et le port wlan0 y sera raccordé. Il restera alors à connecter le port Ethernet à ce pont pour qu'il soit opérationnel.
interface=wlan0
bridge=br0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=votreSSID
country_code=FR
ieee80211d=1
hw_mode=g
channel=6
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
ieee80211n=1
wpa=2
wpa_passphrase=votreMotDePasse
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

Pour tester la config, il suffit de lancer hostapd. Le réseau Wifi est alors visible.
$ sudo hostapd -dd /etc/hostapd/hostapd.conf

Pour démarrer hostapd au démarrage, éditer /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf

Si vous avez besoin de relancer le service suite à une modification de la configuration, faite
$ sudo service hostapd restart

Maintenant, il ne reste plus qu'à connecter le port Ethernet au pont br0. A noter que l'installation du paquet bridge-utils n'est pas nécessaire. La méthode basée bridge-utils est maintenant remplacée par par celle basée sur iproute2 qui utilise les commande ip et bridge. Aucune installation complémentaire n'est à faire, ces deux commandes sont déjà présentes. Certains évoquent aussi l'activation de l'IP Forwarding entre les 2 interfaces. C'est inutile car le pont agit au niveau des adresses mac et non des adresses IP. Donc, la modification du fichier /etc/sysctl.conf en y plaçant net.ipv4.ip_forward = 1 est totalement inutile pour un pont.

Il est hyper hyper important de retirer l'adresse IP assigné au port Ethernet avant de l'intégrer au pont. C'est là où j'ai bloqué un certain temps. Je perdais la connexion ssh au bout de quelques minutes sans pouvoir me reconnecter. Je lance donc les deux commandes en même temps (je suis connecté en ssh sur ce port Ethernet).
$ sudo ip address flush dev eth0 && sudo ip link set eth0 master br0
La première partie retire l'adresse IP et la second intègre le port eth0 au pont br0. Maintenant le point d'accès Wifi devrait être opérationnel. Bien sûr, la connexion ssh a été perdue. Il suffit de se reconnecter
$ ssh pi@raspberrypi.local

Alexidreaming
Raspinaute
Messages : 211
Enregistré le : mar. 16 août 2016 20:55
Contact :

Re: pont wifi Ethernet avec Raspbian Jessie

Message par Alexidreaming » dim. 4 déc. 2016 09:21

Merci de ton retour. J'ai fait exactement pareil sauf que j'ai rajouter squidguard et tor
Le pro du déterrage de topic est là!

Alexidreaming

flatounet
Messages : 8
Enregistré le : mer. 21 déc. 2016 11:29

Re: pont wifi Ethernet avec Raspbian Jessie

Message par flatounet » mer. 21 déc. 2016 12:00

bonjour à vous ,
totalement débutant linux/rasberpy pi ,

rasberpi B+ 1.2 avec un ecran 3"5
avec jessie ,car driver de l'écran installé dessus....

j'ai un projet similaire ,transformé mon rasperbi en point accès internet local ,
via les hotspots / reseaux privées à portée
et distribué la totalité de la bande passante sur le reseau local ( RJ45)

automatisé les connections wifi sur les portails des hotspot present ( FreeWifi , Orange , Sfr / fon .. )
reseaux privée à porté ( ma box ,celle chez mes parents.....)

si vous avez déjà croisé ce projet ,un PM serai bienvenue ,
reste que je ne sait part quel bout commencer ,
- détecté les cartes wifi
- listés les réseaux disponible
- connexion à ces derniers si un code d'acces fournis.

j'avais lu une autre personne ayant fait une jonctions de wifi à ethernet comme pat499 ( recherche google)
vue un autre script pour le load balancing

reste pour automatisé les connections sur les hotspot ...

aides bienvenue :)

pat499
Messages : 4
Enregistré le : sam. 3 déc. 2016 21:54

Re: pont wifi Ethernet avec Raspbian Jessie

Message par pat499 » mer. 26 sept. 2018 18:34

Bonjour,

Depuis mon post de décembre 2016, j'ai automatisé l'activation du pont avec la possibilité d'éteindre le point d'accès wifi à certaines plages horaires, par exemple la nuit. Mon raspberryPi me sert de point d'accès complémentaire. Ci-dessous, ce que j'ai fait. Elle marche parfaitement depuis plus d'un mois. Je ne prétend pas que ce soit la meilleure solution, il existe certainement d'autres méthodes.

1 - Je suis passé en adresse fixe en modifiant le fichier /etc/dhcpd.conf car en mode client DCHP ça ne fonctionnait pas à 100% avec le serveur DHCP de ma box avec les arrêts journaliers du pontage. Les valeurs sont à ajuster en fonction de votre box.
interface eth0
static ip_address=192.168.0.100/24
static routers=192.168.0.1
static domain_name_servers=89.2.0.1 89.2.0.2

interface br0
static ip_address=192.168.0.101/24
static routers=192.168.0.1
static domain_name_servers=89.2.0.1 89.2.0.2

2 - Par rapport à la configuration /etc/hostapd/hostapd.conf de décembre 2016, j'ai supprimé la création du pont br0 par hostapd afin de maîtriser la création du pont
#bridge=br0

3 - Création d'un script d'initialisation initBridge.sh
# attendre le démarrage du service hostapd, La tempo de 15s est très largement surdimensionnée.
sleep 15s
# Création du pont br0
sudo ip link add name br0 type bridge
# Ajout de eth0 au pont br0. Il faut d'abord ôter son adresse IP éventuelle, d'où la première commande flush
sudo ip add flush dev eth0
sudo ip link set eth0 master br0
# Ajout de wlan0 au pont br0
sudo ip add flush dev wlan0
sudo ip link set wlan0 master br0

4 - Création d'un script de désactivation du WiFi wifiAPoff.sh
# Retrait de wlan0 du pont br0
sudo ip link set dev wlan0 nomaster
# Arrêt du service point d'accès wifi
sudo service hostapd stop
# Extinction de la partie radio du Wifi
sudo rfkill block wifi

5 - Création d'un script de d'activation du WiFi wifiAPon.sh
# Activation de la partie radio du Wifi
sudo rfkill unblock wifi
# Démarrage du service point d'accès wifi
sudo service hostapd start
# Ajout de wlan0 au pont br0.
sudo ip add flush dev wlan0
sudo ip link set wlan0 master br0

6 - Rendre les 3 fichiers exécutables
chmod u+x *.sh

7 - Création d'une table cron avec crontab -e. dans l'exemple ci-dessous, extinction de la wifi entre 1h00 et 7h00.
@reboot /home/pi/initBridge.sh<br/>
0 1 * * * /home/pi/wifiAPoff.sh<br/>
0 7 * * * /home/pi/wifiAPon.sh</t>

Répondre

Retourner vers « Le réseau sur le Raspberry Pï »