Dostęp do internetu dla gości
Ostatnia zmiana: 2021-10-26 17:49
Sieć gościnna jest to dodatkowa sieć przeznaczona dla gości (osób doraźnie mających mieć dostęp do internetu), nie powiązana zwykle z siecią domową. Zaletą jej stosowania jest możliwość nałożenia różnych ograniczeń oraz sam fakt, że nie podajemy naszego hasła innym osobom.Temat ten był już wielokrotnie omawiany i bez problemu można go zrealizować na alternatywnym oprogramowaniu.
Oczywiście, termin "sieć gościnna" nie odnosi się tylko do sieci "dla gości". Chodzi o ogóle wyodrębnienie kolejnej sieci, do której mogą się podłączyć właśnie osoby sporadyczni korzystające z naszej sieci, urządzenie IoT czy dowolne inne urządzenia wifi którym chcemy z jakiegoś powodu ograniczyć dostęp do sieci lub nie chcemy im dawać bezpośredniego dostępu do naszej sieci lokalnej.
Opis ten zrealizowano z użyciem OpenWrt Chaos Calmer 15.05, LEDE 17.01, 19.07, 21.02.
Konfiguracja
Zakładamy, że mamy router z OpenWrt, podłączony do internetu przez interfejs wan (to ważne!), ze standardową konfiguracją. Konfigurację rozpoczynamy od dodania dodatkowej sieci dla gości; najprościej wykonać to przez dodanie nowego wirtualnego interfejsu radiowego nie powiązanego z naszą siecią.
Konfiguracja dla obrazów OpenWrt wydanych po 29 maja 2021r (od wersji 21.02-rc2 i późniejsze wydania):
# uci set network.guest=interface
# uci set network.guest.device=br-guest
# uci set network.guest.proto=static
# uci set network.guest.ipaddr=172.16.0.1
# uci set network.guest.netmask=255.240.0.0
# uci add network device
# uci set network.@device[-1].name='br-guest'
# uci set network.@device[-1].type='bridge'
# uci set network.@device[-1].bridge_empty='1'
# uci set dhcp.guest=dhcp
# uci set dhcp.guest.start=100
# uci set dhcp.guest.limit=150
# uci set dhcp.guest.leasetime=2h
# uci set dhcp.guest.interface=guest
# uci set wireless.guest=wifi-iface
# uci set wireless.guest.device=radio0
# uci set wireless.guest.mode=ap
# uci set wireless.guest.network=guest
# uci set wireless.guest.ssid=dom_goscinna
# uci set wireless.guest.encryption=none
# uci add firewall zone
# uci set firewall.@zone[-1].name=guest
# uci add_list firewall.@zone[-1].network=guest
# uci set firewall.@zone[-1].input=ACCEPT
# uci set firewall.@zone[-1].output=ACCEPT
# uci set firewall.@zone[-1].forward=ACCEPT
# uci add firewall forwarding
# uci set firewall.@forwarding[-1].src=guest
# uci set firewall.@forwarding[-1].dest=wan
# uci commit
Konfiguracja dla obrazów OpenWrt wydanych do 29 maja 2021r (do wersji 21.02-rc1 włącznie):
# uci set network.guest=interface
# uci set network.guest.type=bridge
# uci set network.guest.proto=static
# uci set network.guest.ipaddr=172.16.0.1
# uci set network.guest.netmask=255.240.0.0
# uci set dhcp.guest=dhcp
# uci set dhcp.guest.start=100
# uci set dhcp.guest.limit=150
# uci set dhcp.guest.leasetime=2h
# uci set dhcp.guest.interface=guest
# uci set wireless.guest=wifi-iface
# uci set wireless.guest.device=radio0
# uci set wireless.guest.mode=ap
# uci set wireless.guest.network=guest
# uci set wireless.guest.ssid=dom_goscinna
# uci set wireless.guest.encryption=none
# uci add firewall zone
# uci set firewall.@zone[-1].name=guest
# uci add_list firewall.@zone[-1].network=guest
# uci set firewall.@zone[-1].input=ACCEPT
# uci set firewall.@zone[-1].output=ACCEPT
# uci set firewall.@zone[-1].forward=ACCEPT
# uci add firewall forwarding
# uci set firewall.@forwarding[-1].src=guest
# uci set firewall.@forwarding[-1].dest=wan
# uci commit
Modyfikowane są pliki
/etc/config/firewall, /etc/config/dhcp, /etc/config/network i /etc/config/wireless. Dodajemy nową sieć (nazwaną tu
guest) o następujących parametrach:
- nazwa rozgłaszana, SSID: dom_goscinna
- brak szyfrowania
- przydzielane adresy z klasy 172.16.0.0/12
- kanał taki sam jak został ustawiony na interfejsie radiowym.
Dodatkowy SSID dodany jest do pierwszego interfejsu radiowego (
radio0), więc musi on być włączony:
# uci set wireless.radio0.disabled=0
# uci commit
Należy także pamiętać czym ten interfejs radiowy jest - siecią 2.4GHz lub 5GHz; zależy to od konkretnego modelu routera. Jeżeli urządzenie ma dwa interfejsy radiowe to można też włączyć to na drugim:
# uci set wireless.radio1.disabled=0
# uci set wireless.guest1=wifi-iface
# uci set wireless.guest1.device=radio1
# uci set wireless.guest1.mode=ap
# uci set wireless.guest1.network=guest
# uci set wireless.guest1.ssid=dom_goscinna
# uci set wireless.guest1.encryption=none
# uci commit
Po wykonaniu restartu routera
powinna być widoczna dodatkowa sieć bezprzewodowa o nazwie "dom_goscinna" do której możemy się podłączyć i korzystać z internetu.
Jeżeli chcemy uzyskać sieć dla gości nie tylko na wifi ale także na jednym lub kilku portach ethernet, należy posłużyć się
tym poradnikiem.
Nie chcę żeby Google lokalizowało mój router!
Można więc zmienić mac adres interfejsu radiowego (uwaga: nie każdy sterownik to umożliwia!):
# uci set wireless.guest.macaddr=00:11:22:33:44:55
# uci commit wireless
lub zmieniać ten mac adres cyklicznie w cronie.
Można też odpowiednio nazwać sieć dodając do jej nazwy
_nomapAle on ma dostęp do mojego routera!
Widzi stronę logowania bo konfiguracja została tak stworzona. Można ją trochę bardziej uszczelnić żeby ruch szedł tylko do internetu:
# uci set firewall.@zone[-1].input=REJECT
# uci set firewall.@zone[-1].output=ACCEPT
# uci set firewall.@zone[-1].forward=REJECT
# uci add firewall rule
# uci set firewall.@rule[-1].src=guest
# uci set firewall.@rule[-1].proto=udp
# uci set firewall.@rule[-1].src_port=67-68
# uci set firewall.@rule[-1].dest_port=67-68
# uci set firewall.@rule[-1].target=ACCEPT
# uci set firewall.@rule[-1].family=ipv4
# uci add firewall rule
# uci set firewall.@rule[-1].src=guest
# uci set firewall.@rule[-1].dest_port=53
# uci set firewall.@rule[-1].target=ACCEPT
# uci set firewall.@rule[-1].family=ipv4
# uci set firewall.@rule[-1].proto=tcpudp
# uci commit
Dodatkowo można także ograniczyć komunikację miedzy klientami bezprzewodowymi:
# uci set wireless.guest.isolate=1
# uci commit
Wykonujemy restart i od tej pory nie powinno być dostępu do routera.
Ale każdy może mi się podłączyć do sieci!
Więc po prostu nie otwieramy sieci tylko ją zabezpieczamy
# uci set wireless.guest.encryption='psk2'
# uci set wireless.guest.key=12345678
# uci commit
# wifi
Hasło w tym przypadku to
12345678Ale on ma Windows 10...
I tym samym może mieć włączą nową opcję "Czujnik WiFi" dzięki czemu ktoś może podzielić się naszym hasłem z innymi ludźmi. Aby tego uniknąć - po prostu zmieniajmy hasło codzienne na inne dodając odpowiednie polecenie do crona:
# echo "1 0 * * * uci set wireless.guest.key=\$(head /dev/urandom | tr -dc '0-9a-zA-Z' | cut -b0-8); uci commit wireless; wifi" >> /etc/crontabs/root
# /etc/init.d/cron restart
Raz dziennie, minutę po północy, hasło do sieci gościnnej zostanie zmienione na osiem losowych znaków.
No tak, ale jak ktoś przyjdzie do nas i chce się podłączyć to nie zna hasła. Rozwiązujemy to w ten sposób, że stworzymy stronę na której to hasło będzie widoczne, więc jeżeli ktoś przyjdzie i będzie chciał się podłączyć, to wyciągamy z kieszeni nasz smartfon (jesteśmy podłączeni do naszej prywatnej sieci, prawda?), wybieramy w zakładkach odpowiednią podstronę naszego routera i po prostu dyktujemy mu hasło. Nawet jak je potem udostępni to i tak zostanie ono następnego dnia zmienione.
Jak się do tego zabrać? Instalujemy serwer http jeżeli go jeszcze nie mamy:
# opkg update
# opkg install uhttpd
# /etc/init.d/uhttpd enable
# /etc/init.d/uhttpd start
A następnie tworzymy nową podstronę
/www/cgi-bin/pin:
# touch /www/cgi-bin/pin
# chmod 755 /www/cgi-bin/pin
o zawartości:
#!/bin/sh
echo "Content-type: text/html"
echo ""
echo "<html><body><h1>"
uci get wireless.guest.key
echo "</h1></body></html>"
(np. edytorem vi).
Po jej zrobieniu wchodzimy na adres
http://192.168.1.1/cgi-bin/pin i wyświetla nam się bieżące hasło którym możemy się podzielić...
Można też odpowiednio nazwać sieć dodając do jej nazwy
_optoutAle on zapycha mi pasmo!
Niektórych użytkowników nie da się wychować, więc po prostu ograniczamy pasmo naszej sieci gościnnej do limitu np. 1Mbps download i 0,5Mbps upload:
# opkg update
# opkg install wshaper
# uci set wshaper.settings.network='guest'
# uci set wshaper.settings.downlink='512'
# uci set wshaper.settings.uplink='1024'
# uci commit
# /etc/init.d/wshaper enable
# /etc/init.d/wshaper start
(dla LEDE pakiet
wshaper nie jest już dostępny).
Jeżeli w systemie jest już skonfigurowany QoS to nie należy instalować
wshapera tylko zmienić odpowiednio istniejący QoS.
Chcę mieć stronę powitalną
Np. z regulaminem, bo prowadzę mały hotelik. Nic trudnego, wystarczy zainstalować odpowiedni program, np. coova-chilli,
nodogsplash czy własne skrypty. Pamiętajmy tylko że nasza sieć gościnna to nie jest interfejs
br-lan.
Chcę żeby mieli dostęp do tylko do www
Jeżeli używamy hotspota - tam to można ograniczyć. Jeżeli nie - wystarczy założyć odpowiednią regułę w iptables np:
# iptables -I FORWARD -p tcp -s 172.16.0.0/12 ! --dport 80 -j REJECT
Chcę żeby sieć była dostępna tylko po południu
I tu znów można posłużyć się
cronem:
# echo "0 16 * * * uci set wireless.guest.disabled=0; wifi" >> /etc/crontabs/root
# echo "0 22 * * * uci set wireless.guest.disabled=1; wifi" >> /etc/crontabs/root
# /etc/init.d/cron restart
Spowoduje to włączenie sieci gościnnej o 16:00 i wyłączenie o 22:00. Oczywiście trzeba ustawić domyślnie wyłączoną sieć.
Chcę być anonimowy w sieci gościnnej
Zainstaluj
TORa.