Standardowo w OpenWrt klienci kablowi są połączeni z klientami radiowymi pod jednym interfejsem br-lan. W przypadku rozwiązań Hotspotowych najlepiej jest rozdzielić tych klientów na oddzielne interfejsy i zakresy IP.
Usuwamy lub komentujemy (#) w /etc/config/network opcje w celu wyłączenia mostka pomiędzy radiem, a przełącznikiem:
option 'type' 'bridge'
Dodajemy nowy wpis do /etc/config/network
config 'interface' 'wlan'
option 'ifname' 'wlan0'
option 'proto' 'static'
option 'ipaddr' '192.168.100.1'
option 'netmask' '255.255.255.0'
W /etc/config/wireless zamieniamy 'option 'network' 'lan' na
option 'network' 'wlan'
Zapewni nam to połączenie radia z nowo utworzonym interfejsem w /etc/config/network. Należy również pamiętać o włączeniu radia i ewentualnie zmianie SSID na inny.
Ostatecznie do /etc/config/dhcp dodajemy nowÄ… sekcje
config dhcp wlan
option interface wlan
option start 2
option limit 10
option leasetime 4h
Od teraz wszyscy klienci radiowi dostaną automatycznie IP z zakresu 192.168.100.2 - 10 (czyli 9 klientów)
Pozostaje jeszcze ustawić poprawnie firewall
Nowa strefa wlan
uci add firewall zone uci set firewall.@zone[-1].name=wlan uci set firewall.@zone[-1].network=wlan uci set firewall.@zone[-1].input=ACCEPT uci set firewall.@zone[-1].forward=DROP uci set firewall.@zone[-1].output=ACCEPT
Umożliwiamy ruch pomiędzy wlan → wan, wlan → lan i lan → wlan
uci add firewall forwarding uci set firewall.@forwarding[-1].src=wlan uci set firewall.@forwarding[-1].dest=wan uci add firewall forwarding uci set firewall.@forwarding[-1].src=wlan uci set firewall.@forwarding[-1].dest=lan uci add firewall forwarding uci set firewall.@forwarding[-1].src=lan uci set firewall.@forwarding[-1].dest=wlan
Zapisujemy i restartujemy zapore
uci commit firewall /etc/init.d/firewall restart
Założenia tego rozwiązania:
Podłączony klient do naszego hotspotu, który otworzy jakąś stronę najpierw zostanie przeniesiony stronę autoryzacyjną. Po kliknięciu w odpowiednim miejscu zostanie przeniesiony na wybraną początkowo stronę. Autoryzacji dokonuje się raz na każda sesje połączenia z hotspotem.
Ze względu na nie duże wymagania stawiane naszemu hotspotowi do tego celu świetnie nadaje się nodogsplash.
opkg update opkg install ip iptables-mod-extra iptables-mod-imq iptables-mod-ipopt kmod-ipt-extra kmod-sched tc nodogsplash
Ustawienia nodogspot są w pliku /etc/nodogsplash/nodogsplash.conf. Poniżej konfiguracja programu, która realizuje nasze założenia:
# interfejs radiowy
GatewayInterface wlan0
# klienci którzy uzyskali autoryzację mają pełny dostęp do sieci Internet
FirewallRuleSet authenticated-users {
FirewallRule allow
}
# przed autoryzacją trzeba mieć dostęp do DNS
FirewallRuleSet preauthenticated-users {
FirewallRule allow tcp port 53
FirewallRule allow udp port 53
}
# dostęp do routera, czyli tylko DNS i DHCP
FirewallRuleSet users-to-router {
FirewallRule allow udp port 53
FirewallRule allow tcp port 53
FirewallRule allow udp port 67
}
# nazwa naszego Hotspotu
GatewayName OpenSpot
# interfejs zewnetrzny (WAN)
ExternalInterface eth0
# przekieruj na Google automatycznie
RedirectURL http://www.google.pl
# każdy uzyskuje autoryzacje
AuthenticateImmediately yes
# blokujemy konkretne MAC adresy
# BlockedMACList 00:00:DE:AD:BE:EF,00:00:C0:1D:F0:0D
# zarządzanie pasmem włączone
TrafficControl yes
DownloadLimit 128
UploadLimit 128
Musimy jeszcze dokonać zmiany w pliku startowym /etc/init.d/nodogsplash. Usuwamy znak(#) komentarza z trzech ostatnich linii tego pliku. Ostatecznie powinno wyglądać tak:
# if not using traffic control, # you can comment out the following 3 lines: do_module_tests "imq" "numdevs=2" do_module_tests "ipt_IMQ" do_module_tests "sch_htb"
Uruchamiamy nodogsplash:
/etc/init.d/nodogsplash start
Uruchamianie na starcie
/etc/init.d/nodogsplash enable
