martedì 25 settembre 2018

Captive Portal su Raspberry Pi Zero W

Un esempio di Captive Portal (ovvero un Access Point WiFi che obbliga gli utenti a visualizzare determinate pagine, sia per loggarsi per l'accesso ad internet sia per altri accedere ad un web server interno)

La Raspberry Pi Zero W, non avendo due schede di rete di default come la 3b+, non puo' essere usata per fornire accesso ad internet come router


Per prima cosa si deve installare sulla SD una Raspbian Lite . Dato l'uso in HeadLess mode e' necessario configurare la scheda via SSH, non abilitata di default tramite la porta USB OTG, non abilitata di default

Una volta formattata la scheda SD si monta la partizione boot e
1) si inserisce un file vuoto denominato ssh (senza estensione)
2) si modifica il file config.txt aggiungendo una ultima riga con scritto dtoverlay=dwc2
3) si modifica il file cmdline.txt aggiungendo modules-load=dwc2,g_ether subito dopo rootwait

Fatto cio' si inserisce la SD nella Raspberry e si collega un cavo microUSB nella porta posta piu' centralmente collegando l'altro cavo al PC (l'alimentazione e' data dallo stesso cavo e non e' necessario di collegare la seconda USB)

A questo punto da PC (Linux o Mac) si puo' entrare in shell mediante SSH con il comando

ssh pi@raspberrypi.local

password : raspberry

si passa quindi a configurare la connessione WiFi per l'aggiornamento dei pacchetti con

sudo raspi-config 

opzione Netowork Options/Wifi dove si inseriscono i dati dell'Acces Point
si aggiorna il sistema e si installano i pacchetti

apt-get install hostapd dnsmasq apache2 php7.0

(questa configurazione e' stata ripresa da qui togliendo la parte malevola)

rc.local
-----------------------------------------------------------

service apache2 start

sleep 1
hostapd -B /etc/hostapd/hostapd.conf
sleep 2
ifconfig br0 up
ifconfig br0 10.1.1.1 netmask 255.255.255.0
sysctl net.ipv4.ip_forward=1
iptables --flush
iptables -t nat --flush
iptables -t nat -A PREROUTING -i br0 -p udp -m udp --dport 53 -j DNAT --to-destination 10.1.1.1:53
iptables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.1.1.1:80
iptables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.1.1.1:80
iptables -t nat -A POSTROUTING -j MASQUERADE
service dnsmasq start
exit 0


-----------------------------------------------------------

hostapd.conf
-----------------------------------------------------------
interface=wlan0
channel=6
hw_mode=g
ssid=Wi-Fi
bridge=br0
auth_algs=1
wmm_enabled=0
------------------------------------------------------------

dnsmasq.conf

------------------------------------------------------------
interface=br0
listen-address=10.1.1.1
no-hosts
dhcp-range=10.1.1.2,10.1.1.254,72h
dhcp-option=option:router,10.1.1.1
dhcp-authoritative

address=/apple.com/10.1.1.1
address=/appleiphonecell.com/10.1.1.1
address=/airport.us/10.1.1.1
address=/akamaiedge.net/10.1.1.1
address=/akamaitechnologies.com/10.1.1.1
address=/microsoft.com/10.1.1.1
address=/msftncsi.com/10.1.1.1
address=/msftconnecttest.com/10.1.1.1
address=/google.com/10.1.1.1
address=/gstatic.com/10.1.1.1
address=/googleapis.com/10.1.1.1
address=/android.com/10.1.1.1


override.conf
------------------------------------------------------------
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
 Allow from all
</Directory>
------------------------------------------------------------






Nessun commento:

Posta un commento