Dzisiaj jest 24 wrz 2017, 08:54

Strefa czasowa UTC+1godz. [letni]




Nowy temat Odpowiedz w temacie  [ Posty: 162 ]  Przejdź na stronę 1, 2, 3, 4, 5 ... 9  Następna
Autor Wiadomość
 Tytuł: [HOWTO] Hotspot - strona powitalna sieci
Post: 27 lut 2012, 14:00 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
W jednym z artykułów - sieć gościnna omówiłem sposób utworzenia dodatkowej sieci WLAN dla gości, tymczasowo chcących podłączyć się do naszej sieci. Jest to jedno z rozwiązań - inne, znaczne prostsze to udostępnienie interfejsu sieciowego bez żadnego szyfrowania - czyli stworzenie otwartej sieci, która działa jako hostspot. Takie rozwiązanie jest przyjazne dla użytkownika, ale warto było by zainteresować się także możliwością reklamy naszej sieci czy po prostu przywitania użytkownika. Powinno mieć to duże znaczenie przy zastosowaniu takiego rozwiązania komercyjnie np. w hotelach, choć w małej prywatnej sieci też może znaleźć zastosowanie np. do wysyłania informacji użytkownikowi.

Omówmy najpierw zasadę działania takiego projektu. Użytkownik widzi dostępną sieć publiczną (lub zna hasło do podłączenia się do niej). Loguje się, i przy próbie wywołania jakiejkolwiek strony pojawia mu się nasza strona informacyjna. Zmuszony jest potwierdzić chęć skorzystania z internetu i od tej pory ma całkowicie otwarty dostęp. Po pewnym czasie możemy usuwać reguły zezwalające i tym samym wymusić kolejne wyświetlenie strony użytkownikowi.

Realizacja tego zagadnienia jest stosunkowo prosta: tworzymy własny serwer www ze stroną informacyjną. Cały ruch przy pomocy odpowiednich reguł iptables należy przekierować na naszą stronę. Jeżeli użytkownik potwierdzi chęć skorzystania z internetu - odpowiednim skryptem zezwalamy na transmisję.

Do realizacji można użyć dowolnego routera z zainstalowanym serwerem www. Może to być czyste OpenWrt lub projekt Gargoyle - ważne aby pamiętać o uruchomieniu wbudowanego panelu zarządzenia (o ile jest zainstalowany) na innym porcie niż domyślny 80, który zostanie wykorzystany w tym przykładzie. Po szczegóły odsyłam do dokumentacji poszczególnych projektów.

Zaczynamy realizację projektu od zainstalowania serwera www (o ile go jeszcze nie ma). W tym przypadku będzie to uhttpd:
opkg update
opkg install uhttpd

Następnie należy utworzyć konfigurację naszego serwera:
uci set uhttpd.hotspot=uhttpd
uci set uhttpd.hotspot.listen_http=0.0.0.0:80
uci set uhttpd.hotspot.home=/hotspot
uci set uhttpd.hotspot.interpreter=.cgi=/bin/ash
uci set uhttpd.hotspot.cgi_prefix=/cgi-bin
uci set uhttpd.hotspot.no_dirlists=1
uci commit uhttpd
/etc/init.d/uhttpd enable

I znów ta sama uwaga - zauważcie, że użyty tu został port 80, więc jeżeli są też inne sekcje konfiguracyjne to należy się upewnić, że nie nasłuchują one na porcie 80.
Katalog w którym zostanie umieszczona nasza strona powitalna został określony na /hostspot; tworzy więc go:
mkdir /hotspot

a następnie umieszczamy w nim plik index.html o następującej zawartości (to właśnie on decyduje o wyglądzie naszej strony powitalnej):
<html>
<head>
 <meta http-equiv="Expires" content="0" />
 <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" />
 <meta http-equiv="Pragma" content="no-cache" />
</head>
<body>
<center>
<h1>Witaj gościu!</h1>
Aby kontynuować, naciśnij OK
<form name="input" action="/cgi-bin/allow.cgi" method="post">
<input type="submit" value="OK" />
</form>
</center>
</body>
</html>

Strona jest prosta - wyświetla komunikat powitalny i przycisk "OK", po jego naciśnięciu zostanie wykonany skrypt cgi-bin/allow.cgi, który zezwoli na skorzystanie z internetu. Tworzymy więc taki skrypt:
mkdir /hotspot/cgi-bin
touch /hotspot/cgi-bin/allow.cgi
chmod 755 /hotspot/cgi-bin/allow.cgi

a następnie umieszczamy w nim następujący kod:
#!/bin/sh

echo "Content-type: text/html"
echo ""

IP=$(env | awk -F= '/REMOTE_ADDR/ {print $2}')

iptables -t nat -D prerouting_blokada -p tcp -s $IP -j ACCEPT || true
iptables -t nat -I prerouting_blokada -p tcp -s $IP -j ACCEPT

cat << _EOF_
<html>
<head>
<meta HTTP-EQUIV="REFRESH" content="0; url=http://openrouter.info">
</head>
</html>
_EOF_

Kilka słów wytłumaczenia. Zadaniem skryptu jest uzyskanie ze zmiennych środowiskowych przekazanych z serwera www adresu IP klienta który wywołał stronę (czyli kliknął przycisk "OK") i zezwolenie na transmisję z tego adresu IP. Warto zauważyć, że manipulujemy łańcuchem "prerouting_blokada", który uprości późniejsze zarządzanie wpisami.
Strona jest już kompletna został tylko najważniejszy element - przekierowanie całego ruchu na nasz serwer. Wykonujemy to odpowiednim poleceniem iptables. Całość wzbogacona jest wcześniejszym utworzeniem osobnego łańcucha, co pozwala na szybkie usunięcie wszystkich wpisów bez modyfikacji całego firewalla. Gotowy skrypt może wyglądać następująco (do umieszczenia w pliku /etc/firewall.user)
iptables -t nat -F prerouting_blokada 2>/dev/null || ( \
        iptables -t nat -N prerouting_blokada; \
        iptables -t nat -I PREROUTING -i br-lan -j prerouting_blokada; \
)
IP=$(uci get network.lan.ipaddr)
iptables -t nat -A prerouting_blokada ! -d $IP/32 -p tcp -j DNAT --to $IP:80


I to wszystko. Po restarcie routera, cały ruch zostaje przekierowany na naszą stronę powitalną. Po wyświetleniu zawartości strony użytkownik potwierdza komunikat, a to powoduje wpisane odpowiedniej reguły iptables, zezwolenie na ruch i natychmiastowe przekierowanie na stronę startową, openrouter.info w tym przypadku.

Skrypt jest bardzo prosty i umożliwia dalszą modyfikację. Można pokusić się o jego rozbudowę o jeden z wymienionych elementów:
- logowanie użytkowników. W otwartej sieci może mieć znaczenie logowanie IP, MAC adresu i daty przyłączenia użytkownika
- ograniczenie dostępu tylko do określonych protokołów, np http i https
- wprowadzenie kontroli pasma, czyli przydzielenie użytkownikowi określonego poziomu transferu np. na poziomie 1Mbps
- wprowadzenie możliwości "aktywacji" dostępu do internetu przez system haseł wpisywanych przez użytkowników. Mogą to być hasła jednorazowe, co wiąże się z kolejnym pomysłem jakim jest
- wprowadzenie czasowego obowiązywania dostępu do internetu. Do realizowania przy pomocy crona i iptables, można usuwać reguły po upływie określonego czasu. Można także uzależnić dostęp godzinny, 4 godzinny itd od odpowiednich typów kodów
- lepsza integracja przekierowania - dodanie obsługi nieistniejących linków, strony błędy, przekierowania nieistniejących domen itd.

Możliwości rozbudowy jest wiele, ale związane to jest z potrzebą określonego zastosowania.

Należy pamiętać, że w repozytorium pakietów znajdziemy wiele gotowych projektów realizujących funkcjonalność hotspota tzw "Captive Portals" - z tych bardziej znanych warto wymienić chociaż by chilispot, choova-chilli czy nodogsplash. Jednakże polecam czasami także samodzielną realizację projektów, zwłaszcza jeżeli ma to być przeznaczone do realizacji konkretnego zadania.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 29 lut 2012, 18:58 
Offline
Użytkownik

Rejestracja: 11 kwie 2010, 10:37
Posty: 50
Witam, napotkałem mały problem.

Po restarcie routera, na komputerze otwieram przeglądarke i nie otwiera sie żadna stron,

Nie udało się nawiązać połączenia
 
          Firefox nie może nawiązać połączenia z serwerem www.google.pl.


po zalogowaniu na router , przerestartowaniu procesu uhttpd wszystko zaczyna działać, stronka z przyciskiem OK a nastepnie przekierowanie.

Mała podpowiedź gdzie może być błąd ?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 29 lut 2012, 19:08 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
Nie włączyłeś uhttpd przy starcie?

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 10:39 
Offline
Użytkownik

Rejestracja: 11 kwie 2010, 10:37
Posty: 50
obsy pisze:
Nie włączyłeś uhttpd przy starcie?



ok faktycznie tu był bład.

Kolejny problem:

jak strona startowa to "czysty" adres typu http://www.onet.pl lub http://www.google.pl to wszystko jest OK, jednak jak adres startowy to np : "http://www.gazeta.pl/0,0.html"

pojawia się błąd :

"No such file or directory"


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 10:42 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
Problem konfiguracji. Zrób tak w uhttp żeby error_page kierował na index.html. Jeden z punktów dodatkowych.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 11:00 
Offline
Użytkownik

Rejestracja: 11 kwie 2010, 10:37
Posty: 50
option 'error_page' '/hotspot'
lub
option 'error_page' '/hotspot/index.html'

nie daje efektu


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 11:02 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
option 'error_page' '/index.html'

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 11:07 
Offline
Użytkownik

Rejestracja: 11 kwie 2010, 10:37
Posty: 50
super działa :) kolejne dwa pytanka :

1. jak chcę uruchomić pierwszą strone jako https to wywala błąd ze nie znaleziono witryny
2. gdzie jest parametr odpowiedzialny za to co jaki czas będzie w ten sposób blokowany internet klientowi ? np. zeby co godzinę lub dwie ?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 11:12 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
1. Zauważ że NIE zrobiłeś tego, żeby uhttpd słuchał też na https. Więc co się dziwisz.
2. "parametru" nie ma. Jeżeli analizowałeś skrypty (a nie zrobiłeś tego :)) to widzisz, że w allow.cgi jest dodawana reguła zezwalająca na połączenia z danego adresu ip. Więc jak potrzebujesz to zrób tak, żeby była ona aktywna tylko przez jakiś okres czasu - godzinę lub dwie.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 15:15 
Offline
Użytkownik

Rejestracja: 19 lip 2011, 09:36
Posty: 139
Widze z dyskusji, ze mialem podobne problemy.
Error page dziala.
Moim problemem w tej chwili jest, ze chcialbym, zeby po uruchomieniu skryptu allow.cgi nastepowalo przekierowanie nie do strony sztywnie podanej przeze mnie, tylko na pierwotnie wywolana przez uzytkownika. W tym celu sprobowalem usunac adres i wszystko zadzialalo do momentu, kiedy do oryginalnego adresu w przegladarce strona powitalna dodala /cgi-bin.allow.cgi. Przekierowanie nastepowalo wtedy na oryginalny adres w przegladarce z dodana koncowka /cgi-bin.allow.cgi.
Mam zatem dwa pytania:
1. czy jest jakis sposob, zeby wywolac skrypt cgi bez dodawania tego do linii w dresie url?
2. czy jest jakis sposob, zeby przechwycic oryginalnie wywolany url i potem umiescic go w sekcji value zamiast okreslac adres do przekierowania na sztywno.


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 15:19 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
Zobacz sobie zmienne środowiskowe będziesz wiedział jakimi danymi dysponujesz.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 15:49 
Offline
Użytkownik

Rejestracja: 19 lip 2011, 09:36
Posty: 139
Nie mam bladego pojecia o zmiennych srodowiskowych. Probowalem wczoraj googlowac te polacenia z pliku cgi, zeby zorientowac sie, z czym sie to je, ale dla mnie to czarna magia.
Natomiast mam takie przeczucie, ze powinna byc taka opcja, albo sposob na obejcie tego dookola.
Dlatego prosze forumowiczow o pomoc.

PS. Dla wyjasnienia dodam, ze obsy pomogl mi juz bardzo duzo na privie. :) Dziekuje


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 15:51 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
W allow.cgi zrób sobie

env > /tmp/zmienne.txt

Wywołaj stronę i zobaczysz później w pliku /tmp/zmienne.txt jakiego kalibru amunicją dysponujesz.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 22:23 
Offline
Użytkownik

Rejestracja: 19 lip 2011, 09:36
Posty: 139
Dzieki.
Po powrocie do domu zrobie to i przekonamy sie co drzemie pod maska :)

NO, to jest w pliku:

CONTENT_TYPE=application/x-www-form-urlencoded
GATEWAY_INTERFACE=CGI/1.1
REMOTE_HOST=192.168.1.103
REMOTE_ADDR=192.168.1.103
QUERY_STRING=
HTTP_USER_AGENT=Opera/9.80 (Windows NT 6.1; U; en) Presto/2.10.229 Version/11.61
DOCUMENT_ROOT=/hotspot
REMOTE_PORT=50435
HTTP_ACCEPT=text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
CONTENT_LENGTH=0
SCRIPT_FILENAME=/hotspot/cgi-bin/allow.cgi
HTTP_HOST=www.eg-blog.de
REQUEST_URI=/cgi-bin/allow.cgi
SERVER_SOFTWARE=uHTTPd
HTTP_CONNECTION=Keep-Alive
HTTP_COOKIE=__qca=P0-2075478177-1330279896500
PATH=/sbin:/usr/sbin:/bin:/usr/bin
HTTP_ACCEPT_LANGUAGE=en-GB,en;q=0.9
HTTP_REFERER=http://www.eg-blog.de/
SERVER_PROTOCOL=HTTP/1.1
HTTP_ACCEPT_ENCODING=gzip, deflate
REDIRECT_STATUS=200
REQUEST_METHOD=POST
SERVER_ADDR=192.168.1.1
PWD=/hotspot
SERVER_PORT=80
SCRIPT_NAME=/cgi-bin/allow.cgi
SERVER_NAME=192.168.1.1

Ktore zmienne beda pomocne?
Wywolanie bylo na otwartej wczesniej stronie projektu http://www.eg-blog.de.
Widze, ze do tej strony w pliku odnosza sie dwa wpisy
1. HTTP_HOST
2. HTTP_REFERER
Widze tez linie REQUEST_URI=/cgi-bin/allow.cgi. Czy to ona powoduje dodanie tego cgi itd do url?
Moze w cgi moglbym wstawic cos takiego: REQUEST_URI=HTTP_HOST?
albo w linii:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://openrouter.info"> zmienic na:
<meta HTTP-EQUIV="REFRESH" content="0; url=HTTP_HOST">
???


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 22:39 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
Raczej to drugie.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 22:53 
Offline
Użytkownik

Rejestracja: 19 lip 2011, 09:36
Posty: 139
<meta HTTP-EQUIV="REFRESH" content="0; url=HTTP_HOST">???


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 22:55 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
Tak, ale nie tak zapisane. Najpierw wydobądź ze zmiennych te http_host, później odpowiednio wstaw do tego co jest zwracane.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 23:09 
Offline
Użytkownik

Rejestracja: 19 lip 2011, 09:36
Posty: 139
Tu juz wymiekam. Nie mam bladego pojecia jak to wydobyc... :(


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 1 mar 2012, 23:13 
Offline
Użytkownik

Rejestracja: 11 kwie 2010, 18:20
Posty: 222
iptables -t nat -F prerouting_blokada 2>/dev/null || ( \
        iptables -t nat -N prerouting_blokada; \
        iptables -t nat -I PREROUTING -i br-lan -j prerouting_blokada; \
)
IP=$(uci get network.lan.ipaddr)
iptables -t nat -A prerouting_blokada ! -d $IP/32 -p tcp -j DNAT --to $IP:80


A jak powinien wyglądać ten skrypt pod tomato ?

_________________
Linksys WRT54GL z USB - OpenWrt Backfire
Netgear WNR350L - Tomato
Terminal HP - OpenWrt Backfire
www.tomatousb.org


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: [HOWTO] Hotspot - strona powitalna sieci
Post: 2 mar 2012, 09:10 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 00:28
Posty: 12922
Lokalizacja: Warszawa
Tak samo. Na prerouting jest operacja, nie są wykorzystywane łańcuchy firewalla openwrt.. Tyle że oczywiście uci nie ma i na nvram get musisz to sobie przerobić, br-lan zamienić na odpowiedni vlan.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 162 ]  Przejdź na stronę 1, 2, 3, 4, 5 ... 9  Następna

Strefa czasowa UTC+1godz. [letni]


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów

Szukaj:
Przejdź do:  
designed by digi-led.pl
...Copyright © 2010-2013, Ekipa openrouter.info