pont wifi Ethernet avec Raspbian Jessie
Posté : 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
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