Raspberry Pi as a Hotspot

From KlavoWiki
Jump to navigationJump to search

configure wlan

Assign an IP address to NIC

vi /etc/network/interfaces

add

auto wlan0

Remark the following lines so the wlan never acts as a client

#allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet manual

Assin an IP address to wlan0

iface wlan0 inet static
address 10.11.12.1
netmask 255.255.255.0
wireless-mode Master

dhcp

Setup DHCP Scope. More information can be found at DHCP_for_Linux

apt-get install isc-dhcp-server
vi /etc/dhcp/dhcpd.conf

The following is based on your requirements.

# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
subnet 10.11.12.0 netmask 255.255.255.0 {
    range 10.11.12.101 10.11.12.120;
    option broadcast-address 10.11.12.255;

    option routers 10.11.12.13;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
}


vi /etc/dhcp/dhcpd.conf 

Bind DHCP to wlan interface

vi /etc/default/isc-dhcp-server

Change

INTERFACES=""

to

INTERFACES="wlan0"

hostapd

As I have the RTL8188CUS wireless chipset I needed to download a specific version of the hostapd application. Other wireless network cards you could try using the distro package

apt-get install hostapd 

otherwise

cd /usr/src
wget https://github.com/jenssegers/RTL8188-hostapd/archive/master.zip
unzip master.zip
cd RTL8188-hostapd-master/hostapd/
make
make install
vi /etc/hostapd/hostapd.conf

Configure the following paramaters as required

ssid=
channel=
wpa_passphrase=

NAT

In my config I have not configured port forwarding and NAT. For my application here I am using the Raspberry Pi with SMB shares so the kids can access TV shows and movies from their Android devices in the car so NAT is not required.

forwarding

vi /etc/sysctl.conf

change

#net.ipv4.ip_forward=1

to be

net.ipv4.ip_forward=1

iptables

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

Refer to iptables for automatic load on boot.