mike na hračke

som spektrista

Raspberry Pi wifi router

2016-09-17 od mikezt

Máme dobrého suseda, ktorý nám zdieľa internet cez wifi. Fungovalo to viacmenej dobre až do doby, keď sa presťahoval o 3 poschodia vyššie a wifi signál k nám už nedosiahol. Ako riešenie som chcel použiť jeden z mnohých lacných wifi routerov, ktoré sa u nás našli a použiť ich s externou anténou na routovanie wifi do lokálnej siete. Žiadny žiaľ nevedel routovať wifi na ethernet, len naopak. Skúsil som pozrieť ceny drahších routerov, najlepšie s možnosťou nahrania openWRT firmvéru, ale ceny boli skrátka príliš vysoké. No a ťahať kábel cez pár poschodí sa mi nezdalo moc praktické. Navyše sme žiadnu skutočnú lokálnu sieť nemali a tak by bolo pre nás výhodnejšie mať vlastnú wifi.

Napadlo ma použiť Raspberry Pi, ktoré som si kúpil zo zvedavosti, ale nemal naň moc času a ležalo v poličke bez využitia (zrejme bežné „použitie“ Raspberry). Dokúpil som dve wifi karty do USB s chipsetom RT5370 po cca. 13 Eur. Kúpa to bola trochu naslepo, dôležitý parameter bol pre mňa konektor na externú anténu, ale v Linuxe bežia dobre. Malý problém je len s hodnotou Link Quality vo výpise iwconfig, pretože hodnoty pod 35/70 znamenajú slabý až žiadny signál. Trochu ma to potrápilo pri konfigurácii.

Inštalácia

Používam štandardný Raspbian, do ktorého je potrebné doinštalovať balíky hostapd a isc-dhcp-server.

Konfigurácia

Pre nastavenie routovania musíme pomeniť niekoľko súborov v /etc. Poďme na to.

Sieťové karty nastavíme v /etc/network/interfaces (celý súbor):

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 192.168.48.1
  netmask 255.255.255.0

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
  hostapd /etc/hostapd/hostapd.conf
  address 192.168.128.1
  netmask 255.255.255.0

allow-hotplug wlan1
iface wlan1 inet manual
  wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
  iface default inet dhcp
	

Nakŕmime iptables konfiguráciou v /etc/network/if-pre-up.d/iptables (celý súbor):

#!/bin/sh
#This script restores iptables upon reboot

iptables-restore < /etc/iptables.up.rules

exit 0
	

A konfiguráciu uložíme do /etc/iptables.up.rules (celý súbor):

# Generated by iptables-save v1.4.14 on Fri Aug 14 22:52:43 2015
*nat
:PREROUTING ACCEPT [125:34167]
:INPUT ACCEPT [1:28]
:OUTPUT ACCEPT [4:304]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan1 -j MASQUERADE
COMMIT
# Completed on Fri Aug 14 22:52:43 2015
	

Pre wlan1 nastavíme prístupové údaje k susedovej sieti v /etc/wpa_supplicant/wpa_supplicant.conf (celý súbor):

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=SK

network={
  ssid="<susedove ssid>"
  psk="<heslo>"
}
	

Wlan0 nastavíme ako APčko v /etc/hostapd/hostapd.conf (celý súbor):

interface=wlan0
driver=nl80211
ssid=<ssid lokálnej wifi>
hw_mode=g
channel=11
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=<heslo do lokálnej wifi>
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
	

V /etc/sysctl.conf je kvôli routovaniu potrebné odkomentovať riadok:

net.ipv4.ip_forward=1
	

No a aby sme aj dostali automaticky nejakú IP adresu, tak v /etc/dhcp/dhcpd.conf nastavíme (celý súbor):

ddns-update-style none;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.128.0 netmask 255.255.255.0 {
  range 192.168.128.48 192.168.128.128;
  option broadcast-address 192.168.128.255;
  option routers 192.168.128.1;
  default-lease-time 600;
  max-lease-time 7200;
  option domain-name "<meno lokálnej wifi siete>";
  option domain-name-servers <ip adresa dns servera>;
}

subnet 192.168.48.0 netmask 255.255.255.0 {
  range 192.168.48.48 192.168.48.128;
  option broadcast-address 192.168.48.255;
  option routers 192.168.48.1;
  default-lease-time 600;
  max-lease-time 7200;
  option domain-name "<meno lokálnej eth siete>";
  option domain-name-servers <ip adresa dns servera>;
}
	

Tým by mala byť konfigurácia hotová a po reštartovaní siete by sa malo Raspberry pripojiť k wifi sieti zadefinovanej v /etc/wpa_supplicant/wpa_supplicant.conf a vytvoriť lokálnu wifi sieť, ktorá je nakonfigurovaná v /etc/hostapd/hostapd.conf. U nás to behá už viac ako pol roka k spokojnosti. Zo začiatku sme mali problém so silou signálu a ak sa Raspberry odpojí od wifi siete, už sa nevie automaticky pripojiť. Toto som žiaľ nevedel vyriešiť a ak by ste mali nejaký nápad, môžete sa mi ozvať.

Print server

Máme tlačiareň s USB portom. Vždy, keď sme chceli tlačiť, tak sme tlačiareň vytiahli, priniesli k počítaču, vytlačili čo bolo treba a zasa tlačiareň schovali. Prečo sa ale takto trápiť, keď nám už celý deň beží Raspberry a väčšinu času aj tak nič nerobí? Spravíme si print server.

Ako prvé treba nainštalovať balík cups a ak máte nejakú exotiku (napr. Dell 1100), tak aj ovládače splix.

Potom treba nakonfigurovať v /etc/cups/cupsd.conf:
zmeniť Listen localhost:631 na Listen *
a pridať Allow all do:

<Location />
  Order allow,deny
  Allow all
</Location>
and:
<Location /admin>
  Order allow,deny
  Allow all
</Location>
	

Nakoniec treba pridať užívateľa pi do skupiny lp cez príkaz:
sudo adduser pi lp a nakonfigurovať tlačiareň cez webové rozhranie. Odteraz si môžete tlačiť z PDA cez wifi a chodiť si len po hotový papier.

Nie som žiadny linuxový administrátor, konfigurácie som poskladal z viacerých návodov na internete a ak je niečo zle, nechám sa rád poučiť. Prajem Vám veľa naroutovaných packetov!




- 1 = jedna