RaspberryPi/Access Point
From charlesreid1
Date: March 2016
Contents
Configure RPi As Wireless Access Point
these instructions will walk you through setting up raspberry pi as wireless access point.
Installation
start by connecting to your pi via ssh. Install some software needed to turn the RPi into a router:
$ apt-get install -y hostapd udhcpd iw
Now pick out a wireless USB adapter that can act as an access point.
$ iw list | grep "* AP"
(If no results, try a different wireless card.)
Setting Up DHCP
View the name server (DNS) address stored in /etc/resolve.conf
Now let's configure the DHCP server, which is responsible for handing out leases.
Edit /etc/udhcpd.conf
, use sample file below:
# Sample udhcpd configuration file (/etc/udhcpd.conf) # The start and end of the IP lease block start 192.168.0.20 #default: 192.168.0.20 end 192.168.0.254 #default: 192.168.0.254 # The interface that udhcpd will use interface eth0 #default: eth0 # Settings opt dns 192.168.2.1 option subnet 255.255.255.0 opt router 192.168.0.1 option domain local option lease 864000
This assumes that the resolve.conf file contained 192.168.2.1
.
Now edit one more file: /etc/default/udhcpd
# Comment the following line to enable DHCPD_ENABLED="no" # Options to pass to busybox' udhcpd. # # -S Log to syslog # -f run in foreground DHCPD_OPTS="-S"
Now you're ready to enable DHCP server, simply by commenting out DHCPD_ENABLED="no"
Change it to #DHCPD_ENABLED="no"
and you'll be ready to go.
Setting Up Hostapd
Configure the hostapd server by editing the file /etc/hostapd/hostapd.conf
and adding the following contents:
interface=wlan0 ssid=CIA_Surveillance_Van wpa_passphrase=ITSASECRET driver=nl80211 hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Now enable the hostapd service by creating a default file in /etc/default/hostapd
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration # file and hostapd will be started during system boot. An example configuration # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # #DAEMON_CONF="" # Additional daemon options to be appended to hostapd command:- # -d show more debug messages (-dd for even more) # -K include key data in debug messages # -t include timestamps in some debug messages # # Note that -B (daemon mode) and -P (pidfile) options are automatically # configured by the init.d script and must not be added to DAEMON_OPTS. # #DAEMON_OPTS="" ~ "/etc/default/hostapd" 20 lines, 770 characters Replace the line beginning with #DAEMON_CONF with the line DAEMON_CONF="/etc/hostapd/hostapd.conf". DAEMON_CONF="/etc/hostapd/hostapd.conf" Save the file and exit the editor (:wq). Configure IP forwarding. Use the vi editor to enable IP forwarding by editing the kernel parameters file, /etc/sysctl.conf. pi@raspberrypi ~ $ sudo vi /etc/sysctl.conf The vi editor displays the contents of the configuration file. # # /etc/sysctl.conf - Configuration file for setting system variables # See /etc/sysctl.d/ for additonal system variables # See sysctl.conf (5) for information. #
Enable IPv4 Packet Forwarding
To serve as a router that forwards traffic from a wireless network to a wired network connection, the Pi must be able to forward IPv4.
Edit the kernel parameters file /etc/sysctl.conf
Uncomment the line beginning with net.ipv4.ip_forward by removing the # from the beginning of the line.
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
Enable post forwarding by using echo command to set kernel parameter /proc/sys/net/ipv4/ip_forward
to 1:
$ bash -c 'echo "1" > /proc/sys/net/ipv4/ip_forward'
Now set up IP forwarding rules for postrouting, network address translation, and forwarding:
$ iptables -t nat -A POSTROUTING –o eth0 –j MASQUERADE $ iptables -A FORWARD –i eth0 –o wlan0 -m state --state RELATED,ESTABLISHED –j ACCEPT $ iptables -A FORWARD –i wlan0 –o eth0 –j ACCEPT
Next, we can save these iptables settings in a file for IPv4 NAT, and put that in the appropriate place for the system to use it next time it boots:
$ iptables-save > iptables.ipv4.nat $ mv iptables.ipv4.nat /etc $ chown root:root /etc/iptables.ipv4.nat
Set IP
Now use ifconfig to give the wireless device the IP address specified above:
$ ifconfig wlan0 192.168.0.1
Configure the network interface configuration so that these changes will be permanent. Edit /etc/network/interfaces
:
auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet manual auto wlan0 iface wlan0 inet static address 192.68.0.1 netmask 255.255.255.0 up iptables-restore < /etc/iptables.ipv4.nat
Enable AP
Now you are ready to enable the AP. Use the update-rc command to enable hostapd and udhcpd services:
$ update-rc.d hostapd enable $ update-rc.d udhcp enable
One last thing is to disable WPA supplicant - since you don't want to be connecting to wireless networks while you're acting as a hot spot! Move the services definition file for WPA supplicant, which is in /usr/share/dbus-1/system-services
, to a temporary location.
Last Step: Reboot
Now, upon rebooting, your Raspberry Pi should be acting as a wireless hot spot with the details set in the hostapd configuration file.
Flags
Wireless all things wireless.
Networking:
Software:
|