Raspberry Pi as a Hotspot/Access Point using ‘DHCP’

Raspberry Pi as Wireless Access Point
PDF24    Send article as PDF   

The Raspberry Pi can be used as a wireless access point, running a standalone network. This can be done using the inbuilt wireless features of the Raspberry Pi and even the Raspberry Pi ‘Zero W’, or by using a suitable USB wireless dongle that supports access points.

Note that this documentation was tested on a Raspberry Pi 3, and it is possible that some USB dongles may need slight changes to their settings. If you are having trouble with a USB wireless dongle, please check the forums.

In order to work as an access point, the Raspberry Pi will need to have access point software installed, along with DHCP server software to provide connecting devices with a network address. Ensure that your Raspberry Pi is using an up-to-date version of Raspbian is “Stretch“, or better (e.g. 2018-06-27-raspbian-stretch-lite.img).

I needed an easy and cheap way of providing Internet Access to a number of Laptops for my FIRST Tech Challenge and FIRST LEGO League classes. The venue used has a single Ethernet Outlet only. The solution was to dust off an old Raspberry Pi  model ‘A’ I had doing nothing and turning it into a Hotspot/Access Point.

Lets start by updating the Raspbian installation:

Install all the required software in one go with this command:

Since the configuration files are not ready yet, turn the new software off as follows:

Configuring a static IP

We are configuring a standalone network to act as a server, so the Raspberry Pi needs to have a static IP address assigned to the wireless port. This documentation assumes that we are using the standard 192.168.x.x IP addresses for our wireless network, so we will assign the server the IP address 192.168.4.1. It is also assumed that the wireless device being used is  wlan0.

To configure the static IP address, edit the dhcpcd configuration file with:

Go to the end of the file and edit it so that it looks like the following:

Now restart the dhcpcd daemon and set up the new  wlan0 configuration:

Configuring the DHCP server (dnsmasq)

The DHCP service is provided by dnsmasq. By default, the configuration file contains a lot of information that is not needed, and it is easier to start from scratch. Rename this configuration file, and edit a new one:

Type or copy the following information into the dnsmasq configuration file and save it:

So for  wlan0, we are going to provide IP addresses between 192.168.4.2 and 192.168.4.20, with a lease time of 24 hours. If you are providing DHCP services for other network devices (e.g. eth0), you could add more sections with the appropriate interface header, with the range of addresses you intend to provide to that interface.

There are many more options for dnsmasq; see the dnsmasq documentation for more details.

Configuring the access point host software (hostapd)

You need to edit the hostapd configuration file, located at /etc/hostapd/hostapd.conf, to add the various parameters for your wireless network. After initial install, this will be a new/empty file.

Add the information below to the configuration file. This configuration assumes we are using channel 7, with a network name of PinkFlyodsDomain, and a password SeveralSmallFurryAnimals. Note that the name and password should NOT have quotes around them. The passphrase should be between 8 and 64 characters in length.

We now need to tell the system where to find this configuration file.

Find the line with #DAEMON_CONF, and replace it with this:

Start it up

Now start up the remaining services:

ADD ROUTING AND MASQUERADE

Edit /etc/sysctl.conf and uncomment this line:

Add a masquerade for outbound traffic on eth0:

Save the iptables rule.

Edit /etc/rc.local and add this just above “exit 0” to install these rules on boot.

Now Reboot the Raspberry Pi.

Using a wireless device, search for networks. The network SSID you specified in the hostapd configuration should now be present, and it should be accessible with the specified password.

If SSH is enabled on the Raspberry Pi access point, it should be possible to connect to it from another Linux box (or a system with SSH connectivity present) as follows, assuming the  pi account is present:

By this point, the Raspberry Pi is acting as an access point, and other devices can associate with it. Associated devices can access the Raspberry Pi access point via its IP address for operations such as  rsyncscp, or  ssh.

Using the Raspberry Pi as an access point to share an internet connection (bridge)

One common use of the Raspberry Pi as an access point is to provide wireless connections to a wired Ethernet connection, so that anyone logged into the access point can access the internet, providing of course that the wired Ethernet on the Pi can connect to the internet via some sort of router.

To do this, a ‘bridge’ needs to put in place between the wireless device and the Ethernet device on the access point Raspberry Pi. This bridge will pass all traffic between the two interfaces. Install the following packages to enable the access point setup and bridging.

Since the configuration files are not ready yet, turn the new software off as follows:

Bridging creates a higher-level construct over the two ports being bridged. It is the bridge that is the network device, so we need to stop the  eth0 and  wlan0ports being allocated IP addresses by the DHCP client on the Raspberry Pi.

Add  denyinterfaces wlan0 and  denyinterfaces eth0 to the end of the file (but above any other added  interface lines) and save the file.

Add a new bridge, which in this case is called  br0.

Connect the network ports. In this case, connect  eth0 to the bridge  br0.

Now the interfaces file needs to be edited to adjust the various devices to work with bridging.  sudo nano /etc/network/interfaces make the following edits.

Add the bridging information at the end of the file.

The access point setup is almost the same as that shown in the previous section. Follow the instructions above to set up the  hostapd.conf file, but add  bridge=br0 below the  interface=wlan0 line, and remove or comment out the driver line. The passphrase must be between 8 and 64 characters long.

Now Reboot the Raspberry Pi.

There should now be a functioning bridge between the wireless LAN and the Ethernet connection on the Raspberry Pi, and any device associated with the Raspberry Pi access point will act as if it is connected to the access point’s wired Ethernet.

The  ifconfig command will show the bridge, which will have been allocated an IP address via the wired Ethernet’s DHCP server. The  wlan0 and  eth0 no longer have IP addresses, as they are now controlled by the bridge. It is possible to use a static IP address for the bridge if required, but generally, if the Raspberry Pi access point is connected to a ADSL router, the DHCP address will be fine.

Previous Post

VPN Server: Build Your Own Virtual Private Network

In this tutorial, I will be going through the steps on how to setup a Raspberry Pi VPN server using the OpenVPN software. I will also go into setting up ... Read more

Next Post
Tor + Onion + Raspberry Pi

Make a Raspberry Pi into a Anonymizing 'TOR' Proxy!

TOR: The Onion Router is software that enables you to use the internet anonymously. By setting up TOR on a Raspberry Pi you can create a network router that scrambles ... Read more

Short URL: http://tinyurl.com/y8h7v2zx

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.



Do NOT follow this link or you will be banned from the site!