Jak na Raspberry PI 3 vytvořit WiFi hotspot

Raspberry PI 3 krom dalších vylepšení oproti předchozí verzi dostalo WiFi, které je integrované přímo na desce. Což se přímo nabízí z něj udělat WiFi hotspot.

V tomto článku si ukážeme jak na to… =)


Návod

Balíčky

V prvním kroku si popíšeme s jakými balíčky budeme pracovat.

  • hostapd – Tento balíček umožnuje vytvoření WiFi hotspotu.
  • dnsmasq – Je to kombinace DHCP a DNS serveru.

Balíčky nainstalujeme následujícím příkazem

sudo apt-get install dnsmasq hostapd

Konfigurace sítového rozhraní

Nejprve musíme nastavit na rozhraní wlan0 statickou IP adresu.

Nejprve musíme upravit konfigurační soubor dhcpcd tak aby rozhraní wlan0 ignoroval.

sudo nano /etc/dhcpcd.conf

Na poslední řádek vložíme:

denyinterfaces wlan0

Dále musíme nastavit naší statickou IP adresu.

sudo nano /etc/network/interfaces

Kde z editujeme sekci wlan0 tak aby vypadala takto:

allow-hotplug wlan0  
iface wlan0 inet static  
    address 192.168.1.1
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Jako poslední krok restartujeme dhcpcd

sudo service dhcpcd restart

A přenačteme nastavní wlan0

sudo ifdown wlan0; sudo ifup wlan0

Konfigurace hostapd

Jako další musíme nastavit hostapd. Vytvoříme tedy nový konfigurační soubor

sudo nano /etc/hostapd/hostapd.conf

a vložíme do něj tento obsah, který následně upravíte dle vlastních požadavků (#8 ssid – název wifi a #41 wpa_passphrase – heslo do wifi). Pokud použijete mezeru vložte celý řetězec do uvozovek.

# This is the name of the WiFi interface we configured above
interface=wlan0

# Use the nl80211 driver with the brcmfmac driver
driver=nl80211

# This is the name of the network
ssid=SSID_VASI_WIFI

# Use the 2.4GHz band
hw_mode=g

# Use channel 6
channel=6

# Enable 802.11n
ieee80211n=1

# Enable WMM
wmm_enabled=1

# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Accept all MAC addresses
macaddr_acl=0

# Use WPA authentication
auth_algs=1

# Require clients to know the network name
ignore_broadcast_ssid=0

# Use WPA2
wpa=2

# Use a pre-shared key
wpa_key_mgmt=WPA-PSK

# The network passphrase
wpa_passphrase=HESLO_DO_VASI_WIFI

# Use AES, instead of TKIP
rsn_pairwise=CCMP

Po uložení konfiguračního souboru můžeme zkusit zda vše funguje jak má. A to příkazem:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

Během několika sekund by jste měli vidět vaší WiFi síť. Pokud se na ní budete pokoušet připojit Váš pokus bude neúspěšný jelikož Vám nebude přidělena žádná IP adresa. Ale to zařídíme níže. Takže vypneme běžící proces WiFi AP kombinací kláves Ctrl+C a budeme pokračovat.

Ještě musíme v konfiguraci hostapd udělat poslední věc. A to aby se WiFi spustila po nabootování. Otevřeme si tento konfigurační soubor

sudo nano /etc/default/hostapd

Najděme řádek na kterém se nachází tento zakomentovaný text:

#DAEMON_CONF=""

a obsah toho řádku nahradíme tímto:

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

To nám zajistí že se WiFi AP zapne vždy po startu systému.

Konfigurace dnsmasq

Konfigurační soubor dnsmasq obsahuje velké množství pro nás nepodstatných informací. A proto původní soubor přejmenujeme. A vytvoříme si vlastní…

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

Do vložíme tento obsah:

interface=wlan0                           # Use interface wlan0  
listen-address=192.168.1.1                # Explicitly specify the address to listen on  
bind-interfaces                           # Bind to the interface to make sure we aren't sending things elsewhere  
server=8.8.8.8                            # Forward DNS requests to Google DNS  
domain-needed                             # Don't forward short names  
bogus-priv                                # Never forward addresses in the non-routed address spaces.  
dhcp-range=192.168.1.10,192.168.1.100,12h # Assign IP addresses between 192.168.1.10 and 192.168.1.100 with a 12 hour lease time

Konfigurace IPv4 Forwarding

Aktuálně máme funkční WiFi hotspot na který se mohou připojovat klientská zařízení, kterým je přidělena IP adresa. Zbývá na této síti zprovoznit internet. V našem případě se bude jednat ethernet (eth0).

Nejprve musíme povolit IPv4 Forvarding.

Otevřete si sysctl.conf

sudo nano /etc/sysctl.conf

A odkomentujte (odstraňte #) řídek na kterém se nachází:

net.ipv4.ip_forward=1

Toto nastavení se projeví až po restartu systému takže buď to restartujte systém a nebo zadejte následující příkaz

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Již nám zbývá jen nastavení iptables. Musíme nastavit NAT mezi wlan0 a eth0 (WiFi a Ethernetem). To uděláme jednoduše těmito příkazy:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Toto nastavení se s každým restartem systému smaže. Aby k tomu nedocházelo uložíme si aktuální konfiguraci

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Zajistíme aby se s každým startem systému znovu načetla. Upravíme tedy soubor rc.local

sudo nano /etc/rc.local

a před řádek exit 0 přidáme následující řádek:

iptables-restore < /etc/iptables.ipv4.nat

Aktuálně jsme hotovy!

Po restartu by vše mělo fungovat jak má.

Pokud se Vám z nějakého důvodu do restartu nechce tak stačí spustit tyto 2 služby.

sudo service hostapd start
sudo service dnsmasq start

Poznámka

Pokud Vám něco nefunguje:

  • WiFi hotspot hledejte chybu sekci konfigurace hostapd.
  • WiFi vidíte ale není Vám přidělena IP adresa – sekce Konfigurace dnsmasq.
  • K WiFi se připojíte je Vám přidělena IP ale není funkční internet tak:
    • Zkontrolujte sítové připojení zdrojového adaprétu (v tomto případě eth0).
    • Konfiguraci v sekci IPv4 Forwarding.

Napsat komentář