Visualizzazione post con etichetta OpenWrt. Mostra tutti i post
Visualizzazione post con etichetta OpenWrt. Mostra tutti i post

giovedì 31 ottobre 2019

Si puo' ancora usare Arduino Yun??

Lo so....le Yun sono un prodotto dismesso da Arduino in tutte le sue versioni ma volevo riusarle per avere una piccola Linux box da nascondere in ufficio con funzione principale di imparare C su sistemi a sola shell

Per installare GCC su Yun si deve prima espandere la partizione del sistema operativo mediante la SD card perche' il pacchetto opkg e' troppo voluminoso. Si segua il tutorial

https://www.arduino.cc/en/Tutorial/ExpandingYunDiskSpace

usando lo sketch https://www.arduino.cc/en/uploads/Tutorial/YunDiskSpaceExpander.zip

a questo punto si puo'installare il pacchetto con

opkg install yun-gcc

Ma a questo punto ho provato a vedere se riuscivo a cross compilare il codice compilando su Debian e poi inviandolo alla Yun con scp in modo da non avere tempi morti di compilazione di sorgenti impegnativi (la Yun ha un Atheros 9331 che e' veloce ma non cosi' come un I5)

E qui sono iniziati i problemi

Il sistema operativo della Yun (Linino) e' basato su OpenWrt....a proposito gli ultimi aggiornamenti di Linino sono del 2015!!! . Ho compilato quindi l'ultima versione di OpenWrt (la 18) e dopo aver compilato senza error hello_world per MIPS ho ricevuto il seguente errore

/bin/ash: ./hello: not found


dopo essermi grattato la testa per un po' ho capito che OpenWrt 18 e' basato sulle librerie MUSL mentre Linino e' basato su Chaos Calmer (OpernWRT 15) che usava le uCLib 
Ho quindi scaricato OpenWRT legacy ma al momento del make menuconfig continuano i problemi perche' lo script non riconosce la presenza del pacchetto Git (si risolve con la patch a questo indirizzo)
La compilazione di interrompe con un errore Please port gnulib freadahead.c to your platform! 

Non volendo incasinare il sistema rinuncio...un hardware non male gia' obsoleto 

Dimenticavo...esiste il github di OpenWrt-YUN ma se si prova a compilare il codice il procedimento fallisce perche' lo script punta a codice contenuto sul defunto Google Code ed ad un link di Luci non piu' disponibile. Ho provato a correggere i link del file feeds.conf.default con https://github.com/x-wrt/x-wrt e https://github.com/openwrt/luci/tree/luci-0.11 ma senza riuscire a risolvere la situazione in modo completo


src-svn packages https://github.com/arduino/openwrt-packages-yun/trunk
src-svn xwrt https://github.com/x-wrt/x-wrt
src-svn luci https://github.com/openwrt/luci/tree/luci-0.11
src-git routing git://github.com/openwrt-routing/packages.git;for-12.09.x
src-git alljoyn https://github.com/alljoyn/core-openwrt_feed;attitude_adjustment

martedì 13 novembre 2018

OpenWRT su GL.Inet MT300N-V2

Rispetto al GL.Inet AR150  montare OpenWRT su  MT300N-V2 e' leggermente differente


Si parte impostantdo il portatile su 192.168.1.2. Si inserisce il cavo Ethernet su  LAN del M300, si preme in tasto reset e si connette l'alimentazione USB. Dopo 3 secondi (o quando il led rosso non lampeggia piu') si lascia il tasto reset e ci si connette al 192.168.1.1 e si effettua l'upload del firmware openwrt-18.06.0-ramips-mt76x8-gl-mt300n-v2-squashfs-sysupgrade.bin

A questo punto c'e' la differenza con AR150. Non viene attivata di default l'access point per cui si deve continuare la configurazione mantenendo collegato il cavo Ethernet sulla porta LAN e dopo il reboot si deve usare LuCi all'indirizzo 192.168.1.1

venerdì 19 ottobre 2018

NoDogSplash captive portal in OpenWRT

Aggiornamento
questo e' la risposta degli sviluppatori

First of all, almost all operating systems on both mobile and laptop/desktop now support the defacto standard Captive Portal Detection (CPD) function designed to facilitate a secure and consistent login to captive portals. This by default uses a cut down browser that is very restricted for security purposes.
What you are seeing on Android is the CPD browser blocking iframes.
On your laptop you will be using your normal browser.

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

Il mio scopo e' quello di far girare NoDogSplash captive portal su GL.iNet AR150 con firmware OpenWRT Stock in modo che la pagina di benvenuto (nel linguaggio di NoDog e' la splash page) mostri contenuti ripresi da un sito web esterno e che sia quindi dinamica

Per prima cosa devo precisare che il firmware stable dell'AR150 monta una versione di NoDogSplash abbastanza vecchiotta ovvero la 0.9_beta9.9.9-5 (ho provato a montare anche il firmware in testing ma le cose migliorano di poco perche' opkg installa la 1.0.2.1)


Per creare il portale captivo ho tolto il WPA all'AP e poi usata la seguente configurazione
In pratica ho aggiunto alle regole di firewalle la possibilita' per utenti non autenticati di poter
raggiungere il sito 150.217.xxx.xxx su porta 80
---------------------------------------------------------------------------------
config instance
  # Set to 1 to enable nodogsplash
  option enabled 1

  # Use plain configuration file as well
  #option config '/etc/nodogsplash/nodogsplash.conf'
  option network 'lan'
  option gatewayname 'OpenWrt Nodogsplash'
  option maxclients '250'
  option idletimeout '1200'
  #option redirecturl 'http://c1p81.altervista.org/montecatini/'
  #qoption authenticateimmediately 'yes'



  # Your router may have several interfaces, and you
  # probably want to keep them private from the network/gatewayinterface.
  # If so, you should block the entire subnets on those interfaces, e.g.:
  list authenticated_users 'block to 192.168.0.0/16'
  list authenticated_users 'block to 10.0.0.0/8'

  # Typical ports you will probably want to open up.
  list authenticated_users 'allow tcp port 22'
  list authenticated_users 'allow tcp port 53'
  list authenticated_users 'allow udp port 53'
  list authenticated_users 'allow tcp port 80'
  list authenticated_users 'allow tcp port 443'

  # For preauthenticated users to resolve IP addresses in their
  # initial request not using the router itself as a DNS server,
  list preauthenticated_users 'allow tcp port 53'
  list preauthenticated_users 'allow udp port 53'
  llst preauthenticated_users 'allow tpc port 80 to 150.217.xxx.xxx'
  # Allow ports for SSH/Telnet/DNS/DHCP/HTTP/HTTPS
  list users_to_router 'allow tcp port 22'
  list users_to_router 'allow tcp port 23'
  list users_to_router 'allow tcp port 53'
  list users_to_router 'allow udp port 53'
  list users_to_router 'allow udp port 67'
  list users_to_router 'allow tcp port 80'
  list users_to_router 'allow tcp port 443'

  # See https://github.com/nodogsplash for a full list of available options.
----------------------------------------------------------------

in seguito ho modificato lo splash.html come
l'idea e' quella di avere un iframe nel quale visualizzare la pagina derivante
dal sito esterno all'interno della pagina statica splash.html
-----------------------------------------------------------------
<html>
<head>
<title>$gatewayname Entry</title>
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
</head>
<body bgcolor="#DDDDDD" text="#000000">

<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<td align="center"><h2>Luca $gatewayname</h2></td>
</tr>
<tr>
<td align="center">
<iframe height="710" width="720" src="http://150.217.73.108"></iframe>
</td>
</tr>

<tr>
<td align="center" height="120">
<!--
A client is authenticated by requesting the page $authtarget.
So, href to it here, with an img or link text the user can click on.
Also, note that any images you reference must reside in the
subdirectory that is the value of $imagesdir (default: "images").
-->
<a href="$authtarget">
<!--<img src="$imagesdir/splash.jpg" width="71" height="49" border="0"
alt="Click to enter" title="Click to enter">-->
<img src="http://c1p81.altervista.org/montecatini/img/logo_strong.jpg">
<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">
</a>
</td>
</tr>
</table>
<form method='GET' action='$authaction'>
  <input type='hidden' name='tok' value='$tok'>
  <input type='hidden' name='redir' value='$redir'>
  <input type='submit' value='Click Here to Enter'>
</form>
</body>
</html>

---------------------------------------------------------------------
la cosa divertente e' che tutto funziona perfettamente se mi collego da portatile con Chrome


mentre la stessa pagina vista dal telefono (Android 9) viene visualizzata cosi'

Una soluzione potrebbe essere la  modalita' Forwarding Authentication Service (FAS) (che in pratica reindirizza il login su un server esterno dovre peraltro potrebbe girare anche Php) ma non sembra funzionare (anche perche' tutti i tutorial sono per NoDogSplash 2....)

martedì 16 ottobre 2018

GL-AR150 con Captive Portal in OpenWRT

Ho preso un GL-Inet Mini Router per vedere se riesco realizzare un captive portal per la mia rete casalinga. Si tratta di un oggetto decisamente economico (almeno per quello che fa..circa 30 euro) con due interfacce ethernet ed una wireless piu' OpenWRT (esistono due versioni: un firmware openwrt customizzato ed uno stock))


Per reinstallare il firmware si deve:
1) connettere il cavo Ethernet sulla LAN (non e' neccessario un cavo cross)
2) premere il tasto Reset
3) inserire il cavo di alimentazione
4) attendere che led rosso lampeggi "esattamente" 5 volte
5) impostare il portatile su 192.168.1.2
6) connettersi via browser al 192.168.1.1
7) si effettua l'upload del file firmware


8) al riavvio ci si trovera' di fronte al nuovo SSID GL.iNET. La password di default e' goodlife
9) connessi all'AP ci si deve collegare al 192.168.1.1 nel caso di firmware stock o al 192.168.8.1 nel caso di OpenWRT modificato da GL.iNET

Il collegamento puo' essere fatto sia via interfaccia Web che tramite SSH. Preferisco la seconda

Di default la scheda wifi e' gia' in bridge con la WAN per cui non si sono da fare ulteriori impostazioni

Per installare il captive portal ho scelto NoDogSplash perche' a me non serve l'autenticazione ma solo uno splash screen 

Per prima cosa ho tolto il wpa sull'access point in modo da risultare in AP libero

opkg update
opkg install nodogsplash

di default il portale captivo non si attiva. Si deve andare nel file di configurazione che si trova in /etc/config/nodogsplash e si deve settare ad 1 

option enabled 1 

si salva e poi 

/etc/init.d/nodogsplah start

per verificare lo stato del portale captivo si usa

ndsctl status

qui si vedono i client loggati 
per togliere l'autorizzazione ad un client (utile in fase di debug)

ndsctl deauth (inserire mac od ip del client)

la configurazione della pagina di splash e' in /etc/nodogsplah/htdocs/ e come e' abbastanza evidente e' una semplice pagina html

Ogni volta che un client si collega all'AP free viene indicato dal dispositivo che l'antenna e' un portale captivo e si ha la redirezione verso lo splash screen


In un primo tentativo di creare un portale captivo avevo seguito la strada di dirottare il traffico verso lo splash screen tramite DNS ma cio' ha creato un delirio di problemi con il traffico https per problemi legati ai certificati 

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...