Instalace potřebných balíčků
Nejprve si jako vždy zaktualizujeme všechny balíčky na našem Raspberry Pi.
sudo apt-get update
sudo apt-get upgrade
Následně nainstalujeme potřebné balíčky hostapd, dnsmasq a bridge-utils.
sudo apt-get install hostapd dnsmasq bridge-utils
Jakmile máme balíčky nainstalovány, vypneme jejich služby, abychom je mohli nakonfigurovat.
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
Konfigurace hostapd
Nejprve musíme správně nastavit balíček hostapd. Jeho konfigurační soubor je /etc/hostapd/hostapd.conf. Pomocí vim ho tedy začneme upravovat.
sudo vim /etc/hostapd/hostapd.conf
Vložíme do něho následující konfiguraci.
interface=wlan0
bridge=br0
#driver=nl80211
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=JmenoSite
wpa_passphrase=HesloSite
Důležité jsou především poslední dvě řádky. V nich se definuje název (SSID) a heslo pro wi-fi. Obojí se zadává bez uvozovek a v plaintextu (bez jakéhokoliv šifrování).
Pokud máme konfigurační soubor připravený doplníme ho do /etc/default/hostapd. V tomto souboru odkomentujeme řádku DAEMON_CONF a jako její hodnotu zadáme "/etc/hostapd/hostapd.conf" (tentokráte v uvozovkách).
sudo vim /etc/default/hostapd
Výsledná řádka bude tedy vypadat takto:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Konfigurace dhcpcd
Dalším krokem je editace souboru /etc/dphcpd.conf.
sudo vim /etc/dhcpcd.conf
Do tohoto souboru doplníme dvě řádky. Musí být umístěny v závěru (na konci souboru), ale nad všemi řádky obsahujícími interface!
denyinterfaces eth0
denyinterfaces wlan0
Přesměrování požadavků z wlan0
Úprava bude v souboru /etc/sysctl.conf.
sudo vim /etc/sysctl.conf
Jediné co v něm musíme udělat, je odkomentovat řádku #net.ipv4.ip_forward=1. Odkomentování provedeme smazáním # na začátku řádku. Výsledný řádek tedy bude vypadat
net.ipv4.ip_forward=1
Nové pravidlo do iptables
Nyní provedeme dvojici příkazů
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sh -c "iptables-save" > /etc/iptables.ipv4.nat
Tím jsme vytvořili, soubor /etc/iptables.ipv4.nat. Tímto souborem potřebujeme inicializovat iptables po každém startu Raspberry Pi. Upravíme tedy soubor /etc/rc.local. Na konec doplníme volání
iptables-restore < /etc/iptables.ipv4.nat
Vytvoření bridge
Nyní vytvoříme bridge, který se bude jmenovat br0. Ten zajistí aby připojená zařízení měla dostupný internet :-).
Bridge vytvoříme sérií příkazů
sudo brtcl addbr br0
sudo brtcl addif br0 eth0
Nyní potřebujeme upravit soubor /etc/network/interfaces a doplnit do něho informace o mostu.
sudo vim /etc/network/interfaces
Doplníme
# Bridge setup
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0
Restart :-)
Nyní je potřeba restartovat Raspberry. Jakmile znovu nabootuje, měla by být dostupná síť s názvem JmenoSite (nebo nějakým vaším, které jste si nastavili v bodu Konfigurace hostapd).
Zápory tohoto řešení
V driveru nl80211, který používá integrovaná Wi-Fi maliny, není povoleno ACS survey. Není tedy možné používat channel=0 nebo channel=acs_survey pro automatickou detekci vhodného kanálu. Kanál je nutné nastavit napevno.
Závěr
Potřebujete si zlepšit wi-fi signál v nějakém koutě vašeho bytu/domu a máte dostupné Raspberry Pi? Tak je to jasná volba. Proč kupovat další wi-fi router, když s Malinou dosáhnete toho samého ;-).
Je možné využít buď integrovaný wi-fi adaptér nebo si dokoupit jiný. Pokud použijete jiný adaptér, je potřeba aby byl Raspberry Pi kompatibilní.
Zdroje:
https://www.raspberrypi.org
https://thepi.io