Skip to content

Instantly share code, notes, and snippets.

@umardx
Last active June 29, 2024 14:29
Show Gist options
  • Save umardx/23cc3ad93119151a16f486c7cf01096c to your computer and use it in GitHub Desktop.
Save umardx/23cc3ad93119151a16f486c7cf01096c to your computer and use it in GitHub Desktop.
Using a Raspberry Pi 3 as a Wifi access point and bridge

The specificity of my setup, is that the Raspberry won’t be a router but a bridge. DHCP is thus delegated to the main ADSL router and all devices connected to the AP will appear on the same network than other devices. The instructions below are based on a fresh Raspbian lite install so that it can be reproduced easily.

Install the required packages :

$ sudo apt-get install -y bridge-utils hostapd

To create a bridge, we need to enable ip_forward in the kernel, for that, edit /etc/sysctl.conf and remove comment (#) from the following line :

net.ipv4.ip_forward=1

Then configure your network to create a bridge with eth0, in /etc/network/interfaces :

auto lo
iface lo inet loopback

# Disable eth0 / wlan0 config, handled by bridge
auto eth0
iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual

# Create a bridge with static IP
auto br0
iface br0 inet dhcp
  bridge_ports eth0

You may have noticed that wlan0 is not configured in bridge br0. This is because hostapd will handle this once the access point is ready. So, next step is to configure the access point. For this, edit the file /etc/hostapd/hostapd.conf :

# First part is about configuring the access point and is copied from reference 1
interface=wlan0
driver=nl80211
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
# This part is about setting SSID and WPA2 password
ssid=wifi_ssid
wpa_passphrase=wifi_password
# This line ask hostapd to add wlan0 to the bridge br0
bridge=br0

Now we need to tell hostapd to use our config. For that, edit /etc/default/hostapd and set:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Ok, here we go, just reboot the Pi and waaaw!

sudo reboot
@guyromb
Copy link

guyromb commented Jan 14, 2021

is there a way to route the RPi connected devices via VPN on top?

@Radiokot
Copy link

Thank you for the config. allow-hotplug wlan0 is really an important thing I've missed

@PabloL007
Copy link

Thanks for sharing this, I've also spent a while trying to get this to work on a pi 4 and this is the first thing that worked (used my own hostapd.conf though).

@matti157
Copy link

Right now I access my raspberry via ssh and using the fixed ip.

This what I have in /etc/dhcpd.conf
# Example static IP configuration: interface eth0 static ip_address=192.168.0.2/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 1.1.1.1

If I follow your guide how do I keep the fixed address and access via SSH? Thanks

@rafal98
Copy link

rafal98 commented Mar 17, 2024

Thanks, it works for an old pi2 with an usb wifi key

@alessandromrc
Copy link

Works great on RPI5 and RPI4!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment