<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Itec</id>
	<title>raspibo - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Itec"/>
	<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php/Speciale:Contributi/Itec"/>
	<updated>2026-04-14T14:41:41Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4686</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4686"/>
		<updated>2015-11-05T21:53:53Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Idee e cose da provare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Il Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] è una persona che è spesso in viaggio, e fa largo uso del computer.&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio.&lt;br /&gt;
&lt;br /&gt;
Avere sempre con sè una rete wifi sicura e che i nostri dispositivi conoscono ci evita di dover riconfigurarli ogni volta.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, in modo da nascondere il traffico sulla rete &amp;quot;ospite&amp;quot; e per accedere alla propria lan senza dover installare in client vpn su ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il router ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
[[File:RoadWarrior Aukey.jpg|400px]][[File:RoadWarrior HooToo.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione). Se non avete idee suggerisco &amp;quot;RoadWarrior&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si potrebbe fare uno script per cambiare automaticamente il canale della scheda wireless integrata in modo che le due schede non si disturbino&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4685</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4685"/>
		<updated>2015-11-05T21:44:42Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Scopo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Il Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] è una persona che è spesso in viaggio, e fa largo uso del computer.&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio.&lt;br /&gt;
&lt;br /&gt;
Avere sempre con sè una rete wifi sicura e che i nostri dispositivi conoscono ci evita di dover riconfigurarli ogni volta.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, in modo da nascondere il traffico sulla rete &amp;quot;ospite&amp;quot; e per accedere alla propria lan senza dover installare in client vpn su ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il router ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
[[File:RoadWarrior Aukey.jpg|400px]][[File:RoadWarrior HooToo.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione). Se non avete idee suggerisco &amp;quot;RoadWarrior&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4684</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4684"/>
		<updated>2015-11-05T21:44:26Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Scopo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Il Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] è una persona che è spesso in viaggio, e fa largo uso del computer.&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio.&lt;br /&gt;
&lt;br /&gt;
Avere sempre con sè una rete wifi sicura e che i nostri dispositivi conoscono ci evita di dover riconfigurarli ogni volta.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, in modo da nascondere il traffico sulla rete &amp;quot;ospite&amp;quot; e per accedere alla propria lan senza dover installare in client vpn su ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il router ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
[[File:RoadWarrior Aukey.jpg|400px]][[File:RoadWarrior HooToo.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione). Se non avete idee suggerisco &amp;quot;RoadWarrior&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:RoadWarrior_HooToo.jpg&amp;diff=4683</id>
		<title>File:RoadWarrior HooToo.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:RoadWarrior_HooToo.jpg&amp;diff=4683"/>
		<updated>2015-11-05T21:43:25Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:RoadWarrior_Aukey.jpg&amp;diff=4682</id>
		<title>File:RoadWarrior Aukey.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:RoadWarrior_Aukey.jpg&amp;diff=4682"/>
		<updated>2015-11-05T21:40:34Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4681</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4681"/>
		<updated>2015-11-05T19:48:51Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Aggiornamento software e installazione pacchetti */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Il Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] è una persona che è spesso in viaggio, e fa largo uso del computer.&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio.&lt;br /&gt;
&lt;br /&gt;
Avere sempre con sè una rete wifi sicura e che i nostri dispositivi conoscono ci evita di dover riconfigurarli ogni volta.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, in modo da nascondere il traffico sulla rete &amp;quot;ospite&amp;quot; e per accedere alla propria lan senza dover installare in client vpn su ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il router ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione). Se non avete idee suggerisco &amp;quot;RoadWarrior&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4680</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4680"/>
		<updated>2015-11-05T19:47:02Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Scopo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Il Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] è una persona che è spesso in viaggio, e fa largo uso del computer.&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio.&lt;br /&gt;
&lt;br /&gt;
Avere sempre con sè una rete wifi sicura e che i nostri dispositivi conoscono ci evita di dover riconfigurarli ogni volta.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, in modo da nascondere il traffico sulla rete &amp;quot;ospite&amp;quot; e per accedere alla propria lan senza dover installare in client vpn su ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il router ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4679</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4679"/>
		<updated>2015-11-05T19:45:20Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Scopo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Il Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] è una persona che è spesso in viaggio, e fa largo uso del computer.&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio.&lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, in modo da nascondere il traffico sulla rete &amp;quot;ospite&amp;quot; e per accedere alla propria lan senza dover installare in client vpn su ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il Road Warrior ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4678</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4678"/>
		<updated>2015-11-05T19:37:36Z</updated>

		<summary type="html">&lt;p&gt;Itec: /* Installare openvpn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio dispositivi che rendono tutto questo possibile si chiamano Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il Road Warrior ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall inserendo queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4677</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4677"/>
		<updated>2015-11-05T19:35:03Z</updated>

		<summary type="html">&lt;p&gt;Itec: Il dhcp!!!!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio dispositivi che rendono tutto questo possibile si chiamano Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il Road Warrior ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Installare openvpn ===&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E queste su etc/config/dhcp&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config dhcp 'slan'&lt;br /&gt;
 	option start '100'&lt;br /&gt;
 	option leasetime '12h'&lt;br /&gt;
 	option limit '150'&lt;br /&gt;
 	option interface 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sh&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;br /&gt;
&lt;br /&gt;
[[Category:Progetti]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4656</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4656"/>
		<updated>2015-10-30T23:11:11Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scopo =&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio dispositivi che rendono tutto questo possibile si chiamano Road Warrior [http://en.wikipedia.org/wiki/Road_warrior_%28computing%29] &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
Tutto questo puo' essere realizzato con un access point router di dimensioni compatte, facile da aggiungere al bagaglio, tipicamente il Road Warrior ha piu' di una interfaccia di rete e magari una porta usb.&lt;br /&gt;
&lt;br /&gt;
Gli esperimenti descritti di seguito sono stati condotti su due modelli:&lt;br /&gt;
 * HooToo Trip Mate Nano [http://www.hootoo.com/hootoo-tripmate-nano-ht-tm02-wireless-portable-router.html] molto compatto con porta Ethernet, wifi, USB&lt;br /&gt;
 * AUKEY PB-W1, che è un router portatile con powerbank integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
Il modello del router non e' fondamentale, e' importante che il router sia compatibile con OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN).&lt;br /&gt;
&lt;br /&gt;
= Aggiornamento firmware sul router HooToo =&lt;br /&gt;
&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
D'ora in poi sara' possibile utilizzare i files con il firmware ufficiale openwrt.&lt;br /&gt;
&lt;br /&gt;
Riportiamo per comodita' il link dell'ultimo firmware per hootoo (al momento in cui viene editata la pagina): [https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configurazione WiFi client ===&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1.&lt;br /&gt;
&lt;br /&gt;
Cambiare indirizzo ip della lan e applicare le modifiche, io ho usato 192.168.250.1. Fatto questo bisogna ricollegarsi al router al nuovo indirizzo.&lt;br /&gt;
&lt;br /&gt;
Accedere ad internet andando su Network - Wifi.&lt;br /&gt;
&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna.&lt;br /&gt;
&lt;br /&gt;
Impostare la password di rete e salvare applicando le modifiche.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento software e installazione pacchetti ===&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (ad esempio con il programma Putty).&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installare openvpn&lt;br /&gt;
&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Per farlo vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote [indirizzo] 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4647</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4647"/>
		<updated>2015-10-27T22:31:59Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Scopo ===&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio http://en.wikipedia.org/wiki/Road_warrior_%28computing%29 &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento firmware sul router ===&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ultimo firmware per hootoo:&lt;br /&gt;
&lt;br /&gt;
https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/openwrt-15.05-ramips-rt305x-ht-tm02-squashfs-sysupgrade.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Info (by itec, da sistemare) ===&lt;br /&gt;
&lt;br /&gt;
Il &amp;quot;RoadWarrior&amp;quot; è un router portatile che permette di condividere una connessione ad internet wireless, in modo sicuro.&lt;br /&gt;
&lt;br /&gt;
Una volta collegato ad un hotspot fornisce facilmente connettività wireless a tutti i dispositivi già associati.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare le prove ho usato un router AUKEY PB-W1, che è un router portatile con powerbanck integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
In alternativa si può usare un Hootoo Tripmate Nano, o qualsiasi altro router a patto che riesca a supportare OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Howto un po' incasinato ===&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1, impostare la password e accedere ad internet andando su Network - Wifi.&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (per gli utenti windows c'è Putty che funziona molto bene)&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
Configurare la lan con un ip statico (es 192.168.250.1) e dhcp server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installare openvpn&lt;br /&gt;
&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote itec78.no-ip.org 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4646</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4646"/>
		<updated>2015-10-27T22:27:33Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Scopo ===&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio http://en.wikipedia.org/wiki/Road_warrior_%28computing%29 &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento firmware sul router ===&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Info (by itec, da sistemare) ===&lt;br /&gt;
&lt;br /&gt;
Il &amp;quot;RoadWarrior&amp;quot; è un router portatile che permette di condividere una connessione ad internet wireless, in modo sicuro.&lt;br /&gt;
&lt;br /&gt;
Una volta collegato ad un hotspot fornisce facilmente connettività wireless a tutti i dispositivi già associati.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare le prove ho usato un router AUKEY PB-W1, che è un router portatile con powerbanck integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
In alternativa si può usare un Hootoo Tripmate Nano, o qualsiasi altro router a patto che riesca a supportare OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Howto un po' incasinato ===&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1, impostare la password e accedere ad internet andando su Network - Wifi.&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (per gli utenti windows c'è Putty che funziona molto bene)&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
Configurare la lan con un ip statico (es 192.168.250.1) e dhcp server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installare openvpn&lt;br /&gt;
&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote itec78.no-ip.org 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4645</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4645"/>
		<updated>2015-10-27T22:26:04Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Scopo ===&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio http://en.wikipedia.org/wiki/Road_warrior_%28computing%29 &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento firmware sul router ===&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Info (by itec, da sistemare) ===&lt;br /&gt;
&lt;br /&gt;
Il &amp;quot;RoadWarrior&amp;quot; è un router portatile che permette di condividere una connessione ad internet wireless, in modo sicuro.&lt;br /&gt;
&lt;br /&gt;
Una volta collegato ad un hotspot fornisce facilmente connettività wireless a tutti i dispositivi già associati.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare le prove ho usato un router AUKEY PB-W1, che è un router portatile con powerbanck integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
In alternativa si può usare un Hootoo Tripmate Nano, o qualsiasi altro router a patto che riesca a supportare OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Howto un po' incasinato: ===&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1, impostare la password e accedere ad internet andando su Network - Wifi.&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (per gli utenti windows c'è Putty che funziona molto bene)&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
Configurare la lan con un ip statico (es 192.168.250.1) e dhcp server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installare openvpn&lt;br /&gt;
&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote itec78.no-ip.org 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare in modo che il router si colleghi ad una lista di wifi conosciute ho usato queste istruzioni&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=43352&lt;br /&gt;
&lt;br /&gt;
Ho modificato il file wifiMgr.sh cambiando i nomi delle interfacce e aggiungendo alcune funzioni come segue:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 . /etc/wifiMgr/config&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 randMacAddr()&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	 macaddr=$(dd if=/dev/urandom bs=1024 count=1 2&amp;gt;/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/00:\2:\3:\4:\5:01/')&lt;br /&gt;
 	uci set wireless.@wifi-iface[2].macaddr=&amp;quot;$macaddr&amp;quot;&lt;br /&gt;
 	uci commit wireless&lt;br /&gt;
 	/etc/init.d/network restart&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetStatus()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Checking network...&lt;br /&gt;
 	net=$(ping 8.8.8.8 -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
 	if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 		logger WifiMgr: Network OK&lt;br /&gt;
                 #got ping response!&lt;br /&gt;
                 return&lt;br /&gt;
 	else&lt;br /&gt;
 		logger WifiMgr: Network failed. Starting network change...&lt;br /&gt;
 		NetChange&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 NetChange()&lt;br /&gt;
 {&lt;br /&gt;
 	logger WifiMgr: Performing network scan...&lt;br /&gt;
 	&lt;br /&gt;
 		source /etc/wifiMgr/config&lt;br /&gt;
     &lt;br /&gt;
 		scanres=&lt;br /&gt;
         ifconfig wlan1 down&lt;br /&gt;
         iw phy phy0 interface add scan0 type station&lt;br /&gt;
         ifconfig scan0 up&lt;br /&gt;
 &lt;br /&gt;
         while [ &amp;quot;$scanres&amp;quot; = &amp;quot;&amp;quot; ]; do&lt;br /&gt;
                 #Sometimes it shows nothing, so better to ensure we did a correct scan&lt;br /&gt;
                 scanres=$(iw scan0 scan|grep SSID)&lt;br /&gt;
         done&lt;br /&gt;
 &lt;br /&gt;
         iw dev scan0 del&lt;br /&gt;
         ifconfig wlan1 up&lt;br /&gt;
         killall -HUP hostapd&lt;br /&gt;
 	logger WifiMgr: WifiMgr: Searching available networks...&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 		ssid=net&amp;quot;$1&amp;quot;_ssid&lt;br /&gt;
 		eval ssid=\$$ssid&lt;br /&gt;
 		echo Trying to connect to network &amp;quot;$1&amp;quot;&amp;quot;:    $ssid&amp;quot;&lt;br /&gt;
 		n=$(expr &amp;quot;$1&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
 	else&lt;br /&gt;
         	n=0&lt;br /&gt;
         fi&lt;br /&gt;
         &lt;br /&gt;
         while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
                 n=$(expr &amp;quot;$n&amp;quot; + &amp;quot;1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
                 if [ &amp;quot;$n&amp;quot; = &amp;quot;99&amp;quot; ]; then&lt;br /&gt;
                                 #too much counts. Crazy wireless count, breaking loop!&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
 &lt;br /&gt;
                 ssid=net&amp;quot;$n&amp;quot;_ssid&lt;br /&gt;
                 encrypt=net&amp;quot;$n&amp;quot;_encrypt&lt;br /&gt;
                 key=net&amp;quot;$n&amp;quot;_key&lt;br /&gt;
 &lt;br /&gt;
                 eval ssid=\$$ssid&lt;br /&gt;
                 eval encrypt=\$$encrypt&lt;br /&gt;
                 eval key=\$$key&lt;br /&gt;
                 &lt;br /&gt;
                 if [ &amp;quot;$ssid&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
                                 #ssid not existing or empty. Assume it's the end of the wlist file&lt;br /&gt;
                                 break&lt;br /&gt;
                 fi&lt;br /&gt;
                 echo SSID: $ssid&lt;br /&gt;
                 #echo KEY: $key&lt;br /&gt;
                 #echo SEGURIDAD: $encrypt&lt;br /&gt;
                 &lt;br /&gt;
 &lt;br /&gt;
                 active=$(echo $scanres | grep &amp;quot; $ssid &amp;quot;&amp;gt;&amp;amp;1 )&lt;br /&gt;
                 if [ &amp;quot;$active&amp;quot; ]; then&lt;br /&gt;
                 	if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                 		echo Network found. Connecting...&lt;br /&gt;
                 	fi&lt;br /&gt;
 			logger WifiMgr: &amp;quot;$ssid&amp;quot; network found. Applying settings..&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].ssid=&amp;quot;$ssid&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].encryption=&amp;quot;$encrypt&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].key=&amp;quot;$key&amp;quot;&lt;br /&gt;
                         uci set wireless.@wifi-iface[2].bssid=&amp;quot;&amp;quot;&lt;br /&gt;
                         uci commit wireless&lt;br /&gt;
                         /etc/init.d/network restart&lt;br /&gt;
                         &lt;br /&gt;
                         #wait some seconds for everything to connect and configure&lt;br /&gt;
                         sleep $NewConnCheckTimer&lt;br /&gt;
 			logger WifiMgr: Checking connectivity...&lt;br /&gt;
 &lt;br /&gt;
                         #check for internet connection, 5 ping sends&lt;br /&gt;
                         net=$(ping google.es -c5 |grep &amp;quot;time=&amp;quot;)&lt;br /&gt;
                         if [ &amp;quot;$net&amp;quot; ]; then&lt;br /&gt;
 				#got ping response!&lt;br /&gt;
 				logger WifiMgr: Internet working! Searching ended&lt;br /&gt;
 				if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
 					echo Sucess!&lt;br /&gt;
 				fi&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
                         if [ &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
                         	echo Connection failed!&lt;br /&gt;
                         	break&lt;br /&gt;
                         fi&lt;br /&gt;
 			logger WifiMgr: Failed! Searching next available network...&lt;br /&gt;
                 fi&lt;br /&gt;
         done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;No arguments supplied&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--force&amp;quot; ]; then&lt;br /&gt;
 	NetChange $2&lt;br /&gt;
 &lt;br /&gt;
 elif [ &amp;quot;$1&amp;quot; = &amp;quot;--daemon&amp;quot; ]; then&lt;br /&gt;
 	&lt;br /&gt;
 	if [ &amp;quot;$randMac&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
 		randMacAddr	&lt;br /&gt;
 	fi&lt;br /&gt;
 	NetChange&lt;br /&gt;
 	&lt;br /&gt;
 	while [ &amp;quot;1&amp;quot; ]; do&lt;br /&gt;
 		sleep $ConnCheckTimer&lt;br /&gt;
         	NetStatus&lt;br /&gt;
 	done&lt;br /&gt;
 &lt;br /&gt;
 else&lt;br /&gt;
 	echo &amp;quot;Wrong arguments&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
L'avvio con /etc/init.d ha qualche problema, e a volte scollega tutte le wifi ricollegandosi, ma tutto sommato funziona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Non ne so molto di reti routing e firewall, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire e migliorare il progetto è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan che non è sicura, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di solito i router hanno 1-2 led. Farebbe comodo sapere dai led se la wan e la vpn sono collegate (lampeggio o accensione continua)&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4644</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4644"/>
		<updated>2015-10-27T22:04:43Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Scopo ===&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio http://en.wikipedia.org/wiki/Road_warrior_%28computing%29 &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento firmware sul router ===&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Info (by itec, da sistemare) ===&lt;br /&gt;
&lt;br /&gt;
Il &amp;quot;RoadWarrior&amp;quot; è un router portatile che permette di condividere una connessione ad internet wireless, in modo sicuro.&lt;br /&gt;
&lt;br /&gt;
Una volta collegato ad un hotspot fornisce facilmente connettività wireless a tutti i dispositivi già associati.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare le prove ho usato un router AUKEY PB-W1, che è un router portatile con powerbanck integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
In alternativa si può usare un Hootoo Tripmate Nano, o qualsiasi altro router a patto che riesca a supportare OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Howto un po' incasinato: ===&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1, impostare la password e accedere ad internet andando su Network - Wifi.&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (per gli utenti windows c'è Putty che funziona molto bene)&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
Configurare la lan con un ip statico (es 192.168.250.1) e dhcp server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installare openvpn&lt;br /&gt;
&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''slan''', con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia '''swan''', unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
&lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&lt;br /&gt;
 client&lt;br /&gt;
 dev tun&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 remote itec78.no-ip.org 443&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 #redirect-gateway def1&lt;br /&gt;
 route-nopull&lt;br /&gt;
 &lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 persist-tun&lt;br /&gt;
 persist-key&lt;br /&gt;
 &lt;br /&gt;
 ca ca.crt&lt;br /&gt;
 cert roadwarrior.crt&lt;br /&gt;
 key roadwarrior.key&lt;br /&gt;
 remote-cert-tls server&lt;br /&gt;
 &lt;br /&gt;
 verb 1&lt;br /&gt;
 &lt;br /&gt;
 script-security 3&lt;br /&gt;
 route-delay 5&lt;br /&gt;
 route-up &amp;quot;/etc/openvpn/route-up.sh&amp;quot;&lt;br /&gt;
 keepalive 10 60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' importante la riga '''route-nopull''' perchè non deve ereditare la tabella di routing dal server&lt;br /&gt;
&lt;br /&gt;
Nella stessa cartella aggiungere anche il file '''route-up.sh''', dargli le autorizzazioni e inserire all'interno il seguente script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # Checks to see if there is an IP routing table named 'vpn', create if missing&lt;br /&gt;
 if [ $(cat /etc/iproute2/rt_tables | grep vpn | wc -l) -eq 0 ]; then&lt;br /&gt;
         echo &amp;quot;100     vpn&amp;quot; &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 ip route show&lt;br /&gt;
 echo &amp;quot;------------------------------------------------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Remove any previous routes in the 'vpn' routing table&lt;br /&gt;
 ip rule | sed -n 's/.*\(from[ \t]*[0-9\.]*\).*vpn/\1/p' | while read RULE&lt;br /&gt;
 do&lt;br /&gt;
 	echo &amp;quot;remove old rule:  /bin/ip rule del ${RULE}&amp;quot;&lt;br /&gt;
 	/bin/ip rule del ${RULE}&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 #echo ifconfig_remote: ${ifconfig_remote} dev: ${dev}  &amp;gt; /tmp/antani&lt;br /&gt;
 &lt;br /&gt;
 # Add routes to the vpn routing table&lt;br /&gt;
 echo ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 ip rule add from 192.168.251.0/24 lookup vpn prio 1000&lt;br /&gt;
 &lt;br /&gt;
 # Add the route to direct all traffic using the the vpn routing table to the tunX interface&lt;br /&gt;
 echo ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 ip route add default via ${ifconfig_remote} dev ${dev} table vpn&lt;br /&gt;
 &lt;br /&gt;
 #add a route for the lan itself&lt;br /&gt;
 echo ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 ip route add 192.168.251.0/24 dev br-slan table vpn&lt;br /&gt;
 &lt;br /&gt;
 ip route flush cache&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server, una volta connessa crea una tabella di routing specifica per la slan (source routing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare 2 wlan sulla wifi integrata (radio0) bridgiate con lan e slan. Le ho chiamate rispettivamente '''unsecure''' e '''secure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teoricamente se tutto è configurato bene quando si è collegati alla lan (o la wifi unsecure) è possibile navigare in internet in maniera non sicura.&lt;br /&gt;
&lt;br /&gt;
Aprendo il sito http://whatismyipaddress.com/ o simili la connessione proviene dal provider dell'hotspot&lt;br /&gt;
&lt;br /&gt;
Quando si è collegati alla slan (quindi la wifi secure) è possibile collegarsi alla lan che ospita la vpn (la lan di casa mia), e l'indirizzo ip che appare è quello della lan remota.&lt;br /&gt;
&lt;br /&gt;
=== Idee e cose da provare ===&lt;br /&gt;
&lt;br /&gt;
Premetto che questo non è il mio mestiere, arrivare a questo risultato è stato molto faticoso e frutto di notte insonni e continui insuccessi.&lt;br /&gt;
&lt;br /&gt;
Lo so, è fatto male e si poteva fare meglio ma non so come.&lt;br /&gt;
&lt;br /&gt;
Se qualcuno vuole contribuire è benvenuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un problema è che le query DNS escono sempre dalla wan, bisognerebbe farle girare attraverso la vpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn), da testare&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 #secure&lt;br /&gt;
 uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
 wifi&lt;br /&gt;
 #unsecure&lt;br /&gt;
 uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
 wifi&lt;br /&gt;
&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sarebbe bello utilizzare la porta ethernet come wan per collegarsi via cavo. Impostando un indirizzo ip statico di management in caso di emergenza&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4643</id>
		<title>RoadWarrior</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RoadWarrior&amp;diff=4643"/>
		<updated>2015-10-27T21:34:26Z</updated>

		<summary type="html">&lt;p&gt;Itec: Comincio a scrivere&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Scopo ===&lt;br /&gt;
&lt;br /&gt;
Questo progetto nasce dall'esigenza di portarsi sempre con se la propria rete anche quando si è in viaggio http://en.wikipedia.org/wiki/Road_warrior_%28computing%29 &lt;br /&gt;
&lt;br /&gt;
Avere sempre con se una rete wifi sicura e che i nostri dispositivi conoscono ci evita ogni volta di riconfigurarli.&lt;br /&gt;
&lt;br /&gt;
Il sistema inoltre può essere reso modulare aggiungendo moduli che si connettono ad esempio in wifi, 3G o quello che preferiamo.&lt;br /&gt;
&lt;br /&gt;
=== Aggiornamento firmware sul router ===&lt;br /&gt;
In questo caso utilizziamo un piccolo access point portatile su cui installiamo il firmware openwrt, il modello non è importante, quello che conta è che il dispositivo sia compatibile con questo firmware.&lt;br /&gt;
&lt;br /&gt;
Di seguito la procedura per installare openwrt su HooToo, un access point a basso costo, con wifi interno, presa per la rete cablata, alimentato con usb, switch hardware.&lt;br /&gt;
&lt;br /&gt;
L'installazione del firmware è riportata sul wiki di openwrt: http://wiki.openwrt.org/toh/hootoo/tripmate-nano.&lt;br /&gt;
&lt;br /&gt;
Il dispositivo ha bisogno di una memoria usb esterna, ad esempio una chiavetta su cui appoggiare il file con il nuovo firmware.&lt;br /&gt;
&lt;br /&gt;
Per caricare openwrt, spostare lo switch sul router nella posizione &amp;quot;mondo&amp;quot;, inserire una chiavetta di memoria usb nello slot.&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router tramite wifi e sull'interfaccia web caricare il firmware openwrt.&lt;br /&gt;
&lt;br /&gt;
'''Attendere 5 minuti di orologio''' scollegare l'alimentazione e ricollegarla. &lt;br /&gt;
&lt;br /&gt;
A questo punto ci si può collegare al router con il cavo ethernet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Info (by itec, da sistemare)&lt;br /&gt;
&lt;br /&gt;
Il &amp;quot;RoadWarrior&amp;quot; è un router portatile che permette di condividere una connessione ad internet wireless, in modo sicuro.&lt;br /&gt;
&lt;br /&gt;
Una volta collegato ad un hotspot fornisce facilmente connettività wireless a tutti i dispositivi già associati.&lt;br /&gt;
&lt;br /&gt;
In presenza di captive portal basta collegarsi da un solo dispositivo per dare connettività a tutti gli altri.&lt;br /&gt;
&lt;br /&gt;
E' presente anche una wireless sicura che dirotta tutto il traffico attraverso una VPN, per avere un'uscita verso internet criptata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per fare le prove ho usato un router AUKEY PB-W1, che è un router portatile con powerbanck integrato, wifi, ethernet e usb.&lt;br /&gt;
&lt;br /&gt;
In alternativa si può usare un Hootoo Tripmate Nano, o qualsiasi altro router a patto che riesca a supportare OpenWRT e che abbia almeno 8MB di flash (necessaria per installare OpenVPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Howto un po' incasinato:&lt;br /&gt;
&lt;br /&gt;
- Inserire la parte di installazione di openwrt - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router all'indirizzo 192.168.1.1, impostare la password e accedere ad internet andando su Network - Wifi.&lt;br /&gt;
Cercare una wifi conosciuta facendo scan sulla scheda di rete interna&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collegarsi al router in ssh (per gli utenti windows c'è Putty che funziona molto bene)&lt;br /&gt;
&lt;br /&gt;
Installare i pacchetti dando i seguenti comandi:&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
 opkg install luci-ssl&lt;br /&gt;
&lt;br /&gt;
Voglio usare sue schede wifi, quella integrata per esporre le mie reti, una esterna per collegarsi all'hotspot che fornisce connettività.&lt;br /&gt;
&lt;br /&gt;
Per il supporto periferiche usb ho dovuto installare i seguenti pacchetti:&lt;br /&gt;
 opkg install kmod-usb-core kmod-usb-ohci kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Per fargli riconoscere la mia scheda wifi &amp;quot;blueway&amp;quot;&lt;br /&gt;
 opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riavviare per permettere al router di individuare la scheda.&lt;br /&gt;
Rientrando su Luci, andare su network - wifi e controllare se è apparsa la seconda interfaccia radio&lt;br /&gt;
&lt;br /&gt;
Cancellare le reti, utilizzare la seconda scheda di rete per collegarsi ad internet&lt;br /&gt;
&lt;br /&gt;
Configurare la lan con un ip statico (es 192.168.250.1) e dhcp server&lt;br /&gt;
&lt;br /&gt;
Creare sull'interfaccia wifi 0 una rete master, e associarla alla lan in bridge.&lt;br /&gt;
&lt;br /&gt;
Per comodità la chiameremo &amp;quot;Unsecure&amp;quot; in quanto dovrebbe girare il traffico direttamente sulla wan (l'hotspot) senza crittografia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andare su System - system e configurare il nome del dispositivo (che apparirà anche nel nome file quando si salva la configurazione)&lt;br /&gt;
&lt;br /&gt;
Volendo cambiare i server ntp (ntp1.inrim.it,ntp2.inrim.it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installare openvpn&lt;br /&gt;
&lt;br /&gt;
 opkg install openvpn-openssl&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia slan, con ip statico diverso dalla lan (es 192.168.251.1), interfaccia fisica slan, e con dhcp&lt;br /&gt;
&lt;br /&gt;
Creare un'interfaccia swan, unmanaged, con interfaccia fisica tun0&lt;br /&gt;
&lt;br /&gt;
Vanno aggiunte queste righe su etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config interface 'swan'&lt;br /&gt;
 	option ifname 'tun0'&lt;br /&gt;
 	option proto 'none'&lt;br /&gt;
 &lt;br /&gt;
 config interface 'slan'&lt;br /&gt;
 	option proto 'static'&lt;br /&gt;
 	option ipaddr '192.168.251.1'&lt;br /&gt;
 	option netmask '255.255.255.0'&lt;br /&gt;
 	option _orig_ifname 'lan0'&lt;br /&gt;
 	option _orig_bridge 'false'&lt;br /&gt;
 	option type 'bridge'&lt;br /&gt;
 	option ifname 'slan'&lt;br /&gt;
&lt;br /&gt;
Controllare che il dhcp sia attivo sull'interfaccia slan&lt;br /&gt;
&lt;br /&gt;
Applicare le regole firewall [...]&lt;br /&gt;
&lt;br /&gt;
Inserire queste righe su /etc/config/network&lt;br /&gt;
&lt;br /&gt;
 config zone&lt;br /&gt;
 	option input 'ACCEPT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option name 'slan'&lt;br /&gt;
 	option network 'slan'&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 &lt;br /&gt;
 config zone&lt;br /&gt;
 	option forward 'REJECT'&lt;br /&gt;
 	option output 'ACCEPT'&lt;br /&gt;
 	option input 'REJECT'&lt;br /&gt;
 	option masq '1'&lt;br /&gt;
 	option mtu_fix '1'&lt;br /&gt;
 	option network 'swan'&lt;br /&gt;
 	option name 'swan'&lt;br /&gt;
 &lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 	option proto 'udp'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DHCP'&lt;br /&gt;
 	option dest_port '67-68'&lt;br /&gt;
&lt;br /&gt;
 config rule&lt;br /&gt;
 	option target 'ACCEPT'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
 	option name 'Secure DNS'&lt;br /&gt;
 	option dest_port '53'&lt;br /&gt;
 	option family 'ipv4'&lt;br /&gt;
 &lt;br /&gt;
 config forwarding&lt;br /&gt;
 	option dest 'swan'&lt;br /&gt;
 	option src 'slan'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creare dentro a /etc/openvpn il file client.conf e aggiungere i certificati nella stessa cartella.&lt;br /&gt;
&lt;br /&gt;
Il mio è così:&lt;br /&gt;
&lt;br /&gt;
client&lt;br /&gt;
dev tun&lt;br /&gt;
proto tcp&lt;br /&gt;
&lt;br /&gt;
remote [indirizzo del mio server] 443&lt;br /&gt;
resolv-retry infinite&lt;br /&gt;
redirect-gateway def1&lt;br /&gt;
nobind&lt;br /&gt;
&lt;br /&gt;
persist-tun&lt;br /&gt;
persist-key&lt;br /&gt;
&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert roadwarrior.crt&lt;br /&gt;
key roadwarrior.key&lt;br /&gt;
remote-cert-tls server&lt;br /&gt;
&lt;br /&gt;
verb 3&lt;br /&gt;
&lt;br /&gt;
In questo modo openvpn parte all'avvio e cerca di connettersi al server&lt;br /&gt;
&lt;br /&gt;
Ho creato 2 wlan sulla wifi integrata (radio1) bridgiate con lan e slan. Le ho chiamate secure e unsecure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problemi noti:&lt;br /&gt;
&lt;br /&gt;
Bisogna gestire il routing differente per le 2 lan.&lt;br /&gt;
&amp;quot;redirect-gateway def1&amp;quot; permette di aggiungere il routing per cui la slan funziona ma la lan non va + inoltre se si sconnette la vpn non si riconnette +, va fatto ripartire il servizio&lt;br /&gt;
Ho provato col policy routing, anche scriptando alla connessione della vpn: https://github.com/soehest/openvpn ma non funziona.&lt;br /&gt;
&lt;br /&gt;
E' possibile accendere e spegnere il wifi con questo script (che avevo fatto partire con il connect della vpn, ma va in conflitto col routing&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
#secure&lt;br /&gt;
uci set wireless.@wifi-iface[1].disabled='0'&lt;br /&gt;
wifi&lt;br /&gt;
#unsecure&lt;br /&gt;
uci set wireless.@wifi-iface[0].disabled='1'&lt;br /&gt;
wifi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=DHCP_per_NinuxBO&amp;diff=4642</id>
		<title>DHCP per NinuxBO</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=DHCP_per_NinuxBO&amp;diff=4642"/>
		<updated>2015-10-27T20:52:57Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pagina spostata sulla wiki di NinuxBO&lt;br /&gt;
https://wiki.bologna.ninux.org/mediawiki/index.php/DHCP_per_NinuxBO&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=DHCP_per_NinuxBO&amp;diff=4590</id>
		<title>DHCP per NinuxBO</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=DHCP_per_NinuxBO&amp;diff=4590"/>
		<updated>2015-10-13T21:25:15Z</updated>

		<summary type="html">&lt;p&gt;Itec: Creata pagina con 'Invece di creare due reti 10.50.0.0/16 e 10.51.0.0/16 è possibile creare un'unica rete /15 ma fare in modo che gli ip vengano assegnati solo sulla 10.51.x.x, in modo da tener...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Invece di creare due reti 10.50.0.0/16 e 10.51.0.0/16 è possibile creare un'unica rete /15 ma fare in modo che gli ip vengano assegnati solo sulla 10.51.x.x, in modo da tenere la 10.50.x.x per gli indirizzi statici.&lt;br /&gt;
Ho fatto questa prova impostando l'indirizzo del router a 10.51.0.1, netmask 255.254.0.0&lt;br /&gt;
&lt;br /&gt;
[[File:DHCP-IP.png]]&lt;br /&gt;
&lt;br /&gt;
Impostare il dhcp con start a 65537, limit 65535.&lt;br /&gt;
&lt;br /&gt;
[[File:DHCP-Settings.png]]&lt;br /&gt;
&lt;br /&gt;
Se ho fatto i conti bene, il dhcp comincia ad assegnare da 10.51.0.2 in poi.&lt;br /&gt;
&lt;br /&gt;
Per fare la prova, ho fatto in modo che openwrt assegni gli indirizzi ip in maniera sequenziale.&lt;br /&gt;
&lt;br /&gt;
Il parametro è --dhcp-sequential-ip e va inserito dentro a /etc/init.d/dnsmasq &lt;br /&gt;
&lt;br /&gt;
 procd_set_param command $PROG -C $CONFIGFILE -k -x /var/run/dnsmasq/dnsmasq.pid --dhcp-sequential-ip&lt;br /&gt;
&lt;br /&gt;
Va fatto così perchè UCI non supporta il parametro option dhcp_sequential_ip '1'&lt;br /&gt;
&lt;br /&gt;
https://forum.openwrt.org/viewtopic.php?id=50684&lt;br /&gt;
&lt;br /&gt;
Il risultato è questo:&lt;br /&gt;
&lt;br /&gt;
[[File:DHCP-Lease.png]]&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:DHCP-Lease.png&amp;diff=4589</id>
		<title>File:DHCP-Lease.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:DHCP-Lease.png&amp;diff=4589"/>
		<updated>2015-10-13T21:03:59Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:DHCP-Settings.png&amp;diff=4588</id>
		<title>File:DHCP-Settings.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:DHCP-Settings.png&amp;diff=4588"/>
		<updated>2015-10-13T21:03:33Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:DHCP-IP.png&amp;diff=4587</id>
		<title>File:DHCP-IP.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:DHCP-IP.png&amp;diff=4587"/>
		<updated>2015-10-13T21:03:00Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=DCF77&amp;diff=2208</id>
		<title>DCF77</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=DCF77&amp;diff=2208"/>
		<updated>2013-12-25T23:43:53Z</updated>

		<summary type="html">&lt;p&gt;Itec: Creata pagina con '==Il DCF77== Il DCF77 è un sistema che trasmette l'ora esatta via radio (tanto per intenderci quello che serve per sincronizzare gli orologi radiocontrollati tipo Oregon Scie...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Il DCF77==&lt;br /&gt;
Il DCF77 è un sistema che trasmette l'ora esatta via radio (tanto per intenderci quello che serve per sincronizzare gli orologi radiocontrollati tipo Oregon Scientific)&lt;br /&gt;
http://it.wikipedia.org/wiki/DCF77&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ricevitore con antenna collegata via GPIO==&lt;br /&gt;
&lt;br /&gt;
Ho trovato due software:&lt;br /&gt;
&lt;br /&gt;
https://github.com/rene0/dcf77pi&lt;br /&gt;
&lt;br /&gt;
https://github.com/vogelchr/radioclkd2&lt;br /&gt;
&lt;br /&gt;
Ho provato il primo con un'antenna comprata molti anni fa e non funziona, probabilmente bisogna costruire un'intefaccia tipo questa:&lt;br /&gt;
&lt;br /&gt;
http://www.buzzard.me.uk/jonathan/radioclock.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ricevitore con rtl-sdr==&lt;br /&gt;
Ho provato con rtl_fm ma non sono riuscito a ricevere nulla, probabilmente l'antenna non va bene o la frequenza non è calibrata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trasmettitore==&lt;br /&gt;
Volevo provare a generare il segnale del DCF77 utilizzando questa libreria, ma non riesco a compilarla, neanche parzialmente:&lt;br /&gt;
&lt;br /&gt;
http://manpages.ubuntu.com/manpages/gutsy/man1/dcf77gen.1.html&lt;br /&gt;
&lt;br /&gt;
https://launchpad.net/ubuntu/+source/hf/0.8-5ubuntu0.1&lt;br /&gt;
&lt;br /&gt;
Non ho trovato altro, a parte codice per Arduino e PIC&lt;br /&gt;
&lt;br /&gt;
Una volta generato il suono volevo provare a metterlo in pipe con pifm.&lt;br /&gt;
&lt;br /&gt;
Eventualmente da studiare un filtro per l'antenna, e un programma compatto senza dover generare audio.&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Radio_433&amp;diff=2207</id>
		<title>Radio 433</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Radio_433&amp;diff=2207"/>
		<updated>2013-12-25T23:24:04Z</updated>

		<summary type="html">&lt;p&gt;Itec: Creata pagina con 'Mi piacerebbe interfacciare un ricevitore a 433,92 MHz con raspberry per poter ricevere segnali da:  Apricancelli (eventualmente anche rolling code)  Termometri wireless (tipo...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mi piacerebbe interfacciare un ricevitore a 433,92 MHz con raspberry per poter ricevere segnali da:&lt;br /&gt;
&lt;br /&gt;
Apricancelli (eventualmente anche rolling code)&lt;br /&gt;
&lt;br /&gt;
Termometri wireless (tipo Oregon scientific)&lt;br /&gt;
&lt;br /&gt;
Ed eventualmente trasmettere anche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una base di partenza potrebbe essere questa:&lt;br /&gt;
&lt;br /&gt;
http://www.ebay.it/itm/2-moduli-RF-433-Mhz-trasmettitore-ricevitore-arduino-pic-shield-/261233706163?pt=Componenti_elettronici_attivi&amp;amp;hash=item3cd2be04b3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Software:&lt;br /&gt;
&lt;br /&gt;
http://wiki.pilight.org/doku.php&lt;br /&gt;
&lt;br /&gt;
http://ninjablocks.com/blogs/how-to/7506204-adding-433-to-your-raspberry-pi&lt;br /&gt;
&lt;br /&gt;
http://jeelabs.net/projects/cafe/wiki/Decoding_the_Oregon_Scientific_V2_protocol&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RTL-SDR&amp;diff=1946</id>
		<title>RTL-SDR</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RTL-SDR&amp;diff=1946"/>
		<updated>2013-11-16T18:28:29Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Installazione==&lt;br /&gt;
(da: http://zr6aic.blogspot.dk/2013/02/setting-up-my-raspberry-pi-as-sdr-server.html)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First update you Raspberry Pi wheezy Linux to the latest version.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now install the required utils to compile the RTL-2832U USB dongle driver&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install git cmake libusb-1.0-0-dev build-essential&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now install the RTL-2832U USB dongle driver src and compile&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.osmocom.org/rtl-sdr.git&lt;br /&gt;
 cd rtl-sdr/&lt;br /&gt;
 mkdir build&lt;br /&gt;
 cd build&lt;br /&gt;
 cmake ../ -DINSTALL_UDEV_RULES=ON&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if it was successful you should see no return on the previous command.&lt;br /&gt;
&lt;br /&gt;
I have been told that the Raspberry crash if you don't reboot before inserting the dongle. So just run&lt;br /&gt;
&lt;br /&gt;
 sudo shutdown -r 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install the RTL-2832U USB dongle on external powered USB HUB&lt;br /&gt;
&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio FM==&lt;br /&gt;
(Liberamente preso da: http://kmkeen.com/rtl-demod-guide/)&lt;br /&gt;
&lt;br /&gt;
-Aggiungere istruzioni per ascoltare radio deejay-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ADSB==&lt;br /&gt;
(da: http://www.satsignal.eu/raspberry-pi/dump1090.html)&lt;br /&gt;
&lt;br /&gt;
E' possibile ricevere le posizioni degli aerei in volo ricevendo i segnali inviati dai trasponder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installazione:&lt;br /&gt;
&lt;br /&gt;
 cd  ~&lt;br /&gt;
 git  clone  git://github.com/MalcolmRobb/dump1090.git&lt;br /&gt;
 cd  dump1090&lt;br /&gt;
 make&lt;br /&gt;
 ./dump1090  --interactive&lt;br /&gt;
&lt;br /&gt;
==APRS==&lt;br /&gt;
http://sq7mru.blogspot.com/2013/08/aprs-igate-rx-z-tunera-dvb-t.html&lt;br /&gt;
&lt;br /&gt;
==Telecomandi 433,92==&lt;br /&gt;
(da: https://github.com/merbanan/rtl_433)&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/merbanan/rtl_433.git&lt;br /&gt;
 cd rtl-433/&lt;br /&gt;
 mkdir build&lt;br /&gt;
 cd build&lt;br /&gt;
 cmake ../&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Si ricevono i telecomandi apricancello a 433 (non ho ancora provato con un telecomando rolling code, ma quelli normali vanno benissimo)&lt;br /&gt;
&lt;br /&gt;
Si ricevono anche segnali di altri apparati che trasmettono sulla stessa frequenza, probabilmente termometri wireless)&lt;br /&gt;
&lt;br /&gt;
==Termometri==&lt;br /&gt;
Installare gnuradio su Raspberry è complicato e lungo, quindi non si riesce ad usare questo&lt;br /&gt;
&lt;br /&gt;
https://github.com/kevinmehall/rtlsdr-433m-sensor&lt;br /&gt;
&lt;br /&gt;
Però si potrebbe usare il sw per telecomandi 433,92 (vedi sopra) aggiungedo una parte di codice per il riconoscimento degli Oregon Scientific.&lt;br /&gt;
&lt;br /&gt;
Qui ci sono un po' di info e codice per Arduino&lt;br /&gt;
&lt;br /&gt;
http://jeelabs.net/projects/cafe/wiki/Decoding_the_Oregon_Scientific_V2_protocol&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/thn128receiver/source/browse/osv1_dec.c&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RTL-SDR&amp;diff=1945</id>
		<title>RTL-SDR</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RTL-SDR&amp;diff=1945"/>
		<updated>2013-11-16T18:10:03Z</updated>

		<summary type="html">&lt;p&gt;Itec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Installazione==&lt;br /&gt;
(da: http://zr6aic.blogspot.dk/2013/02/setting-up-my-raspberry-pi-as-sdr-server.html)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First update you Raspberry Pi wheezy Linux to the latest version.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now install the required utils to compile the RTL-2832U USB dongle driver&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install git cmake libusb-1.0-0-dev build-essential&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now install the RTL-2832U USB dongle driver src and compile&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.osmocom.org/rtl-sdr.git&lt;br /&gt;
 cd rtl-sdr/&lt;br /&gt;
 mkdir build&lt;br /&gt;
 cd build&lt;br /&gt;
 cmake ../ -DINSTALL_UDEV_RULES=ON&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if it was successful you should see no return on the previous command.&lt;br /&gt;
&lt;br /&gt;
I have been told that the Raspberry crash if you don't reboot before inserting the dongle. So just run&lt;br /&gt;
&lt;br /&gt;
 sudo shutdown -r 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install the RTL-2832U USB dongle on external powered USB HUB&lt;br /&gt;
&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ADSB==&lt;br /&gt;
(da: http://www.satsignal.eu/raspberry-pi/dump1090.html)&lt;br /&gt;
&lt;br /&gt;
E' possibile ricevere le posizioni degli aerei in volo ricevendo i segnali inviati dai trasponder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installazione:&lt;br /&gt;
&lt;br /&gt;
 cd  ~&lt;br /&gt;
 git  clone  git://github.com/MalcolmRobb/dump1090.git&lt;br /&gt;
 cd  dump1090&lt;br /&gt;
 make&lt;br /&gt;
 ./dump1090  --interactive&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=RTL-SDR&amp;diff=1944</id>
		<title>RTL-SDR</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=RTL-SDR&amp;diff=1944"/>
		<updated>2013-11-16T18:06:30Z</updated>

		<summary type="html">&lt;p&gt;Itec: Creata pagina con '==Installazione== (da: http://zr6aic.blogspot.dk/2013/02/setting-up-my-raspberry-pi-as-sdr-server.html)   First update you Raspberry Pi wheezy Linux to the latest version.  su...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Installazione==&lt;br /&gt;
(da: http://zr6aic.blogspot.dk/2013/02/setting-up-my-raspberry-pi-as-sdr-server.html)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First update you Raspberry Pi wheezy Linux to the latest version.&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now install the required utils to compile the RTL-2832U USB dongle driver&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install git cmake libusb-1.0-0-dev build-essential&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now install the RTL-2832U USB dongle driver src and compile&lt;br /&gt;
&lt;br /&gt;
git clone git://git.osmocom.org/rtl-sdr.git&lt;br /&gt;
&lt;br /&gt;
cd rtl-sdr/&lt;br /&gt;
&lt;br /&gt;
mkdir build&lt;br /&gt;
&lt;br /&gt;
cd build&lt;br /&gt;
&lt;br /&gt;
cmake ../ -DINSTALL_UDEV_RULES=ON&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if it was successful you should see no return on the previous command.&lt;br /&gt;
&lt;br /&gt;
I have been told that the Raspberry crash if you don't reboot before inserting the dongle.&lt;br /&gt;
&lt;br /&gt;
so just run sudo shutdown -r 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install the RTL-2832U USB dongle on external powered USB HUB&lt;br /&gt;
&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ADSB==&lt;br /&gt;
(da: http://www.satsignal.eu/raspberry-pi/dump1090.html)&lt;br /&gt;
&lt;br /&gt;
E' possibile ricevere le posizioni degli aerei in volo ricevendo i segnali inviati dai trasponder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installazione:&lt;br /&gt;
&lt;br /&gt;
cd  ~  (goes to your home directory)&lt;br /&gt;
&lt;br /&gt;
git  clone  git://github.com/MalcolmRobb/dump1090.git&lt;br /&gt;
&lt;br /&gt;
cd  dump1090&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
./dump1090  --interactive&lt;/div&gt;</summary>
		<author><name>Itec</name></author>
	</entry>
</feed>