View Full Version : [Modfs] Sviluppo pacchetti e porting su altri router
VICIUS...non mi sparare :D
Per evidenziare meglio i picchi, si potrebbe estendere il segnettino scuro fino ad una certa estensione del picco ?
Mi spiego...
Prendiamo il caso dell'ADSL2+, in cui c'è una barra per pixel orizzontale.
px(n) è il numero di pixel della barra ennesima
Supponiamo px(n) > px(n-1) e px(n) > px(n+1)
Sarebbe possibile colorare dello stesso colore di cui ora è colorato l'ultimo pixel della barra la parte finale della barra compresa fra
min(px(n-1), px(n+1)) e px(n)
oppure
max(px(n-1), px(n+1)) e px(n)
Bisognerebbe vedere quale viene meglio.
In modalità ADSL è più semplice, con due pixel basta fare per la prima barra:
se px(n-1) < px(n) colora da px(n-1) a px(n)
e per la seconda barra:
se px(n+1) < px(n) colora da px(n+1) a px(n)
Ok
Ho visto phpinfo e sembra tutto ok. A che punto stai del porting ?
Ti dico subito che per modificare il SNR ho usato un sistema che funziona solo modificando il firmware. In pratica ho realizzato uno script che va a sostituire xdslctl ed in caso sia abilitato il tweak, gestisce i parametri passati ad xdslctl prendendoli da nvram.
Perché sono un bel po' diversi. Sotto ogni punto di vista. Modfs non è un firmware completo, è solo una estensione del firmware originale.
VICIUS: ottimo ;) Lo aggiungo al repository ?
ho ricompilato :
busybox (1.13.2 funziona)
dropbear (0.52 funziona )
etherwake (1.09 funziona )
openssl (0.9.8q da provare )
openvpn (2.1.4 , da provare)
php+sqlite3 (4.4.9 funziona)
sqllite3 (3.4.2 funziona)
stunnel (da provare)
zlib (usata per dropbear)
serve altro?
Ma la parte web funziona ?
VICIUS: ottimo ;) Lo aggiungo al repository ?
Certo fai pure.
VICIUS...non mi sparare :D
Per evidenziare meglio i picchi, si potrebbe estendere il segnettino scuro fino ad una certa estensione del picco ?
Mi spiego...
Prendiamo il caso dell'ADSL2+, in cui c'è una barra per pixel orizzontale.
px(n) è il numero di pixel della barra ennesima
Supponiamo px(n) > px(n-1) e px(n) > px(n+1)
Sarebbe possibile colorare dello stesso colore di cui ora è colorato l'ultimo pixel della barra la parte finale della barra compresa fra
min(px(n-1), px(n+1)) e px(n)
oppure
max(px(n-1), px(n+1)) e px(n)
Bisognerebbe vedere quale viene meglio.
In modalità ADSL è più semplice, con due pixel basta fare per la prima barra:
se px(n-1) < px(n) colora da px(n-1) a px(n)
e per la seconda barra:
se px(n+1) < px(n) colora da px(n+1) a px(n)
Vediamo se ho capito bene. Se ci sono tre barre e quella di mezzo è la più alta il bordo, invece di essere di 1 px come è ora, andrebbe fatto più alto.
X
XX
XXo
ooo
ooo
ooo
ooo
X -> Bordo, * -> sfondo semi trasparente
Confermi?
non vado oltre il login/logout ...
dopo il login mi da una pagina come se non trovasse il menu dei moduli
Alpine: lo screen della pagina però non l'hai mai messo, facciamolo vedere a Gnommo, così almeno può provare a capire dove sta il problema. Anzi...volendo potresti anche installare l'ultimo pacchetto(file_browser) che ho aggiunto per gestire i file da http potremmo anche provare a lavorarci da remoto (basta impostare $home con il percorso in cui hai montato Modfs). Ovviamente devi fare il forward della porta 8080 del router, se te lo permette.
VICIUS: Esatto. Dimmi te... Non ti sembra che in questo modo si evidenzino meglio i picchi ? Altrimenti con lo sfondo semi trasparente si vedono male imho.
non so come fare x il l forward della porta 8081, ti allego lo screenshot di quello che vedo dopo il login
non so come fare x il l forward della porta 8081, ti allego lo screenshot di quello che vedo dopo il login
l'output di
$sqlite $webdb "select * from menus;"
$sqlite $webdb "select * from main_items;"
$sqlite $webdb "select * from submenus;"
?
VICIUS: Esatto. Dimmi te... Non ti sembra che in questo modo si evidenzino meglio i picchi ? Altrimenti con lo sfondo semi trasparente si vedono male imho.
Vedo cosa posso fare. Però datemi tempo che ho preso una ps3 oggi pomeriggio e sto pensado ad altro :asd:
Vedo cosa posso fare. Però datemi tempo che ho preso una ps3 oggi pomeriggio e sto pensado ad altro :asd:
Ma certo, sai benissimo che non c'è assolutamente fretta ;)
Alpine, un primo errore che ho visto è questo: non devi mettere uno slash in fondo al path che passi a build.sh. Anche se questo non credo possa influire su questo problema.
DANWHITE
24-01-2011, 09:04
Cionci,
vorrei sapere come sei riuscito ad entrare in Telnet sul firmware originale, ho dato un occhio alle directory e non ho visto setup.cgi, anzi non ho visto neanche un cgi ! (aperte i vostri) eppure le pagine htm del router sono piene di chiamate a funzioni (processi) .cgi ! come è possbile ? :confused:
Ciao
Cionci,
vorrei sapere come sei riuscito ad entrare in Telnet sul firmware originale, ho dato un occhio alle directory e non ho visto setup.cgi, anzi non ho visto neanche un cgi ! (aperte i vostri) eppure le pagine htm del router sono piene di chiamate a funzioni (processi) .cgi ! come è possbile ? :confused:
Ciao
Con telnetenable: http://www.myopenrouter.com/download/10602/NETGEAR-Telnet-Enable-Utility/
E relativo sorgente per farlo girare su Linux: http://www.seattlewireless.net/telnetenable.c
Mi sono accorto di un bug sul retrain script.
Quando si avvia per la prima volta, controlla se esistono in nvram le variabili RETRAIN_MIN_SNR e RETRAIN_MAX_SNR, e se non esistono imposta il min a 5 ed il max a 100.
Però poi il codice php come max permette d'impostare soltanto valori da 0 a 99...
Secondo me è più giusto impostare il valore max di default a 99, e modificare il codice php per poter impostare valori di snr sia min che max da 1 a 99.
Ho modificato il retrain.sh righe 26 e 27:
#value not available, first time running this script set value to 99
nvram set adsl_retrain_max_snr=99
e anche il main.php righe 132 e 133:
<div class="setting"><div class="label"for="snr">Min SNR Margin (dB): </div><input name="ret_min" type="text" value="<?= $adsl_min_snr ?>" size="2" maxlength="2" /></div>
<div class="setting"><div class="label" for="snr">Max SNR Margin (dB): </div><input name="ret_max" type="text" value="<?= $adsl_max_snr ?>" size="2" maxlength="2" /></div>
secondo voi va bene?
Alla fine non vedo cosa cambi, tanto mettere 50, 100 o 500 non cambia nulla, significa che non interviene mai il limite superiore.
Alla fine non vedo cosa cambi, tanto mettere 50, 100 o 500 non cambia nulla, significa che non interviene mai il limite superiore.
è solo per "pulizia", perché è brutto avere un valore di default a 100 che poi se lo modifichi non lo puoi più rimettere di nuovo a 100 da web interface
Allora metterò 99 nella prossima release del firmware, ma far aggiornare a tutti il firmware per quella sola modifica mi sembra troppo.
Allora metterò 99 nella prossima release del firmware, ma far aggiornare a tutti il firmware per quella sola modifica mi sembra troppo.
tnx ;)
DANWHITE
24-01-2011, 10:30
Con telnetenable: http://www.myopenrouter.com/download/10602/NETGEAR-Telnet-Enable-Utility/
E relativo sorgente per farlo girare su Linux: http://www.seattlewireless.net/telnetenable.c
Interessante, la Netgear si è lasciata una backdoor, probabilmente per fare assistenza da remoto. Per quanto riguarda i .cgi ? io ho lanciato il comando:
find / -name '*.cgi' -print e non ho trovato niente della Netgear, francamente non capisco, spero che si tratti di un mio errore...
Ciao,
Volevo sviluppare dei grafici per utilizzo cpu, memoria e swap, prendendo come riferimento band_meter, però ho trovato solo i cgi già compilati... mi sapete dire dove trovo i sorgenti?
Interessante, la Netgear si è lasciata una backdoor, probabilmente per fare assistenza da remoto. Per quanto riguarda i .cgi ? io ho lanciato il comando:
find / -name '*.cgi' -print e non ho trovato niente della Netgear, francamente non capisco, spero che si tratti di un mio errore...
Ciao,
Purtroppo i cgi sono tutti inclusi in httpd, che è closed.
Volevo sviluppare dei grafici per utilizzo cpu, memoria e swap, prendendo come riferimento band_meter, però ho trovato solo i cgi già compilati... mi sapete dire dove trovo i sorgenti?
Ora sinceramente non li ho sottomano, appena li trovo li allego.
Volevo sviluppare dei grafici per utilizzo cpu, memoria e swap, prendendo come riferimento band_meter, però ho trovato solo i cgi già compilati... mi sapete dire dove trovo i sorgenti?
Non sono compilati, sono file svg leggibili.
Se ti riferisci agli altri cgi, quelli sono banali programmi che servono agli svg per recuperare i dati,leggono le informazioni da qualche file in proc e fanno qualche elementare formattazione.
DANWHITE
24-01-2011, 13:01
Purtroppo i cgi sono tutti inclusi in httpd, che è closed.
La Netgear si è inventata il busybox dell'http. Peccato perchè è più difficile fare delle modifiche. Ma davvero vuoi re-implementare il firewall sul Netgear tramite iptables ?
Ciao
La Netgear si è inventata il busybox dell'http. Peccato perchè è più difficile fare delle modifiche. Ma davvero vuoi re-implementare il firewall sul Netgear tramite iptables ?
Ciao
Beh anche dd-wrt utilizza un server http con tutte le funzionalità builtin, sotto il profilo della sicurezza è meglio.
Il dgn3500 invece è un colabrodo, permette di eseguire cgi anche sulle memorie fat32, cosa utilissima per me, ma anche pericolosissima sotto il profilo della sicurezza, infatti io la condivisione internet tramite https di dischi usb, non mi fido ad attivarla :D
DANWHITE
24-01-2011, 13:25
Beh anche dd-wrt utilizza un server http con tutte le funzionalità builtin, sotto il profilo della sicurezza è meglio.
Il dgn3500 invece è un colabrodo, permette di eseguire cgi anche sulle memorie fat32, cosa utilissima per me, ma anche pericolosissima sotto il profilo della sicurezza, infatti io la condivisione internet tramite https di dischi usb, non mi fido ad attivarla :D
In effetti il metodo più sicuro è tramite VPN, una volta certificato entri dentro la rete domestica e puoi fare quello che vuoi senza dover definire altri permessi. L'unico punto di ingresso da presidiare è la VPN, ma quella è sicura !
Ciao,
Danilo
P.S.
Io non ho abilitato dall'esterno neanche la SSH, uso sempre la VPN.
Salve a tutti sono possessore anche io di un netgear dgn2200 e ho installato modfs :)
Ottimo lavoro.
Mi chiedevo se si poteva implementare una piccola cosa ma che secondo me è basilare.
Ne package manager secondo me sarebbe utile visualizzare la versione del pacchietto installata al momento in modo da non confondersi se si effettua un upgrade manuale dei pacchetti.
Non so se è gia stata proprosta la modifica o se era gia in programma, in tal caso mi scuso se ho ripetuto un concetto già espresso.
Ciao
P.S. Un dubbio che mi è venuto.
Se volessi cambiare la penna usb su cui è installata modfs,dato che ho effettuato vari aggiornamenti e modifiche, se copio il contenuto della chiavetta installata al momento su una nuova chiavetta ci sarebbero problemi oppure tutto fuzionerebbe senza problemi?
Salve a tutti sono possessore anche io di un netgear dgn2200 e ho installato modfs :)
Ottimo lavoro.
Mi chiedevo se si poteva implementare una piccola cosa ma che secondo me è basilare.
Ne package manager secondo me sarebbe utile visualizzare la versione del pacchietto installata al momento in modo da non confondersi se si effettua un upgrade manuale dei pacchetti.
Non so se è gia stata proprosta la modifica o se era gia in programma, in tal caso mi scuso se ho ripetuto un concetto già espresso.
Ciao
P.S. Un dubbio che mi è venuto.
Se volessi cambiare la penna usb su cui è installata modfs,dato che ho effettuato vari aggiornamenti e modifiche, se copio il contenuto della chiavetta installata al momento su una nuova chiavetta ci sarebbero problemi oppure tutto fuzionerebbe senza problemi?
Ok, modificherò package manager. Attualmente i pacchetti vengono inseriti in una list box, invece lì metterò in una tabella, come in wol per mettere più informazioni ed aumentare la leggibilità.
Puoi copiare il file modfs.bin senza problemi.
La Netgear si è inventata il busybox dell'http. Peccato perchè è più difficile fare delle modifiche. Ma davvero vuoi re-implementare il firewall sul Netgear tramite iptables ?
Lo vorrei fare ed ho già fatto diverse prove, il problema è che non funziona. Ci deve essere qualcosa che non va nei moduli del kernel che ho compilato o qualcosa che non quadra nelle impostazioni precedenti. :muro:
Anzi...se qualcuno si vuole unire alle prove è il benvenuto.
Basta togliere il modulo acos_nat dal kernel ed il NAT/firewall si disattiva.
DANWHITE
24-01-2011, 18:14
Quando ho saputo che il DGN2200 non usava le iptables sono rimasto molto sorpreso perchè sono uno standard per Linux. Secondo me hai già fatto una grande cosa ad aggiungere lo swap che funziona !. Le iptables sono davvero necessarie ? Credo che la cosa sia troppo complessa...
Se non ci fosse il problema che non vi sono drivers open-source per l'ADSL Broadcom faresti prima a sostituire il kernel Netgear con quello di open-wrt...
Io ho provato ad installare il rootfs di open-wrt per il Broadcom 63xx su una partizione linux (http://downloads.openwrt.org/backfire/10.03.1-rc4/brcm63xx/openwrt-brcm63xx-rootfs.tar.gz) ma non mi funziona neanche la BusyBox (ho settato la LD_LIBRARY_PATH e PATH correttamente) credo che i 2 kernell siano troppo diversi.
Ciao
l'output di
$sqlite $webdb "select * from menus;"
$sqlite $webdb "select * from main_items;"
$sqlite $webdb "select * from submenus;"
?
ho eseguito le query:
-> $sqlite $webdb "select * from menus;"
Status|0|Status
Setup|1|Setup
Services|2|Services
Security|3|Security
NAT-QoS|4|NAT/QoS
Administration|5|Administration
Diagnostic|6|Diagnostic
-> $sqlite $webdb "select * from main_items;"
webpass|Administration|10|Web password
service_manager|Services|10|Service Manager
-> $sqlite $webdb "select * from submenus;"
pack_manager|Administration|10|Package Manager
se riesco domani studio iptables per aprire le porte almeno per ssh, dyndns già funziona
matti157
24-01-2011, 23:25
complimenti a tutti per il progetto fenomenale :eek:
ora io ho un dgn3500, volevo avere info sullo sviluppo del pacchetto per i torrent :D
avrà problemi il router poi a vedere un hd ntfs? immagino che ci sia qualche piccolo casino visto che lui col fw originale non li vede
se avete bisogno di un router per i test non ho problemi a mettere a disposizione il mio
se riesco domani studio iptables per aprire le porte almeno per ssh, dyndns già funziona
Puoi usare il trucco che ho usato sul DGN2200 (anzi, ti basterebbe installare il pacchetto extraip e fa tutto lui).
In pratica si aggiunge un secondo IP sull'interfaccia br0, a quel punto puoi fare il forward delle porte direttamente dall'interfaccia web ufficiale, usando il nuovo IP.
matti157: il 3500 supporta la lettura/scrittura su NTFS già di con il firmware originale.
Per i torrent, al momento non abbiamo trovato un client che non consumi troppe risorse.
Puoi usare il trucco che ho usato sul DGN2200 (anzi, ti basterebbe installare il pacchetto extraip e fa tutto lui).
In pratica si aggiunge un secondo IP sull'interfaccia br0, a quel punto puoi fare il forward delle porte direttamente dall'interfaccia web ufficiale, usando il nuovo IP.
matti157: il 3500 supporta la lettura/scrittura su NTFS già di con il firmware originale.
Per i torrent, al momento non abbiamo trovato un client che non consumi troppe risorse.
Un mio amico mi ha fortemente sconsigliato di fare il forward della porta per l'ssh, mi ha consigliato di mettere su il server vpn , secondo lui è molto più sicuro visto che l'ho già compilato stasera provo.
matti157
25-01-2011, 09:55
Puoi usare il trucco che ho usato sul DGN2200 (anzi, ti basterebbe installare il pacchetto extraip e fa tutto lui).
In pratica si aggiunge un secondo IP sull'interfaccia br0, a quel punto puoi fare il forward delle porte direttamente dall'interfaccia web ufficiale, usando il nuovo IP.
matti157: il 3500 supporta la lettura/scrittura su NTFS già di con il firmware originale.
Per i torrent, al momento non abbiamo trovato un client che non consumi troppe risorse.
si che idiota, il bello è che ci attacco pure un hd ntfs :doh:
allora resto in attesa per il client torrent speriamo che in futuro ne esca uno leggero :D
Per quanto riguarda il client torrent anche questi risulterebbero troppo pesanti?
http://deluge-torrent.org/
http://xbtt.sourceforge.net/client/
http://www.torrentflux.com/
http://ctorrent.sourceforge.net/
http://www.cyberciti.biz/tips/linux-command-line-bittorrent-client.html
drovrebbero essere tra i più leggeri in circolazione...
Gnommo...come ha fatto nel pacchetto di minidlna a finirci:
exec("$rm -f $modfs/packages/$device/minidlna/cache/files.db");
al posto di
exec("rm -f $modfs/packages/$device/minidlna/cache/files.db");
:eek:
Ecco perché ad un utente non funzionava il server DLNA, stasera lo sistemo.
Gippe: il primo è scritto in python ed ha una GUI, il secondo vuole le librerie boost che non compilerò nemmeno morto, il terzo ha l'interfaccia web, ma usa un backend in python, il quarto è quello che abbiamo provato, il quinto gira in python.
Gnommo...come ha fatto nel pacchetto di minidlna a finirci:
exec("$rm -f $modfs/packages/$device/minidlna/cache/files.db");
al posto di
exec("rm -f $modfs/packages/$device/minidlna/cache/files.db");
:eek:
Ecco perché ad un utente non funzionava il server DLNA, stasera lo sistemo.
E chi lo sa?
Inconvenienti del copia ed incolla :D
DANWHITE
25-01-2011, 18:58
Sarebbe utile aggiungere nella pagina principale del router (Netgear) un link per andare alla pagina web della versione modfs, giusto un piccolo marchio/simbolo di riconoscimento...
Sarebbe utile aggiungere nella pagina principale del router (Netgear) un link per andare alla pagina web della versione modfs, giusto un piccolo marchio/simbolo di riconoscimento...
Sì, chiaro. Con il prossimo firmware.
Parnas72
26-01-2011, 00:41
il primo è scritto in python ed ha una GUI, il secondo vuole le librerie boost che non compilerò nemmeno morto, il terzo ha l'interfaccia web, ma usa un backend in python, il quarto è quello che abbiamo provato, il quinto gira in python.Se cercate qualcosa di leggero per automatizzare i download potrebbe essere utile DownloadDaemon (http://downloaddaemon.sourceforge.net/). E' un software tipo JDownloader, per scaricare da megaupload & Co., gestibile però da GUI web. Siccome il traffico è tutto HTTP non dovrebbe essere pesante, io lo uso con soddisfazione sulla WDTV. :D
Come client torrent si potrebbe provare lftp (http://lftp.yar.ru/), che è in realtà un client FTP/HTTP, ma ha anche il supporto a bittorrent. L'interfaccia però è solo a linea di comando.
DANWHITE
26-01-2011, 09:54
Cionci,
vi è la possibilità di aggiungere il modulo "netfilter" al kernel ?
Cionci,
vi è la possibilità di aggiungere il modulo "netfilter" al kernel ?
E' una settimana che ci lavoro. Non è così semplice. iptables sul kernel 2.6 è molto più complesso che sul kernel 2.4. Mi sono venuti fuori diverse decine di moduli e purtroppo sembra che ci sia qualcosa che non va con il nat.
Le tabelle vengono costruite in modo corretto, ma il nat non funziona.
DANWHITE
26-01-2011, 12:48
Cosa intendi con il NAT non funziona: il fatto che non vengono rimappati gli indirizzi o che non funziona il firewall, cioè passa di tutto ?
Cosa intendi con il NAT non funziona: il fatto che non vengono rimappati gli indirizzi o che non funziona il firewall, cioè passa di tutto ?
Proprio non passano i dati... Dalle chain INPUT e OUTPUT i dati passano, ma quando arriva sulla chain POSTROUTING del nat...lì si fermano e non si può andare avanti.
Ho provato sia a prendere pari pari la configurazione del DGN3500, sia quella del TP-Link TD-W8960ND.
Se cercate qualcosa di leggero per automatizzare i download potrebbe essere utile DownloadDaemon (http://downloaddaemon.sourceforge.net/). E' un software tipo JDownloader, per scaricare da megaupload & Co., gestibile però da GUI web. Siccome il traffico è tutto HTTP non dovrebbe essere pesante, io lo uso con soddisfazione sulla WDTV. :D
Come client torrent si potrebbe provare lftp (http://lftp.yar.ru/), che è in realtà un client FTP/HTTP, ma ha anche il supporto a bittorrent. L'interfaccia però è solo a linea di comando.
Non sembrano male. Per il primo però devo usare Eclipse CDT, per il secondo invece si blocca sul makefile, nonostante abbia tutti i requisiti. Devo indagare meglio.
ho eseguito le query:
-> $sqlite $webdb "select * from menus;"
Status|0|Status
Setup|1|Setup
Services|2|Services
Security|3|Security
NAT-QoS|4|NAT/QoS
Administration|5|Administration
Diagnostic|6|Diagnostic
-> $sqlite $webdb "select * from main_items;"
webpass|Administration|10|Web password
service_manager|Services|10|Service Manager
-> $sqlite $webdb "select * from submenus;"
pack_manager|Administration|10|Package Manager
se riesco domani studio iptables per aprire le porte almeno per ssh, dyndns già funziona
gnommo qualche idea? , servirebbe una modalità debug nell'interfaccia web
magari devo fare qualcosa per installare i pacchetti delle web GUI
per openvpn: sono riuscito a compilare tutto e avviarlo da shell però ancora non sono riuscito a configurarlo probabilmente commetto un errore su iptable
per aprire la porta 22 su internet mi è bastato questo comando :
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
gnommo qualche idea? , servirebbe una modalità debug nell'interfaccia web
magari devo fare qualcosa per installare i pacchetti delle web GUI
per openvpn: sono riuscito a compilare tutto e avviarlo da shell però ancora non sono riuscito a configurarlo probabilmente commetto un errore su iptable
per aprire la porta 22 su internet mi è bastato questo comando :
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
DA quello che si vede dallo screenshot mi pare che l'errore si abbia su questa query:
SELECT DISTINCT menus.display_name AS display_name ,menus.ord FROM menus,main_items WHERE menus.name = main_items.parent UNION SELECT DISTINCT menus.display_name AS display_name,menus.ord FROM menus,submenus WHERE menus.name = submenus.parent ORDER BY menus.ord
prova a mandarla da linea di comando, se non ti da errori, allora c'è qualcosa nel modulo sqlite3 di php che non va.
secondo me servirebbe un debug.php , uno script php che esegue tutte le query base senza introdurre qualche tipo di elaborazione particolare.
stasera se riesco provo a crearlo.
Ho fatto un pacchettino chiamato news che va ad inserirsi in About -> News.
Ho abilitato il blog Wordpress su sourceforge, quindi ho recuperato il feed RSS ed estratto data, titolo del post e link.
Così abbiamo un modo per far arrivare gli aggiornamenti agli utenti, senza che seguano i feed del sito che possono essere anche molto dispersivi.
Ho fatto un pacchettino chiamato news che va ad inserirsi in About -> News.
Ho abilitato il blog Wordpress su sourceforge, quindi ho recuperato il feed RSS ed estratto data, titolo del post e link.
Così abbiamo un modo per far arrivare gli aggiornamenti agli utenti, senza che seguano i feed del sito che possono essere anche molto dispersivi.
I Love You :ave:
se riesco domani studio iptables per aprire le porte almeno per ssh, dyndns già funziona
Ciao Alpine, io posseggo il WAG320N e, ovviamente, faccio il tifo per te affinchè si possa ottenere un custom firmware. Anche perchè obiettivamente ho come l'impressione di guidare una Ferrari con il freno a mano tirato. Mi dispiace solo di non essere un programmatore, altrimenti ti darei volentieri una mano. Ovviamente un grosso GRAZIE va anche a tutte le persone che ti stanno aiutando in questo progetto. :stordita:
Bon...eccomi qua... mi stavo leggendo un po' tutta la discussione per capire come lavora il dgn2200 a livello di filesystem, kernel, tmp etc etc.. ma a quanto pare ci son delle limitazioni (ovviamente): sono tutto orecchi (occhi).
Riprendo da un altro thread...
Mi son messo a guardare il vostro progetto su sf ... mi ha ispirato :) ... penso che prenderò il dgn2200.. chissà che non mi metta a smanettare per inserire un packet capture e magari rtorrent!
Partiamo dal presupposto che tutto quello che fa il TP-Link si può fare sul DGN2200. La cosa che mi interesserebbe di più sarebbe la possibilità di creare VLAN.
Attualmente mi trovo davanti al problema più grosso sul DGN2200: ovvero inserire un firewall basato su iptables.
Il firmware ufficiale utilizza un firewall closed, secondo me buono, sopratutto in abbinamento al demone upnp che è migliore rispetto a tutti i router basati su miniupnpd che finora ho provato.
Il firmware beta permette di aggiungere svariate opzioni al firewall, che prima dall'interfaccia web era veramente troppo limitato.
Volevo aggiungere iptables per permettere di personalizzare ulteriormente il port forwarding ed il port triggering. Ho provato a compilare i moduli, si inseriscono nel kernel, ma non riesco a fargli fare il nat :boh:
Quindi qualcuno che abbia voglia di fare prove di questo tipo farebbe veramente comodo.
Con le VLAN e il firewall su iptables, si aprirebbero nuove possibilità, come mettere Wifi e LAN su due VLAN separate per poter impedire agli utenti wifi di accedere ai computer della LAN e di accedere fra loro (una vera e propria guest network). Oppure la trasformazione in router pure con porta WAN (cosa che si può fare sul TP-Link).
In effetti può essere interessante...il problema è iptables..è un mostruosissimo e potentissimo drago ancestrale, ci ho lavorato in diverse occasioni ed alcune volte mi ha fatto venire delle emicranie pazzesche...inoltre...ok che è un utilizzo home però non è proprio leggero leggero...ma può funzionare...domandina...riuscire a fare un checkout completo dal repo svn?sul mio pc mi ferma il checkout...solo provare...se vi funziona mi sbatto io a metterlo a posto da me. Grazie.
In effetti può essere interessante...il problema è iptables..è un mostruosissimo e potentissimo drago ancestrale, ci ho lavorato in diverse occasioni ed alcune volte mi ha fatto venire delle emicranie pazzesche...inoltre...ok che è un utilizzo home però non è proprio leggero leggero...ma può funzionare...domandina...riuscire a fare un checkout completo dal repo svn?sul mio pc mi ferma il checkout...solo provare...se vi funziona mi sbatto io a metterlo a posto da me. Grazie.
Diciamo che è standard l'uso di iptables in questi router, ad esempio anche il TP-Link lo usa.
Settare il nat da zero è semplice, creare l'intero firewall è un bel problema, ma fortunatamente abbiamo quello del DGN3500, che puoi vedere in prima pagina.
Il problema è che nemmeno il nat funziona. Ora voglio ricompilare l'intero kernel invece dei singoli moduli e riprovo.
DANWHITE
28-01-2011, 20:44
Concordo che le iptables sono ostiche: la questione fondamentale è che la sequenza con la quale sono inserite è molto importante, le regole più restrittive devono essere inserite in fondo altrimente bloccano il traffico anche se esiste una regola successiva che lo permetterebbe (su questo ho trovato un baco anche su dd-wrt !). Io comincerei con delle regole semplici e molto permissive, giusto per testare il pacchetto. So che su internet esistono molti post sull'argomento, ma ugualmente ti segnalo un paio di links (ove c'è un esempio semplice):
http://www.aldolat.it/2006/sicurezza/settare-il-firewall-con-iptables/
http://www.dd-wrt.com/wiki/index.php/Iptables_command
P.S.
Prima sarebbe meglio risolvere il problema del NAT: se può servire ti posso inviare le regole impostate con firmware dd-wrt
Per ora ho fatto questo:
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
Tutto questo usando solo la porta ethernet e disattivando il bridge, ma non funziona. Ho provato anche tante altre combinazioni, ma senza successo.
Investigando sulla VLAN dello switch Broadcom 5325E...
Ho trovato questo script, che probabilmente è quello che serve ad impostare i registri dello switch stesso per la VLAN:
#!/bin/sh
vid="$1"
flags="$2"
cd /proc
echo "05 62 02:" "$vid" > switch
if [ "$#" -gt 1 ]; then
echo "05 64 04:" "$flags" > switch
echo "05 60 01:80" > switch
else
echo "05 60 01:81" > switch
fi
sleep 1
echo "05 64 04" > switch
echo "$vid: flags -> `cat switch`"
Ad una prima lettura...
$vid è il VLAN ID 802.1Q, quindi un intero tra 1 e 4094.
Passando un solo parametro sembra che effettui una lettura, passando due parametri scrive il flag nei registri.
Con l'ultima scrittura recupera il risultato.
Questo è il sorgente di OpenWRT che permette di scrivere/leggere sul 5325, ma non è compatibile con il driver LAN ufficiale. Imho bisogna cercare di individuare i vari valori dei registri per vedere se corrispondono a quelli che vengono scritti.
https://lists.openwrt.org/pipermail/openwrt-devel/2010-September/007892.html
VICIUS: Esatto. Dimmi te... Non ti sembra che in questo modo si evidenzino meglio i picchi ? Altrimenti con lo sfondo semi trasparente si vedono male imho.
Avevi ragione. Sopratutto il grafico dei bit in cui ci sono molti picchi si capisce meglio dove comincia e dove finisce una barra. Ti allego il tgz.
Ho fatto una modifica al volo, dimmi se ti gusta. Ora il grafico è perfettamente contornato.
Questo è il grafico sulla mia sciagurata ADSL2+ :muro:
http://img263.imageshack.us/img263/8861/immagineryg.jpg
Gnommo: che ne dici di rilasciare la versione 0.3 non appena abbiamo finito di mettere a posto:
- il grafico dei toni per entrambi i router
- openvpn per entrambi i router (se non hai ancora iniziato se vuoi posso pensarci io avanza tempo)
- basicinfo e adslinfo per il DGN3500 (cosa hai deciso di fare poi per recuperare valori ? L'idea del cron job non mi sembrava malvagia)
- http file browser da sistemare: nell'editor di testo non viene applicato lo stile (qui ci dovresti pensare te, perché ci ho provato, ma non ho capito dove sia il problema)
- fare un redirect quando non esiste la variabile di sessione e non semplicemente visualizzare la schermata di login. (ci posso pensare io)
L'ultima cosa serve per evitare che si vedano più schermate di login all'interno della schermata di Modfs dopo che è scaduta la sessione. Inoltre
Gnommo: che ne dici di rilasciare la versione 0.3 non appena abbiamo finito di mettere a posto:
- il grafico dei toni per entrambi i router
- openvpn per entrambi i router (se non hai ancora iniziato se vuoi posso pensarci io avanza tempo)
- basicinfo e adslinfo per il DGN3500 (cosa hai deciso di fare poi per recuperare valori ? L'idea del cron job non mi sembrava malvagia)
- http file browser da sistemare: nell'editor di testo non viene applicato lo stile (qui ci dovresti pensare te, perché ci ho provato, ma non ho capito dove sia il problema)
- fare un redirect quando non esiste la variabile di sessione e non semplicemente visualizzare la schermata di login. (ci posso pensare io)
Ok, mi stavo dedicando al firmware del dgn3500
L'ultima cosa serve per evitare che si vedano più schermate di login all'interno della schermata di Modfs dopo che è scaduta la sessione. Inoltre
ops
Ok, mi stavo dedicando al firmware del dgn3500
Chiaramente aspettiamo anche quello ;)
Cosa ci stai facendo di bello sul firmware ?
Chiaramente aspettiamo anche quello ;)
Cosa ci stai facendo di bello sul firmware ?
Quello che hai fatto tu mesi fa, cioè la partenza automatica di modfs :D
Tu l'hai inserita in uno script di avvio vero?
Io invece ho modificato i due script che vengono richiamati ogni volta che viene connessa e disconnessa una periferica, questi script richiamano l'eseguibile rc che fa il mount e setta la condivisione samba.
Ho sostituto questo comportamento facendo puntare ad un mio script che fa il mount (anche di ext3) e verifica se sulla periferica c'è modfs e se non è già avviato l'avvia.
Insomma modfs può essere avviato in qualsiasi momento non per forza al boot.
Stavo cercando di capire perchè questi script vengono richiamati anche per alcune periferiche che non sono dischi, ma non per tutti, vorrei usarli anche per un sistema di notifica di inserimento/disinserimento delle periferiche usb.
Sì, l'ho inserito all'avvio.
Beato te che sul tuo è tutto così semplice :muro: :muro:
Dannati eseguibili closed del DGN2200 :muro: :muro:
Anche il sistema di notifica dell'inserimento di periferiche usb me lo devo fare da solo, per poi poter killare 7-8 eseguibili closed...
Cerchiamo di studiare un sistema di notifica comune, almeno standardizziamo la parte di Modfs che deve gestire queste notifiche.
nickthird
29-01-2011, 11:54
Ho provato le ultime versione della curva del snr e curva dei toni ma non sono mai riuscito a vedere la parte grigia del grafico snr (upload). All'inizio credevo che fosse semplicemente fatto in questa maniera poi ho visto il grafico di Cionci e mi sono reso conto che mancava proprio. In allegato è come lo vedo io. Forse il picco supera i 60db e quindi non rientra nella scala oppure c'è qualche impostazione che devo fare.
Comunque grazie per l'eccellente lavoro.
Posta l'output di
adsl info --snr
così vediamo.
Nota che in ADSL1, la prima parte del grafico non si vede, mentre in ADSL2 non ho mai provato.
nickthird
29-01-2011, 19:01
Posta l'output di
adsl info --snr
così vediamo.
Nota che in ADSL1, la prima parte del grafico non si vede, mentre in ADSL2 non ho mai provato.
Ecco il risultato di adsl info --snr utilizzando il programma DMT (adsl monitor). Ho riportato solo i primi canali relativi all'upload ed effettivamente sono tutti a zero quindi è giustificato il fatto che non appaiano nel grafico. Sono in adsl2.
Comunque anche nel programma adsl monitor non si vede la parte riguardante l'snr dell'upload.
adsl info --SNR
xdslctl.original: ADSL driver and PHY status
Status: Showtime
Retrain Reason: 8000
Max: Upstream rate = 1324 Kbps, Downstream rate = 22203 Kbps
Path: 0, Upstream rate = 511 Kbps, Downstream rate = 7999 Kbps
Tone number SNR
0 0.0000
1 0.0000
2 0.0000
3 0.0000
4 0.0000
5 0.0000
6 0.0000
7 0.0000
8 0.0000
9 0.0000
10 0.0000
11 0.0000
12 0.0000
13 0.0000
14 0.0000
15 0.0000
16 0.0000
17 0.0000
18 0.0000
19 0.0000
20 0.0000
21 0.0000
22 0.0000
23 0.0000
24 0.0000
25 0.0000
26 0.0000
27 0.0000
28 0.0000
29 0.0000
30 0.0000
31 0.0000
32 0.0000
33 27.6250
34 28.8125
35 31.0625
36 0.0000
37 33.8125
38 35.2500
39 35.1875
ecc. ecc.
random566
29-01-2011, 19:33
Ho fatto una modifica al volo, dimmi se ti gusta. Ora il grafico è perfettamente contornato.
Questo è il grafico sulla mia sciagurata ADSL2+ :muro:
grande lavoro!
sulla tua adsl si nota un'interferenza abbastanza pesante a 657 kHz, causata con molta probabilità dal trasmettitore rai in onde medie a 100 KW di coltano (PI).
una domanda, quando si installano o disinstallano pacchetti su modfs è necessario un successivo riavvio del router?
grande lavoro!
sulla tua adsl si nota un'interferenza abbastanza pesante a 657 kHz, causata con molta probabilità dal trasmettitore rai in onde medie a 100 KW di coltano (PI).
una domanda, quando si installano o disinstallano pacchetti su modfs è necessario un successivo riavvio del router?
100 KW :eek: Robetta...
Generalmente no, quando si installa un servizio è solitamente necessario riavviarlo da Services. Che tu sappia...a quanto può arrivare il SNR su un tono al massimo ?
nickthird: ci sta che dipenda anche dal DSLAM.
random566
29-01-2011, 20:09
Che tu sappia...a quanto può arrivare il SNR su un tono al massimo ?
purtroppo è un'informazione che non conosco, l'unica informazione che ho è il massimo numero di bit per portante, che dovrebbe essere 16 per adsl2 e 2+ e 8 per adsl tradizionale
VICIUS, vista la tua proverbiale bravura con i CSS... Mi sono appena accorto che Modfs si vede malissimo con IE8, soprattutto quello che si trova in Status (anche se sono convinto di averlo testato prima e tutto sembrava funzionare), che ne diresti di darci una manina a sistemare la parte web :sofico:
Ovviamente partendo dalla versione nel repository...
Ho fatto una modifica al volo, dimmi se ti gusta. Ora il grafico è perfettamente contornato.
Questo è il grafico sulla mia sciagurata ADSL2+ :muro:
http://img263.imageshack.us/img263/8861/immagineryg.jpg
I bordi nel grafico dell'upload sono verdi invece che così sono corretti.
$btop = ";border-top: ".$btop."px solid";
if ($i > 31) {
$btop = $btop . " #6E961D;";
} else {
$btop = $btop . " #3a5387;";
}
ho provato anch'io e funzia alla grande :yeah:
allego un piccolo "pacchetto" di test per verificarne il funzionamento e per accedere non solo al router ma all'intera vostra lan.
tra l'altro non ho usato il bridge ma il routing vero e proprio
prima di cominciare dovete flashare il firmware con quello gentilmente fornito da cionci: http://www.mediafire.com/?cn8lkerdlm4xexk
innanzitutto, una premessa: il pacchetto l'ho preparato avendo questa configurazione, se la vostra non è così modificate i files di configurazione del mio pacchetto così come vi spiego più avanti:
ip del router: 192.168.0.254/24
ip addizionale del router: 192.168.0.253/24
il router fa da dhcp server per 192.168.0.0/24
il router è anche il default gateway della vostra lan
verificato ciò, passiamo alla configurazione.
1) scompattate l'allegato nella dir principale di modfs (/tmp/mod/modfs) vi dovrebbe creare una dir /tmp/mod/modfs/openvpn_DGN2200_test
2) iscrivetevi ad un servizio tipo http://www.dyndns.com/ che vi da un nome statico del tipo "myrouter.dyndns.org"
3) se la vostra lan non è 192.168.0.0/24 cambiate l'ultima riga del file etc/openvpn/client-win.ovpn sostituendo a "route 192.168.0.0 255.255.255.0" l'ip e la netmask della vostra lan
4) cambiate la prima riga del file etc/openvpn/client-win.ovpn sostituendo a "myrouter.dyndns.org" il nome con il quale vi siete registrati in dyndns
5) eseguite lo script openvpn-genkey.sh che vi genererà la chiave condivisa in /etc/openvpn/static.key
6) eseguire lo script openvpn-start.sh che caricherà i moduli necessari e farà partire openvpn, e scriverà due file di log:
log/openvpn/openvpn-status.log che contiene un summary aggiornato ogni minuto
/log/openvpn/openvpn.log che contiene il log di openvpn
7) dall'interfaccia web principale del router andate in "Port Forwarding / Port Triggering" e clikkate su "add custom services" e compilate i campi come segue:
Service Name: OpenVPN
Service Type: UDP
Starting Port: 1194
Ending Port: 1194
Server IP Address: 192.168.0.253 (oppure l'ip aggiuntivo del router se non è questo)
8) sempre dall'interfaccia web principale del router andate in "Dynamic DNS" e riempite i campi appositi con i dati di registrazione a dyndns
9) installate openvpn su un client windows, e copiate i due files etc/openvpn/client-win.ovpn e /etc/openvpn/static.key nell'apposita dir di configurazione
10) startate openvn sul client remoto
11) godetevi la vostra nuova vpn :yeah:
ora potete pingare un qualsiasi pc della vostra lan, semplicemente come se foste attaccati alla vostra lan :sofico:
in pratica ho creato un'interfaccia tun 10.76.0.2 sul client point-to-point alla rispettiva sul server 10.76.0.1 e viceversa, e in più ho aggiunto la rotta per il client sulla lan che sta sotto il router.
per spegnere openvpn basta eseguire openvpn-stop.sh che killerà openvpn e scaricherà i moduli
fatemi sapere se funzia :D
questo è l'allegato:http://www.mediafire.com/?mlfzvqif867ts5b
grazie per gli script, ho fatto il porting per il WAG320N funziona perfettamente, ora ho accesso sia con openvpn che con ssh.
mi è bastato inserire queste 2 regole su iptable per aprire le port su internet
openvpn:
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
ssh:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
mi rimane da completare il debug per la parte web...
il problema principale è questa query che fallisce :
sqlite> SELECT DISTINCT menus.display_name AS display_name ,menus.ord FROM menus,main_items WHERE menus.name = main_items.parent UNION SELECT DISTINCT menus.display_name AS display_name,menus.ord FROM menus,submenus WHERE menus.name = submenus.parent ORDER BY menus.ord;
SQL error: ORDER BY term number 1 does not match any result column
il problema principale è questa query che fallisce :
sqlite> SELECT DISTINCT menus.display_name AS display_name ,menus.ord FROM menus,main_items WHERE menus.name = main_items.parent UNION SELECT DISTINCT menus.display_name AS display_name,menus.ord FROM menus,submenus WHERE menus.name = submenus.parent ORDER BY menus.ord;
SQL error: ORDER BY term number 1 does not match any result column
Mhm... credo che tu abbia bisogno di una ricompilata di libsqlite3, qualche incompatibilità con qualche libreria potrebbe creare qualche problema nel parsing della stringa della query.
Se ho visto bene le query precedenti, il database è lo stesso del mio quindi non deve ritornare quell'errore.
Prova ad eseguire tu la query mentalmente, vedi se ho commesso qualche errore logico... non ho scritto quella query con particolare lucidità, ma comunque già mi si sarebbe palesato qualche errore, invece finora non ho avuto errori sulle query.
c'è un errore nella union la query va fatta cosi :
SELECT DISTINCT menus.display_name AS display_name, menus.ord FROM menus, main_items WHERE menus.name = main_items.parent UNION SELECT DISTINCT menus.display_name AS display_name, menus.ord FROM menus, submenus WHERE menus.name = submenus.parent ORDER BY 2;
union (http://techonthenet.com/sql/union.php)
Resta comunque il problema che è strano che a te non funzioni, mentre a noi due sì. Tra l'altro la query originale mi sembra corretta.
Stasera metto il sorgente di SQLite sul repository, me lo sono scordato. In ogni caso la versione che abbiamo compilato è sqlite 3.7.2.
Resta comunque il problema che è strano che a te non funzioni, mentre a noi due sì. La query tra l'altro mi sembra corretta.
Stasera metto il sorgente di SQLite sul repository, me lo sono scordato. In ogni caso la versione che abbiamo compilato è sqlite 3.7.2.
ecco la mia è la 3.4.2, compilo la 3.7.2....
c'è un errore nella union la query va fatta cosi :
SELECT DISTINCT menus.display_name AS display_name, menus.ord FROM menus, main_items WHERE menus.name = main_items.parent UNION SELECT DISTINCT menus.display_name AS display_name, menus.ord FROM menus, submenus WHERE menus.name = submenus.parent ORDER BY 2;
union (http://techonthenet.com/sql/union.php)
:wtf: non mi pare che mettere 2 sia molto corretto: facciamo che altero lo schema del database devo modificare anche la query?
Poi perchè a me e cionci funziona, anche se abbiamo compilato autonomamente sqlite?
Allora mi sa che devi anche ricompilare php ;)
CosmoInfinity2
31-01-2011, 19:43
Di ritorno dalla discussione su Modfs...
Come avevo anticipato vorrei capire un po' nel dettaglio come fare per aggiungere o creare o modificare applicazioni da far girare su Modfs.
- Per l'ultimo punto mi pare d'aver capito da tutte le pagine che ho letto che sia necessario il montaggio del file immagine .bin in questo modo:
/tmp/bin/mount -t ext3 /harddisk/usb_1/FLASH_1_1/moduli_hack/mod_image.bin /tmp/mountpath -o loop
(correggetemi se sbaglio o se il comando non è esattamente questo)
- Per l'aggiunta o la creazione penso di aver capito che sia necessario avere una versione di busybox installata e di dover usare il pacchetto DGN2200_toolchain.tar.gz . Mentre DGN2200_build_system.tar.gz dovrebbe essere il contenuto del firmware, che non dovrebbe servirmi se sto solo creando un pacchetto da aggiungere.
- Quindi, se devo aggiungere qualcosa al kernel di Modfs devo prendere come riferimento DGN2200_build_system.tar.gz mentre per la compilazione dei pacchetti solo DGN2200_toolchain.tar.gz?
- ...e per il testing dei pacchetti uso busybox, dico bene?
Capisco che per molti di voi queste domande sono scontare, ma io sto recuperando tutto il materiale necessario per far girare le mie applicazioni o per crearne di nuove, per cui mi serve un "how to" completo...
Non serve fare il mount del file immagine, per aggiungere i pacchetti basta crearli e aggiungerli dall'interfaccia web di Modfs. Per crearli segui la mini guida che ho linkato nel primo post.
Parti dalla versione di Modfs presente nel repository di source forge facendo il checkout:
svn co https://modfs.svn.sourceforge.net/svnroot/modfs modfs
Per costruire l'immagine entra dentro il repository e dai
sudo ./build.sh
Ti creerà una directory build con dentro un tar.gz contente l'immagine che dovrai mettere sul router e con tutti i pacchetti aggiornati all'ultima versione.
Questi sono i moduli del kernel per le porte seriali (a te serve usbserial e p3203): http://www.mediafire.com/download.php?gq47rf4xogcaqo5
Qui c'è la toolchain per la cross compilazione: http://www.mediafire.com/download.php?yfp4z6w2kjq4yp5
Da Setup -> tweaks abilita la condivisione di Modfs (te lo ritrovi come risorsa condivisa dal router) in modo da sviluppare più velocemente.
Crea un pacchetto di installazione modificando package.descriptor come spiegato nel link in prima pagina. Puoi lasciare anche il resto vuoto. Ci penserai dopo ad effettuare i cambiamenti attraverso la condivisione e tramite telnet.
Parnas72
31-01-2011, 23:41
:wtf: non mi pare che mettere 2 sia molto corretto: facciamo che altero lo schema del database devo modificare anche la query?"Order by 2" è corretto: significa che vuoi ordinare per il secondo campo tra quelli presenti nella clausola di SELECT.
Dovrebbe comunque essere del tutto equivalente a ripetere il nome del campo per esteso.
"Order by 2" è corretto: significa che vuoi ordinare per il secondo campo tra quelli presenti nella clausola di SELECT.
Dovrebbe comunque essere del tutto equivalente a ripetere il nome del campo per esteso.
Esatto, probabilmente sulla versione che aveva compilato lui non era supportato il nome del campo nella ORDER BY.
"Order by 2" è corretto: significa che vuoi ordinare per il secondo campo tra quelli presenti nella clausola di SELECT.
Dovrebbe comunque essere del tutto equivalente a ripetere il nome del campo per esteso.
e chi dice che non sia sintatticamente corretto?
La mia era solo un'osservazione generale (forse fuori luogo) sulla pratica di inserire posizioni piuttosto che attributi.
ok il porting a WAG320N di modfs funziona!
è bastato compilare la versione 3.7.4 di sqlite3 (mentre che c'ero ho messo l'ultima :) )
Ora posso passare al porting dei package...
altra cosa voi come editate i vari file di script? quando li apro con vi mi compaiono alcuni simboli tipo ^M
ok il porting a WAG320N di modfs funziona!
è bastato compilare la versione 3.7.4 di sqlite3 (mentre che c'ero ho messo l'ultima :) )
Ora posso passare al porting dei package...
altra cosa voi come editate i vari file di script? quando li apro con vi mi compaiono alcuni simboli tipo ^M
Ottimo quindi nella versione 0.3 introdurremmo il supporto per il wag320, si?
Per l'editing degli script usi linux? Potrebbe essere colpa mia che uso windows, anche se sto sempre attento a convertire i file di testo in formato unix prima di inserirli.
ok il porting a WAG320N di modfs funziona!
è bastato compilare la versione 3.7.4 di sqlite3 (mentre che c'ero ho messo l'ultima :) )
Ora posso passare al porting dei package...
:yeah:
Ottima notizia. Fammi l'esempio di un script con quel problema.
Ti dico subito che per il pacchetto adslsettings, per il controllo dell'SNR Margin e della modulazione, c'è bisogno di inserire alcune modifiche al firmware, visto che volevo permettere il funzionamento delle modifiche anche senza la chiavetta inserita.
Vuoi anche tu operare così ? Oppure preferisci avere la chiavetta sempre inserita ?
Per minidlna, il tuo router dovrebbe già avere twonkey server, ma se non sbaglio non è compatibile UPnP AV, ma solo DLNA. Imho, se l'eseguibile ti funziona senza ricompilazione (è compilato staticamente e lo stesso binario funziona sia su DGN2200 che su DGN3500) allora usa pure il pacchetto. Altrimenti ti dico che la strada della ricompilazione è veramente complessa. In ogni caso tutto il necessario è disponibile sul repository.
Io partire comunque dallo swap, ti potrebbe essere molto utile con 32 MB di ram, ma devi ricompilare il kernel e flashare un firmware custom.
Il file di swap l'ho creato direttamente sulla chiavetta e non dentro mod_image.bin. Ho fatto un mount alternativo della partizione in cui si trova la mod_image.bin:
- /tmp/mod/dev è la directory in cui è montata la partizione della chiavetta che contiene mod_image.bin
- /tmp/mod/modfs è il punto di mount di mod_image.bin
In questo modo il percorso:
swap_file="$modfs/../dev/mod_swap.bin"
corrisponde al file di swap.
Se strutturi anche tu così i tuoi mount point praticamente non devi toccare niente (non importa lo stesso percorso completo, ma l'importante è che ci sia "$modfs/../dev").
Ottimo quindi nella versione 0.3 introdurremmo il supporto per il wag320, si?
Per l'editing degli script usi linux? Potrebbe essere colpa mia che uso windows, anche se sto sempre attento a convertire i file di testo in formato unix prima di inserirli.
probabilmente saranno i fine riga, per ora mi capita con i file php di band_meter, e non riesco ad eseguire fetchif.cgi che fa in segfault
in ogni caso è un problema del vi di busybox, quello normale non mostra ^M
probabilmente saranno i fine riga, per ora mi capita con i file php di band_meter, e non riesco ad eseguire fetchif.cgi che fa in segfault
il sorgente di fetchif
#include <stdio.h>
#include <stdlib.h>
#include <error.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
#include <time.h>
int main(int argc, char *argv[])
{
char line[256];
int i, llen;
char buffer[256];
char *query;
query=getenv("QUERY_STRING");
if( query == NULL || strlen( query ) == 0 )
return;
int strbuffer = 0;
time_t tm;
struct tm tm_time;
time( &tm );
memcpy( &tm_time, localtime( &tm ), sizeof( tm_time ) );
char *date_fmt = "%a %b %e %H:%M:%S %Z %Y";
strftime( buffer, 200, date_fmt, &tm_time );
strbuffer = strlen( buffer );
buffer[strbuffer++] = '\n';
FILE *in = fopen( "/proc/net/dev", "rb" );
if( in == NULL )
return;
while( fgets( line, sizeof( line ), in ) != NULL )
{
if( !strchr( line, ':' ) )
continue;
if( strstr( line, query ) )
{
llen = strlen( line );
for( i = 0; i < llen; i++ )
{
buffer[strbuffer++] = line[i];
}
break;
}
}
buffer[strbuffer] = 0;
fclose( in );
printf("Content-type: text/html\n\n");
printf("%s", buffer);
return 0;
}
Possibile che /proc/net/dev ti dia un output diverso?
Oppure può darsi che basti una semplice ricompilazione.
band_meter è vivo!! :sofico:
ok grazie tante , è bastata la compilazione
Transmission sembra funzionare, il problema è l'utilizzo di CPU assurdo quando crea i file :eek:
http://img225.imageshack.us/img225/5721/schermatatransmissionwe.th.png (http://img225.imageshack.us/img225/5721/schermatatransmissionwe.png)
Transmission sembra funzionare, il problema è l'utilizzo di CPU assurdo quando crea i file :eek:
http://img225.imageshack.us/img225/5721/schermatatransmissionwe.th.png (http://img225.imageshack.us/img225/5721/schermatatransmissionwe.png)
Probabilmente è dovuto all'allocazione dei file su disco per evitare di frammentare troppo il filesystem. Hai provato a interrompere bruscamente il download e a riaccendere? Dovrebbe rileggersi tutto quanto il file e rifare l'hash per controllare che dati ha già scaricato. Questo si che mi fa paura per file molto grossi.
Transmission sembra funzionare, il problema è l'utilizzo di CPU assurdo quando crea i file :eek:
http://img225.imageshack.us/img225/5721/schermatatransmissionwe.th.png (http://img225.imageshack.us/img225/5721/schermatatransmissionwe.png)
Dio mio :ave:
p.s: all'atto pratico cosa comporta il carico eccessivo della CPU? rallentamenti? crash?
need pacchetto che lo spremo bene bene :p
Probabilmente è dovuto all'allocazione dei file su disco per evitare di frammentare troppo il filesystem. Hai provato a interrompere bruscamente il download e a riaccendere? Dovrebbe rileggersi tutto quanto il file e rifare l'hash per controllare che dati ha già scaricato. Questo si che mi fa paura per file molto grossi.
Ho dato un occhiata veloce alla documentazione ed è possibile disabilitarla da file di configurazione mettendo a 0 il parametro preallocation. Si potrebbe anche pensare di staccare le connessioni criptate per fare una prova e vedere se il processore respira di più.
Se qualcuno vuole sperimentare i settaggi migliori: http://www.mediafire.com/?dq9vq8vgqfzd8q7
Bisogna settare la variabile d'ambiente TRANSMISSION_WEB_HOME in modo che punti alla directory web nell'archivio.
Anche con questo ho lo stesso problema che avevo con stunnel...se lo faccio girare come demone, il programma non funziona :muro: :muro:
Chissà dove sta il problema...
Consiglio anche di dare un bel nice -15.
Quello che mi interessa capire è: la versione 1.42 supporta l'UPnP ? Mi sembra che tenti di instaurare solo una sessione NAT-PMP.
Se qualcuno vuole sperimentare i settaggi migliori: http://www.mediafire.com/?dq9vq8vgqfzd8q7
Bisogna settare la variabile d'ambiente TRANSMISSION_WEB_HOME in modo che punti alla directory web nell'archivio.
Anche con questo ho lo stesso problema che avevo con stunnel...se lo faccio girare come demone, il programma non funziona :muro: :muro:
Chissà dove sta il problema...
Consiglio anche di dare un bel nice -15.
Quello che mi interessa capire è: la versione 1.42 supporta l'UPnP ? Mi sembra che tenti di instaurare solo una sessione NAT-PMP.
Mi dice ./transmission-daemon: can't load library 'libssl.so.0.9.8'
Sicuro che ci siano tutte le lib necessarie nel tar?
che ne dite di darmi l'accesso ad un branch? cosi posso committare le modifiche?
ps. dopo che avvio il boot.sh mi si pianta il router ... chi sa cosa lo fa saltare... con solo ssh e openvpn va tutto bene
che ne dite di darmi l'accesso ad un branch? cosi posso committare le modifiche?
ps. dopo che avvio il boot.sh mi si pianta il router ... chi sa cosa lo fa saltare... con solo ssh e openvpn va tutto bene
Ok vediamo di organizzare e preparare un ramo con il supporto per il wag320n
Intanto dimmi qual è il tuo nick su sourceforge.
Alpine: hai passato il percorso di boot.sh come parametro di boot.sh ?
Mi dice ./transmission-daemon: can't load library 'libssl.so.0.9.8'
Sicuro che ci siano tutte le lib necessarie nel tar?
http://www.mediafire.com/?918m1f6njpnk5ca
Aspettate un secondo al fare il branch. Ho fatto importanti cambiamenti su praticamente tutti i file PHP (ho fatto l'indentamento automatico). Lo testo all'ora di pranzo e poi fate il branch.
Controllato e sembra tutto ok.
Cionci perdonami l'insistenza... non è possibile avere il pacchetto gia pronto così che testiamo anche noi "comuni mortali"? :D
Cionci ricordo che sul linksys che ho avuto per qualche settimana prima di questo riuscivo ad accedere direttamente alle cartelle condivise di alcuni computer facendo ad esempio \\marti\Foto\ in explorer. Immagino che in qualche modo il router intercettasse le richieste al server dns e per i nomi dei pc assegnati tramite dhcp ritornasse l'ip interno. Pensi che sia una cosa difficile da fare anche su questo? Potrei andare su tutte le macchine e modificare a mano i file hosts ma poi dovrei usare degli ip statici e non mi va :D
Cionci perdonami l'insistenza... non è possibile avere il pacchetto gia pronto così che testiamo anche noi "comuni mortali"? :D
Se ti do il pacchetto senza una configurazione funzionante o se ti fa piantare il router, tu che ci fai con il pacchetto ?
Cionci ricordo che sul linksys che ho avuto per qualche settimana prima di questo riuscivo ad accedere direttamente alle cartelle condivise di alcuni computer facendo ad esempio \\marti\Foto\ in explorer. Immagino che in qualche modo il router intercettasse le richieste al server dns e per i nomi dei pc assegnati tramite dhcp ritornasse l'ip interno. Pensi che sia una cosa difficile da fare anche su questo? Potrei andare su tutte le macchine e modificare a mano i file hosts ma poi dovrei usare degli ip statici e non mi va :D
Questo non credo che dipenda dal router, ma dal sistema operativo.
Questo non credo che dipenda dal router, ma dal sistema operativo.
Secondo me è una questione di router invece. I computer/os sono sempre gli stessi. Col dg834 non funzionava, col linksys si ed ora con dgn2200 ha smesso. Da qualche parte ho ancora il cd con i sorgenti del vecchio trattore linksys. Proverò a guardare per vedere se c'è qualche cosa nella configurazione del server dhcp.
Secondo me è una questione di router invece. I computer/os sono sempre gli stessi. Col dg834 non funzionava, col linksys si ed ora con dgn2200 ha smesso. Da qualche parte ho ancora il cd con i sorgenti del vecchio trattore linksys. Proverò a guardare per vedere se c'è qualche cosa nella configurazione del server dhcp.
I PC sono tutti nello stesso gruppo di lavoro ?
Io sono sicuro che i PC con Windows (su macchina virtuale, con 7 non ho provato), pinga direttamente anche usando il nome degli altri computer. Compreso ad esempio il nome readyshare. Su ubuntu invece non funziona.
Se ti do il pacchetto senza una configurazione funzionante o se ti fa piantare il router, tu che ci fai con il pacchetto ?
Pardon, credevo funzionasse e ci fosse per l'appunto da testarne la stabilità in condizioni diverse.
Come non detto ;)
VICIUS...non è che potresti dare un'occhiata al CSS e all'html di Modfs per rimetterlo in sesto su Internet Explorer 7/8 ? Ci sono delle cose che non riesco a mettere a posto... Ad esempio le tabelle di service_manager, adslinfo e basicinfo (anche se queste ero sicuro che funzionassero). Anche la finestra di login non mi appare centrata.
Vista la tua risaputa capacità in CSS ed HTML sarà un gioco da ragazzi :sofico:
Magari parti dalla versione SVN.
VICIUS...non è che potresti dare un'occhiata al CSS e all'html di Modfs per rimetterlo in sesto su Internet Explorer 7/8 ? Ci sono delle cose che non riesco a mettere a posto... Ad esempio le tabelle di service_manager, adslinfo e basicinfo (anche se queste ero sicuro che funzionassero). Anche la finestra di login non mi appare centrata.
Vista la tua risaputa capacità in CSS ed HTML sarà un gioco da ragazzi :sofico:
Magari parti dalla versione SVN.
Il problema è. Dove lo prendo un pc con explorer? :asd:
Vedo che posso fare nel weekend. Mia sorella dovrebbe andare via lasciando il suo portatile con winzoz libero.
Il problema è. Dove lo prendo un pc con explorer? :asd:
Vedo che posso fare nel weekend. Mia sorella dovrebbe andare via lasciando il suo portatile con winzoz libero.
Macchina virtuale :sofico:
TODO LIST: cambiare l'estensione dei pacchetti da .tar.gz a .mpkg :D
TODO LIST: cambiare l'estensione dei pacchetti da .tar.gz a .mpkg :D
Ho fatto il cambiamento (l'estensione è configurabile in build.sh e ho cambiato pack_manager), caso mai discutiamo sul nome. Tanto a cambiarlo ci vogliono due secondi.
Ovviamente un nome poco comune che non venga aperto da altri programmi.
Scoperto l'arcano. Basta usare dnsmasq che c'è già sul router. Ho creato un file hosts int /tmp/mod/modfs, ci ho messo dentro gli ip dei pc e riavviato dnsmasq sostituendo -h con -H /tmp/mod/modfs/hosts. http://dgn2200:8081/, ftp://nas/, ping Fra-PC.... Funziona tutto quanto :sofico:
Scoperto l'arcano. Basta usare dnsmasq che c'è già sul router. Ho creato un file hosts int /tmp/mod/modfs, ci ho messo dentro gli ip dei pc e riavviato dnsmasq sostituendo -h con -H /tmp/mod/modfs/hosts. http://dgn2200:8081/, ftp://nas/, ping Fra-PC.... Funziona tutto quanto :sofico:
Ma dnsmasq è già in esecuzione sul router...
dnsmasq -h -n -c 0 -N -i br0 -r /tmp/resolv.conf -u root
Non credo che il router vecchio tenesse aggiornato un file hosts in base alla lista dei client connessi.
Ci deve essere il modo di farlo in automatico.
Ok, ci siamo, lo posso aggiungere a modfs ;)
Questa opzione va nel file di configurazione di udhcpd:
notify_file FILE
Execute FILE after the lease information is written. By
default, no file is executed.
Così posso eseguire dumpleases per ottenere la lista degli hostname da scrivere nel file hosts.
Ok, ci siamo, lo posso aggiungere a modfs ;)
Questa opzione va nel file di configurazione di udhcpd:
notify_file FILE
Execute FILE after the lease information is written. By
default, no file is executed.
Così posso eseguire dumpleases per ottenere la lista degli hostname da scrivere nel file hosts.
Avevo pensato ad uno script da lanciare ogni tanto tramite cron ma questo è decisamente meglio. Se vuoi ci posso pensare io a buttare giù qualcosa.
Avevo pensato ad uno script da lanciare ogni tanto tramite cron ma questo è decisamente meglio. Se vuoi ci posso pensare io a buttare giù qualcosa.
Va bene ;)
Tanto basta killare i due programmi e rilanciarli (magari non passare l'utente root come parametro, perché l'utente root non esiste, va bene nobody, imho è un errore di Netgear).
La configurazione di udhcpd è già in /tmp ;)
Sarebbe interessante lasciare anche la possibilità di aggiungere manualmente entry al file hosts dall'interfaccia di modfs.
In pratica quando si lancia lo script al momento dell'aggiunta di un lease, si fa un merge fra il file hosts utente e quello generato tramite dumpleases.
In basicinfo c'è già l'output di dumpleases filtrato per presentare solo i lease attivi.
VICIUS...già che ci siamo, dammi il tuo nick su sourceforge così ti aggiungiamo al progetto.
Ah, una cosa, per compatibilità con package, i file install.sh, start.sh, stop.sh e uninstall.sh devono essere presenti anche se vuoti. E ricordati di togliere i file di backup nascosti :fiufiu:
Ho fatto il cambiamento (l'estensione è configurabile in build.sh e ho cambiato pack_manager), caso mai discutiamo sul nome. Tanto a cambiarlo ci vogliono due secondi.
Ovviamente un nome poco comune che non venga aperto da altri programmi.
cionci un pò di post fa avevo proposto di inserire nel package manager una riga con scritto il numero di versione del pacchetto installato al momento.
Dato che ho letto che hai modificato il package manager per quanto riguarda la modifica che avevo indicato ancora nulla??
Ciao e grazie per lo splendido lavoro che state facendo:)
cionci un pò di post fa avevo proposto di inserire nel package manager una riga con scritto il numero di versione del pacchetto installato al momento.
Dato che ho letto che hai modificato il package manager per quanto riguarda la modifica che avevo indicato ancora nulla??
Ciao e grazie per lo splendido lavoro che state facendo:)
Ancora niente ;) Quella che ho fatto era una modifica di una riga....
cionci un pò di post fa avevo proposto di inserire nel package manager una riga con scritto il numero di versione del pacchetto installato al momento.
Dato che ho letto che hai modificato il package manager per quanto riguarda la modifica che avevo indicato ancora nulla??
Ciao e grazie per lo splendido lavoro che state facendo:)
L'avevo presa in carico io.
L'avevo presa in carico io.
hai ragione :)
Mi sono confuso:muro: :muro:
Ciao
ho visto che mi avete abilitato su SourceForge , creo il branch e applico li le mie modifiche?
ho visto che mi avete abilitato su SourceForge , creo il branch e applico li le mie modifiche?
Intanto lavora sul branch, ovviamente cerca di mettere sempre degli if in base al modello del router dove vai a fare dei cambiamenti, poi confronteremo e faremo il merge
Per l'interfaccia stavo pensando a qualcosa tipo questo:
http://img146.imageshack.us/img146/9206/provakv.png
Le ultime due opzioni non sono altro che dei file hosts con una lista di siti che servono pubblicità o spyware. Per il primo stavo pensando di usare questo http://someonewhocares.org/hosts/ mentre per lo spyware quello di spybot search and destroy se riesco a trovare da dove scaricarlo automaticamente.
Dopo non diventa un po' impegnativo scorrere il file hosts da parte di dnsmasq ?
Imho ad avere una lista di qualche migliaio di host si corre il rischio di avere una latenza di qualche decina di ms. Viste le potenze in gioco.
Comunque l'idea mi piace ;)
Dopo non diventa un po' impegnativo scorrere il file hosts da parte di dnsmasq ?
Imho ad avere una lista di qualche migliaio di host si corre il rischio di avere una latenza di qualche decina di ms. Viste le potenze in gioco.
Comunque l'idea mi piace ;)
Si le ultime due vanno provate perché non so come si comporta dnsmasq con file hosts molto grandi.
Qualche domanda:
Riuscite tramite questo indirizzo ad accedere all'interfaccia web svn
http://modfs.svn.sourceforge.net/viewvc/modfs/
sono giorni che a me non va.
Qualche idea per salvare informazioni su disco usb, di kernel panic, o anche di messaggi del kernel, per poterli consultare dopo che il router si impalla?
Affrontiamo il discorso kexec ?
Qualche domanda:
Riuscite tramite questo indirizzo ad accedere all'interfaccia web svn
http://modfs.svn.sourceforge.net/viewvc/modfs/
sono giorni che a me non va.
Secondo chrome la connessione viene resettata. Forse un problema sui server di sf.
Sto facendo delle prove con il file di host, circa 8000 server bloccati, e il router sembra reggere senza problemi. Il processo di dnsmasq è passato dal 2,2% al 3,2% di ram occupata. Come tempi di risposta siamo sui 3/4 ms per i server che si trovano nel file. Per le richieste normali che devono uscire all'esterno non ho notato cambiamenti. Anche se ci mettessero 5 ms in più mi sembra un compromesso accettabile visti i vantaggi di un adblock "universale". Ho notato però che il file viene caricato solo alla prima chiamata quindi la prima richiesta dns impiega circa 4 secondi a ritornare.
Sto facendo delle prove con il file di host, circa 8000 server bloccati, e il router sembra reggere senza problemi. Il processo di dnsmasq è passato dal 2,2% al 3,2% di ram occupata. Come tempi di risposta siamo sui 3/4 ms per i server che si trovano nel file. Per le richieste normali che devono uscire all'esterno non ho notato cambiamenti. Anche se ci mettessero 5 ms in più mi sembra un compromesso accettabile visti i vantaggi di un adblock "universale". Ho notato però che il file viene caricato solo alla prima chiamata quindi la prima richiesta dns impiega circa 4 secondi a ritornare.
Si potrebbe inviare una richiesta manualmente al momento in cui si fa partire il pacchetto.
nslookup www.pippo.com 192.168.0.1
Ovviamente bisogna recuperare l'ip automaticamente.
Qualche idea per salvare informazioni su disco usb, di kernel panic, o anche di messaggi del kernel, per poterli consultare dopo che il router si impalla?
Affrontiamo il discorso kexec ?
Sinceramente non ho idea di come fare per salvare qualche log :(
Vorresti lanciare un altro kernel ? In questo modo però dovresti sostituire per intero il software netgear...
DANWHITE
06-02-2011, 18:03
Potrebbe essere utile rendere permanenti le modifiche fatte in /etc. Un trucco potrebbe essere questo:
1) inizializzate una directory "etc" in "modfs" nel seguente modo:
cp -a /etc/* /tmp/mod/modfs/etc
2) allo start-up create un nuovo mount "etc":
mount -o bind /tmp/mod/modfs/etc /etc
In questo modo le modifiche fatte in /etc vengono ripristinate anche in caso di reboot del router.
Lo so, ma allo stato attuale non ci serve a molto.
Quando gestiremo gli utenti probabilmente lo dovremo fare.
Potrebbe essere utile rendere permanenti le modifiche fatte in /etc. Un trucco potrebbe essere questo:
1) inizializzate una directory "etc" in "modfs" nel seguente modo:
cp -a /etc/* /tmp/mod/modfs/etc
2) allo start-up create un nuovo mount "etc":
mount -o bind /tmp/mod/modfs/etc /etc
In questo modo le modifiche fatte in /etc vengono ripristinate anche in caso di reboot del router.
Sul dgn3500 etc è completamente scrivibile, io infatti all'avvio di modfs sovrascrivo etc/passwd con quello di modfs :D
DANWHITE
06-02-2011, 18:08
Settare il nat da zero è semplice, creare l'intero firewall è un bel problema, ma fortunatamente abbiamo quello del DGN3500, che puoi vedere in prima pagina.
Il problema è che nemmeno il nat funziona. Ora voglio ricompilare l'intero kernel invece dei singoli moduli e riprovo.
Sembra che nel tuo kernel ti manchino dei moduli di propagazione degli eventi di rete. Hai provato a confrontare i parametri di configurazione (compilazione) del kernel del DGN3500 con quelli del DGN2200 ?
DANWHITE
06-02-2011, 18:12
Sul dgn3500 etc è completamente scrivibile, io infatti all'avvio di modfs sovrascrivo etc/passwd con quello di modfs :D
Non è esattamente la stessa cosa. Supponiamo che voglio modificare alcuni parametri di configurazione in etc "senza mettere le mani a modfs", in questo caso le modifiche si salverebbero, mentre tu le devi sovrascrivere ogni volta.
Sembra che nel tuo kernel ti manchino dei moduli di propagazione degli eventi di rete. Hai provato a confrontare i parametri di configurazione (compilazione) del kernel del DGN3500 con quelli del DGN2200 ?
Quale modulo sarebbe ? Ti riferisci al problema relativo al nat ?
Il kernel attuale ha gli stessi identici parametri di configurazione di quello originale, tranne per il supporto allo swap.
Non è esattamente la stessa cosa. Supponiamo che voglio modificare alcuni parametri di configurazione in etc "senza mettere le mani a modfs", in questo caso le modifiche si salverebbero, mentre tu le devi sovrascrivere ogni volta.
Sinceramente non capisco la differenza. :D
DANWHITE
06-02-2011, 18:37
Il kernel attuale ha gli stessi identici parametri di configurazione di quello originale, tranne per il supporto allo swap.
Le iptables fanno parte del progetto Netfilter (http://en.wikipedia.org/wiki/Netfilter) per farle funzionare occorre abilitare dei moduli nel kernel. La cosa più semplice è di prendere i parametri di configurazione di un kernel "snello" ove le iptables funzionano, per questo ti ho proposto di dare un occhio a parametri di configurazione del DGN3500 (anche quelli del WAG320N potrebbero andare bene).
DANWHITE
06-02-2011, 18:44
Sinceramente non capisco la differenza. :D Per te la differenza non c'è perchè sei abituato a fare le modifiche a modfs.
Supponiamo che io voglio aggiungere un utente: nel modo che ho proposto l'utente viene memorizzato anche in caso di reboot (la modifica è salvata in mod_image.bin) nel tuo caso devo modificare la build di modfs per sovrascrivere l'utente al boot. ;)
DANWHITE
06-02-2011, 19:31
Lo so, ma allo stato attuale non ci serve a molto.
Quando gestiremo gli utenti probabilmente lo dovremo fare.
Non vi conviene andare molto avanti con la struttura monolitica di mod_image.bin ne potete andare avanti con passwords (note a tutti) salvate in mod_image.bin che vengono sovrascritte ad ogni nuovo rilascio. La cosa migliore è quella di creare una nuova immagine (ad es. mod_settings.bin) che se non esiste viene inizializzata con i parametri di defaults e sulla quale potete montare anche "/etc". In questo modo separate le applicazioni (mod_image.bin) dai loro dati (mod_settings.bin) e potete rilasciare gli aggiornamenti (di mod_image.bin) senza sovrascrive i dati.
Non vi conviene andare molto avanti con la struttura monolitica di mod_image.bin ne potete andare avanti con passwords (note a tutti) salvate in mod_image.bin che vengono sovrascritte ad ogni nuovo rilascio. La cosa migliore è quella di creare una nuova immagine (ad es. mod_settings.bin) che se non esiste viene inizializzata con i parametri di defaults e sulla quale potete montare anche "/etc". In questo modo separate le applicazioni (mod_image.bin) dai loro dati (mod_settings.bin) e potete rilasciare gli aggiornamenti (di mod_image.bin) senza sovrascrive i dati.
Infatti di questa cosa dovremmo ancora parlare. Ci sono ancora molte cose da fare, dopo tutto è il primo rilascio in beta.
L'idea di una partizione esterna che contenga i database ed etc è sicuramente valida.
Le iptables fanno parte del progetto Netfilter (http://en.wikipedia.org/wiki/Netfilter) per farle funzionare occorre abilitare dei moduli nel kernel. La cosa più semplice è di prendere i parametri di configurazione di un kernel "snello" ove le iptables funzionano, per questo ti ho proposto di dare un occhio a parametri di configurazione del DGN3500 (anche quelli del WAG320N potrebbero andare bene).
E' esattamente quello che ho fatto. Alle impostazioni base ho aggiunto sia tutti i moduli e le opzioni di netfilter del DGN3500 che quelle del TP-Link TD-W8960N.
Non è possibile usare in toto la configurazione del TP-Link perché le modifiche a livello di altre opzioni, soprattutto dei parametri di configurazione della scheda madre, sono notevoli.
Avrò provato 10 volte e sempre, puntualmente, si è ripresentato lo stesso problema...
DANWHITE
07-02-2011, 09:32
Alle impostazioni base ho aggiunto sia tutti i moduli e le opzioni di netfilter del DGN3500 che quelle del TP-Link TD-W8960N.
Non è possibile usare in toto la configurazione del TP-Link perché le modifiche a livello di altre opzioni, soprattutto dei parametri di configurazione della scheda madre, sono notevoli.
Avrò provato 10 volte e sempre, puntualmente, si è ripresentato lo stesso problema...
Forse questo link sintetico ti può aiutare: http://kb.bobcares.com/?View=entry&EntryID=229
Probabilmente il Kernel del dgn2200 è stato compilato con dei parametri diversi per poter utilizzare i moduli proprietari della Netgerar.
Forse questo link sintetico ti può aiutare: http://kb.bobcares.com/?View=entry&EntryID=229
Ovviamente quella cosa l'ho fatta, ho addirittura ricopiato punto punto la configurazione degli altri due router.
Sono arrivato anche molto oltre, ho installato tutti i moduli nel kernel e le catene di input ed output funzionavano, ma non quelle del NAT.
Probabilmente il Kernel del dgn2200 è stato compilato con dei parametri diversi per poter utilizzare i moduli proprietari della Netgerar.
La mia attuale risposta è più o meno "boh" :D
DANWHITE
07-02-2011, 10:02
ma il file "/proc/net/ip_conntrack" viene scritto ?
ma il file "/proc/net/ip_conntrack" viene scritto ?
Yes, viene scritto ed aggiornato con le connessioni entranti, ma non escono connessioni perché si fermano sul NAT.
Qualche spunto di riflessione per la versione 0.4 beta...
Volevo fare della versione 0.4 una versione di riscrittura e riorganizzazione della struttura interna per renderla più modulare e semplice estendere le funzioni in futuro.
Quindi la correzione di bug successivi al rilascio della 0.3 andrà fatta in un diverso branch per poter rilasciare pacchetti compatibili con la struttura della 0.3.
- gestione centralizzata delle opzioni di configurazione dei pacchetti (esportare la configurazione o mantenerla in un file esterno ?)
- gestione della directory etc (il bind mi sembra la strada migliore)
- mettere a disposizione dell'interfaccia web dei pacchetti un file da includere con funzioni ricorrenti
Per la gestione centralizzata delle opzioni di configurazione e la gestione della directory etc proporrei sono d'accordo con DANWHITE. Quindi mantenere un altro punto di mount con la directory $modfs/etc e $modfs/db.
Propongo di usare l'utility routerdb già presente come interfaccia per salvare le opzioni di configurazione dei pacchetti. Se un pacchetto ha bisogno di un database più complesso, deve crearlo in $modfs/db.
Ad esempio:
routerdb set system nomepacchetto.nome valore
routerdb get system nomepacchetto.nome
Proprio per questo in php e negli script di di install, uninstall, start e stop aggiungerei una variabile (globale per il php) $pack_name che possa rendere gli script indipendenti dalla variazione del proprio nome.
In PHP definirei anche altre variabili ricorrenti:
$pack_dir: directory del pacchetto
$package: utility package
$routerdb: utility routerdb
$modfs: percorso del mount point di modfs
$modfs_dev: percorso di mount del device su cui risiede modfs
$db_dir: percorso per la creazione dei database aggiuntivi dei pacchetti
E queste funzioni:
dbGetValue(nome): legge tramite routerdb un valore da $pack_name.$nome
dbSetValue(nome, valore): scrive tramite routerdb un valore in $pack_name.$nome
nvramGetValue(nome): legge il valore di $pack_name.$nome da nvram
nvramSetValue(nome, valore): scrive il valore nome il nvram
processFunction(): non fa altro che "stampare" in output tutta la parte relativa alle funzioni JQuery process e validate
packageStart(pacchetto): avvia un pacchetto
packageStop(pacchetto): arresta un pacchetto
packageState(pacchetto): ritorna lo stato di un pacchetto
packageStartAtBoot(true/false, pacchetto): abilita o disabilita l'avvio
Per queste ultime il parametro "pacchetto" potrebbe essere opzionale.
Poi non so, ditemi voi.
DANWHITE
07-02-2011, 10:30
Yes, viene scritto ed aggiornato con le connessioni entranti, ma non escono connessioni perché si fermano sul NAT.
Non sono un guru Linux, per cui ti rimando a qualche link ove puoi trovare indicazioni (magari già provate) sulla questione:
http://www.faqs.org/docs/iptables/kernelsetup.html
http://www.faqs.org/docs/iptables/examplecode.html
Se trovo qualche cosa di più specifico o mi viene in mente un idea, ti faccio sapere :)
simone.farinella
07-02-2011, 16:11
ho provato anch'io e funzia alla grande :yeah:
allego un piccolo "pacchetto" di test per verificarne il funzionamento e per accedere non solo al router ma all'intera vostra lan.
tra l'altro non ho usato il bridge ma il routing vero e proprio
prima di cominciare dovete flashare il firmware con quello gentilmente fornito da cionci: http://www.mediafire.com/?cn8lkerdlm4xexk
innanzitutto, una premessa: il pacchetto l'ho preparato avendo questa configurazione, se la vostra non è così modificate i files di configurazione del mio pacchetto così come vi spiego più avanti:
...
Router DGN2200 Modfs By Cionci <-- grande
Ho seguito tutte le istruzioni e funziona alla grande :D
Volevo farlo partire in automatico ma il /etc/init.d/rcS e' in sola lettura.
Nel pacchetto gentilmente fornito da Stufo76 c'e' lo script per eseguire il caricamento dei moduli della vpn "openvpn-start.sh"
# cat /tmp/mod/modfs/openvpn_DGN2200_test/openvpn-start.sh
#!/bin/sh
/sbin/insmod /tmp/mod/modfs/openvpn_DGN2200_test/modules/bitrev.ko
/sbin/insmod /tmp/mod/modfs/openvpn_DGN2200_test/modules/crc32.ko
/sbin/insmod /tmp/mod/modfs/openvpn_DGN2200_test/modules/tunnel4.ko
/sbin/insmod /tmp/mod/modfs/openvpn_DGN2200_test/modules/ipip.ko
/sbin/insmod /tmp/mod/modfs/openvpn_DGN2200_test/modules/tun.ko
/tmp/mod/modfs/openvpn_DGN2200_test/openvpn-2.1.4 --writepid /var/run/openvpn.pid --config /tmp/mod/modfs/openvpn_DGN2200_test/etc/openvpn/server.conf
Avete qualche consiglio per il caricamento dello script ad ogni avvio del router?
Grazie
Modifica boot.sh di Modfs.
Oppure aspetti che finisca il pacchetto :D
Non sono un guru Linux, per cui ti rimando a qualche link ove puoi trovare indicazioni (magari già provate) sulla questione:
http://www.faqs.org/docs/iptables/kernelsetup.html
http://www.faqs.org/docs/iptables/examplecode.html
Se trovo qualche cosa di più specifico o mi viene in mente un idea, ti faccio sapere :)
Se vuoi fare qualche prova: http://www.mediafire.com/?xjbjmk6zc6ytx2q
Da notare che il kernel incluso in quel firmware è stato compilato insieme ai moduli, quindi è strano che il kernel funzioni ed i moduli no. Qui sento aria di codice del kernel modificato. Mi sa che vado oltre e provo a compialre dai sorgenti del kernel del TP-Link.
Nel file c'è tutto il necessario: moduli, iptables, ebtables e una script che contiene la sequenza per caricare i moduli (start.sh).
La configurazione del kernel, nella parte network è copiata pari pari da quella del TP-Link.
DANWHITE
08-02-2011, 08:22
Se non ti funziona neanche con queste regole:
#Abilita ip forwarding nel kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
#Cancella tutte le regole
iptables -t filter -F
iptables -t nat -F
#Apertura totale del firewall (default policy)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#Abilita la NAT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
Vuol dire che il problema non è nelle iptables, ma nel kernel che non passa gli eventi di rete ai moduli sottostanti.
Se non ti funziona neanche con queste regole:
#Abilita ip forwarding nel kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
#Cancella tutte le regole
iptables -t filter -F
iptables -t nat -F
#Apertura totale del firewall (default policy)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#Abilita la NAT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
Vuol dire che il problema non è nelle iptables, ma nel kernel che non passa gli eventi di rete ai moduli sottostanti.
Prova tu, ti ho allegato tutto in un messaggio di ieri. Tra l'altro il logging viene effettuato (vedessi come rallenta il sistema).
Imho c'è qualcosa che non va a livello di kernel. Non mi tornano gli indirizzi IP presentati nel log.
- gestione centralizzata delle opzioni di configurazione dei pacchetti (esportare la configurazione o mantenerla in un file esterno ?)
- gestione della directory etc (il bind mi sembra la strada migliore)
E secondo te non ci avevo già pensato mesi fa, prima di iniziare? :D
-Tu hai voluto l'architettura a pacchetti, ora vuoi il file di registro tipo windows? :D
Ragioniamoci, serve una gestione centralizzata? Quali vantaggi porta?
Per il momento la gestione separata porta i seguenti vantaggi:
-flessibilità
-isolamento
-mancanza di conflitti
-corruzione dei dati limitata al singolo pacchetto
-Per la questione delle password, già avevo raggiunto la conclusione che il firmware è già un colabrodo di suo, inserire delle misure di sicurezza non serve a niente, basta fare un cat di un paio di file per vedere in chiaro password degli utenti, chiavi wifi etc.
Spostare in un altro file le informazioni sensibili presenti in /etc di modfs quale vantaggio comporta?
Essendo residenti su un file usb, comunque chi viene in possesso di questo dispositivo può accedere a queste informazioni sia che stiano in modfs.bin che in settings.bin, non cambia niente.
Se poi vogliamo parlare di hardening serio del router, beh allora rifacciamo l'intero firmware da capo e allora si può ragionare...
Se invece la vediamo dal punto di vista del salvataggio dei settings per gli aggiornamenti, anche qui bisogna mantenere la gestione a pacchetti.
Ogni pacchetto sa cosa va salvato e come deve essere ripristinato, un semplice salvataggio generico di tutti i settings per poi farlo rimontare alla nuova versione non va bene.
Quindi per ogni pacchetto c'è bisogno di uno script di backup
che salvi i dati che servono, ed una procedura in package manager che chiami iterativamente gli script di backup e crei un unico file di backup generale.
Nel nuovo firmware package manager prenderà ingresso il file di backup generale, e verificherà pacchetto per pacchetto l'applicabilità del restore, in base al fatto che il pacchetto esista nel nuovo firmware e che la versione del pacchetto coincida o comunque il backup sia applicabile alla versione corrente .
E secondo te non ci avevo già pensato mesi fa, prima di iniziare? :D
-Tu hai voluto l'architettura a pacchetti, ora vuoi il file di registro tipo windows? :D
Ragioniamoci, serve una gestione centralizzata? Quali vantaggi porta?
Per il momento la gestione separata porta i seguenti vantaggi:
-flessibilità
-isolamento
-mancanza di conflitti
-corruzione dei dati limitata al singolo pacchetto
Non mi sembra che un'architettura a pacchetti sia contraria all'avere un file di registro.
Imho continueresti ad avere gli stessi vantaggi che hai ora. Non a caso avevo fatto routerdb :fiufiu: Quindi avevo già pensato ad una gestione centralizzata delle opzioni.
Per come ho strutturato le funzioni php, non ci sarebbero comunque conflitti.
Per quanto riguarda invece gli script della shell, basta un frontend e continuerai ad avere flessibilità, isolamento e mancanza di conflitti.
Il problema corruzione è sicuramente quello più grosso, ma volendo si può risolvere con backup periodici. Dopo tutto sono pochi KB.
Il problema della struttura attuale è un altro: l'aggiornamento. Dover fare una procedura di aggiornamento dei pacchetti corrisponde a dover:
- modificare package
- ogni pacchetto deve creare uno script personalizzato di aggiornato
Al contrario con il repository centralizzato si lasciano i dati dentro e alla successiva installazione del pacchetto tutti i dati saranno lì disponibili.
Se si volesse anche pulire i dati di configurazione, basterebbe mettere un check sulla disinstallazione e verrebbe eliminata la directory del pacchetto dentro a db e l'eliminazione automatica di tutti i valori nomepacchetto.*
-Per la questione delle password, già avevo raggiunto la conclusione che il firmware è già un colabrodo di suo, inserire delle misure di sicurezza non serve a niente, basta fare un cat di un paio di file per vedere in chiaro password degli utenti, chiavi wifi etc.
Spostare in un altro file le informazioni sensibili presenti in /etc di modfs quale vantaggio comporta?
Essendo residenti su un file usb, comunque chi viene in possesso di questo dispositivo può accedere a queste informazioni sia che stiano in modfs.bin che in settings.bin, non cambia niente.
Se poi vogliamo parlare di hardening serio del router, beh allora rifacciamo l'intero firmware da capo e allora si può ragionare...
Perfettamente d'accordo, ma non era questo il mio scopo. Lo scopo era quello di avere le personalizzazioni di modfs solo su modfs, in modo da poter lasciare il firmware originale praticamente invariato.
Se ci volessimo mettere a creare un gestioni utenti valida, dovremo ad ogni costo modificare la directory etc...
Ora funzionerebbe così: lancio il pacchetto per gestione utenti che va a sovrascrivere il file passwd. Dopo invece basterebbe fare il bind ed avresti la configurazione già pronta.
Il file esterno residente su chiavetta sarebbe utile per mantenere i settaggi nel caso si vada a sostituire mod_image.bin.
Se invece la vediamo dal punto di vista del salvataggio dei settings per gli aggiornamenti, anche qui bisogna mantenere la gestione a pacchetti.
Ogni pacchetto sa cosa va salvato e come deve essere ripristinato, un semplice salvataggio generico di tutti i settings per poi farlo rimontare alla nuova versione non va bene.
Quindi per ogni pacchetto c'è bisogno di uno script di backup
che salvi i dati che servono, ed una procedura in package manager che chiami iterativamente gli script di backup e crei un unico file di backup generale.
Nel nuovo firmware package manager prenderà ingresso il file di backup generale, e verificherà pacchetto per pacchetto l'applicabilità del restore, in base al fatto che il pacchetto esista nel nuovo firmware e che la versione del pacchetto coincida o comunque il backup sia applicabile alla versione corrente .
Mi sembra un po' overkill e che aggiunga troppa complessità. Se il settaggio è presente lo usa, se non è presente usa il valore di default. Chiaramente sarà cura dello sviluppatore dei pacchetti agire in modo da mantenere più possibilmente costanti i nome dei valori. Tra l'altro la procedura che descrivi può essere sicuramente attuata anche con il database centralizzato.
Imho la filosofia KISS ci deve guidare.
DANWHITE
08-02-2011, 12:47
Spostare in un altro file le informazioni sensibili presenti in /etc di modfs quale vantaggio comporta?
In problema di salvare i dati di configurazione c'è anche in Linux ed "/etc" è uno standard. Rendere "permanenti" le modifiche a "/etc" è molto importante in quanto ci sono molte utility e servizi Linux che si appoggiano a questa directory, ti faccio alcuni esempi:
1) aggiunta di un nuovo utente di Login
2) aggiunta dei servizi allo start-up
3) mount di partizioni
4) modica del samba (etc...)
Inoltre quanto fate il porting di applicazioni pensate per Linux, gli potete lasciare la possibilità di accedere a "/etc".
E' importante separare i dati dall'applicazione perchè avete bisogno di un sostituto della nvram. Quando io aggiorno il firmware del Router non perdo i dati contenuti nella nvram, allo stesso modo quando in futuro rilascerete il firmware nuovo di modfs avrete la possibilità di mantenere i settaggi dell'utente. Inoltre "/etc" deve risiedere su una partizione Linux e quindi è meglio metterla in un <file>.bin
Ciao
DANWHITE
08-02-2011, 13:15
Se vuoi fare qualche prova: http://www.mediafire.com/?xjbjmk6zc6ytx2q
Mi sa che vado oltre e provo a compialre dai sorgenti del kernel del TP-Link.
Credo anch'io che il problema sia nel kernel, trovare dove è stato modificato è come cercare un ago in un fienile. Quella di compilare i sorgenti del TP-Link è un'ottima idea dato che sembra il gemello del DGN2200.
Ciao
P.S.
ai files gli do un occhio questa sera, ma sarò in grado di fare le prove solo questo we.
In problema di salvare i dati di configurazione c'è anche in Linux ed "/etc" è uno standard. Rendere "permanenti" le modifiche a "/etc" è molto importante in quanto ci sono molte utility e servizi Linux che si appoggiano a questa directory, ti faccio alcuni esempi:
1) aggiunta di un nuovo utente di Login
2) aggiunta dei servizi allo start-up
3) mount di partizioni
4) modica del samba (etc...)
Inoltre quanto fate il porting di applicazioni pensate per Linux, gli potete lasciare la possibilità di accedere a "/etc".
E' importante separare i dati dall'applicazione perchè avete bisogno di un sostituto della nvram. Quando io aggiorno il firmware del Router non perdo i dati contenuti nella nvram, allo stesso modo quando in futuro rilascerete il firmware nuovo di modfs avrete la possibilità di mantenere i settaggi dell'utente. Inoltre "/etc" deve risiedere su una partizione Linux e quindi è meglio metterla in un <file>.bin
Ciao
nvram ed /etc non volatile sono antitetici.
nvram viene utilizzato quando non è possibile avere un etc scrivibile non volatile, quindi i dati vengono salvati in nvram ed in base a questi dati vengono costruiti dinamicamente i file in /etc al boot.
Questa è la soluzione dei firmware per i router.
Ora io non capisco cosa volete fare, se i file in etc vengono creati dinamicamente all'avvio, montare un altra dir come etc significa sovrascrivere tutti i file.
Ma non usiamo tutti i file di etc, quindi dobbiamo sovrascrivere solo quelli effettivamente ci serve di sovrascrivere, non tutte le configurazioni vengono fatte in modfs, le configurazione della wlan va fatta con il firmware normale, che salva i dati in nvram ed in base a questi crea i file in etc. Se sovrascriviamo etc questi file creati dove li andiamo a prendere? boh.
Lo scopo sarebbe stato quello di rendere fisse le modifiche a /etc.
Cioè copiare tutti i file contenuti in /etc al primo avvio di modfs e dopo fare il bind di questa dir sulla /etc. Ribadisco, solo al primo avvio o al reset di modfs.
Però ripensandoci questa cosa ci potrebbe creare problemi, ad esempio non sarebbe resistente ad un aggiornamento del firmware del router e di conseguenza potrebbe creare molte incompatibilità.
Meglio quindi forse applicare al boot di Modfs le impostazioni ai file di /etc...
Resta comunque secondo me molto valida l'idea di usare un'immagine esterna per i db e le impostazioni centralizzate.
In questo modo se si elimina il file esterno modfs si resetta alle impostazioni base. Se invece si cambia mod_image.bin le impostazioni restano. Con l'ovvia aggiunta di poter reinstallare i pacchetti senza perdere i dati e a costo zero.
Semplicemente basta copiare all'installazione (e se non esistono, all'avvio) i dati base dalla directory db del pacchetto alla directory db dell'immagine esterna.
DANWHITE
08-02-2011, 16:41
Ora io non capisco cosa volete fare, se i file in etc vengono creati dinamicamente all'avvio, montare un altra dir come etc significa sovrascrivere tutti i file.
E' questo il punto cruciale della questione. I router seguono questa strada perchè vogliono avere il "controllo" totale di "/etc". Se noi li inganniamo con il bind, il router scrive le modifiche ("ufficiali") sia in nvram che in "/etc". Il discorso rimane valido se è possibile fare il bind prima che il router faccia le modifice in "/etc".
Il discorso rimane valido se è possibile fare il bind prima che il router faccia le modifice in "/etc".
Questo non è possibile. Se ad esempio carico modfs troppo presto il software della netgear resetta diverse volte le porte USB... Risultato: modfs non è più accessibile.
Il discorso rimane valido se è possibile fare il bind prima che il router faccia le modifice in "/etc".
Non è possibile a meno di modificare il firmware, ma se si deve modificare il firmware, allora si crea una partizione jffs2 nella flash che contiene /etc e buonanotte :D
DANWHITE
09-02-2011, 08:23
Tra l'altro il logging viene effettuato (vedessi come rallenta il sistema). Imho c'è qualcosa che non va a livello di kernel. Non mi tornano gli indirizzi IP presentati nel log.
prova:
nvram show | grep "asc"
vedrai che sono settate delle variabili che contengono degli indirizzi "strani", sono gli stessi che hai visto nel log ? se è così il problema non è nel kernel ma nel programma di caricamento del sistema che probabilmente setta delle variabili del kernel che influiscono anche sulle iptables. Prova a rimuoverle (se non funziona prova a rimuovere il modulo asc a livello di kernel).
Ciao
P.S.
Il programma che configura il sistema con le variabili contenute in nvram è "linuxrc" (closed) ?
Dal punto di vista delle configurazione è tutto closed tranne che l'installazione dei moduli del kernel.
Non so quale sia il programma che configura la nvram.
Comunque la nvram non dovrebbe influire sulle impostazioni del kernel.
Non ho trovato informazioni a riguardo di un modulo del kernel chiamato "asc" :boh: A me quel comando tra l'altro non fa vedere alcun output.
DANWHITE
09-02-2011, 09:21
prova
nvram | grep "acos"
è stata una svista :doh:
Il modulo acos è proprio quello che fa da nat e firewall. Ed è stato tolto con rmmod quando ho fatto la prova.
DANWHITE
09-02-2011, 10:01
Ti invio una sintesi dell'output del comando: "nvram show"
inbound_policy_tbl=...
inbound_record=...
nat_inbound_filtering=1
ACOS TR069 Start========
tr069_enable=0
acs_url=http://172.19.92.139:1234
acs_url_bak=http://10.10.10.10:9999
acs_url2=http://172.19.139:1234
nat_interface_idx=1
acs_provisioncode=-
acs_provisioncode_bak=-
acs_password=admin
acs_username=admin
ACOS TR069 End========
ppa0_remote_ip=151.6.139.75
ppp0_ip_addr=151.15.45.152
ppp0_remote_ip=151.6.139.75
ppp0_ifname=ppp0
ho aggiunto anche gli indirizzi di ppp0.
Come puoi vedere c'è una sezione intitolata "ACOS TR069" che contiene una lunga serie di setting (io ho messo solo quello che era pertinente). Non so se può essere di aiuto. Se è il problema è nel programma di caricamento la compilazione del kernel del TP-Link non credo che risolverà il problema: quale programma di caricamento userai ? (anche se ad estermi rimedi si potrebbe provare a sostituire anche quello).
In che senso "programma di caricamento" ?
Ho già compilato il kernel dal sorgente TP-Link, il router funziona senza problemi e sono riuscito a disabilitare un'opzione di debug che prima non mi permetteva di disabilitare, ma al momento dell'inserimento del modulo iptables_filter mi va in segmentation fault.
Gli ip che vedi in acs_url sono comunque IP privati, quindi dall'esterno non possono raggiungere il router. Ed in ogni caso non sono quelli che avevo visto ;)
DANWHITE
09-02-2011, 10:16
Non mi tornano gli indirizzi IP presentati nel log.
su mediafire mi puoi mettere anche una sintesi del log.
Ciao
su mediafire mi puoi mettere anche una sintesi del log.
Purtroppo non l'ho salvato :(
In ogni caso apparivano ip 0.0.0.0 o 0.0.0.1...insomma, roba assurda. Chiaramente se mi usciva con quegli IP non funzionava niente.
Comunque non c'è fretta, appena puoi prova e potrai verificare con i tuoi occhi.
DANWHITE
09-02-2011, 10:45
In che senso "programma di caricamento" ?
E' stato detto che il router al boot copia l'immagine salvata su flash in un'area di memoria scrivibile. Dopo ciò legge i parametri contenuti in nvram e se il caso apporta delle modifiche ai file di sistema (programma di caricamento). Ora non mi è chiara la sequenza di boot nel Netgear.
In Debian la sequenza è:
1) BIOS, Master Boot Record (MBR), LILO or GRUB
2) Kernel (run linuxrc)
3) init (run rcS)
Immagino che la copia dell'immagine in ram avvenga nella fase-1, mentre l'aggiornamento del sistema con i dati contenuti in nvram dovrebbe avvenire nella fase-2. L'unica cosa che sono riuscito a vedere è che il mount delle partizioni e la partenza di modfs avviene nella fase-3.
DANWHITE
09-02-2011, 10:57
Comunque non c'è fretta, appena puoi prova
se aggiorno il firmware con quello di test, immagino che non mi funzioni niente. Per cui pensavo di staccarlo dalla rete (sostituendolo con il vecchio DGN2000) e di fare delle prove collegandolo ad un PC: i risultati del test non dovrebbbero cambiare, non ci vedi controindicazioni a non collegarlo alla linea ADSL ?
se aggiorno il firmware con quello di test, immagino che non mi funzioni niente. Per cui pensavo di staccarlo dalla rete (sostituendolo con il vecchio DGN2000) e di fare delle prove collegandolo ad un PC: i risultati del test non dovrebbbero cambiare, non ci vedi controindicazioni a non collegarlo alla linea ADSL ?
E' perfettamente funzionante quel firmware ;)
DANWHITE
09-02-2011, 11:14
E' perfettamente funzionante quel firmware ;)
Quindi:
1) se non eseguo "setup.sh" funziona normalmente.
2) se eseguo "setup.sh" si disabilita "acos" ed iniziano i problemi ...
Se eseguo il reboot o eseguo i comandi opposti a quelli contenuti in "setup.sh" ritorna tutto funzionante ?
E' stato detto che il router al boot copia l'immagine salvata su flash in un'area di memoria scrivibile. Dopo ciò legge i parametri contenuti in nvram e se il caso apporta delle modifiche ai file di sistema (programma di caricamento). Ora non mi è chiara la sequenza di boot nel Netgear.
In Debian la sequenza è:
1) BIOS, Master Boot Record (MBR), LILO or GRUB
2) Kernel (run linuxrc)
3) init (run rcS)
Immagino che la copia dell'immagine in ram avvenga nella fase-1, mentre l'aggiornamento del sistema con i dati contenuti in nvram dovrebbe avvenire nella fase-2. L'unica cosa che sono riuscito a vedere è che il mount delle partizioni e la partenza di modfs avviene nella fase-3.
Aspetta, fai un po' di confusione fra flash e nvram. La flash contiene diverse partizioni in cui risiedono l'immagine del kernel e l'immagine del rootfs. Inoltre c'è un'altra partizione in cui si trova l'nvram,.
Il kernel viene caricato in memoria dalla rispettiva partizione dal boot loader. La partizione che contiene il root filesystem viene passata come parametro del kernel. Quindi il kernel una volta caricato ed eseguito non fa altro che eseguire linuxrc. Nel nostro caso punta a busybox quindi non credo faccia niente.
Viene lanciato il processo init che ad un certo punto caricherà anche profile.
Il caricamento di tutti i moduli broadcom risiede proprio nel file profile. E sempre qui viene attivata la nvram (che non è altro che il repository per la configurazione del router). In fondo viene avviato l'eseguibile acos_service che si occuperà di lanciare i programmi e configurare tutto il resto.
Quindi:
1) se non eseguo "setup.sh" funziona normalmente.
2) se eseguo "setup.sh" si disabilita "acos" ed iniziano i problemi ...
Se eseguo il reboot o eseguo i comandi opposti a quelli contenuti in "setup.sh" ritorna tutto funzionante ?
Se esegui il reboot torna subito tutto come prima, perché niente viene modificato nella flash.
Oggi ho fatto il primo commit con bin e lib per il linksys WAG320N sul branch do modfs, ecco dei tool da usare per attivare ssh o telnet sul linksys
http://www.megaupload.com/?d=UARMA8U1
non ho inserito il file immagine per modfs , quello lo potete ottenere direttamente dall'svn
Oggi ho fatto il primo commit con bin e lib per il linksys WAG320N sul branch do modfs, ecco dei tool da usare per attivare ssh o telnet sul linksys
http://www.megaupload.com/?d=UARMA8U1
non ho inserito il file immagine per modfs , quello lo potete ottenere direttamente dall'svn
Alpine, man mano che verifichi/finisci il porting dei vari pacchetti, me lo scrivi qui ? Così riesco più facilmente a fare il merge ;)
Alpine, man mano che verifichi/finisci il porting dei vari pacchetti, me lo scrivi qui ? Così riesco più facilmente a fare il merge ;)
ok, per ora quello che ho messo su non è da mergiare manca tutta la parte dei package
Oggi ho fatto il primo commit con bin e lib per il linksys WAG320N sul branch do modfs, ecco dei tool da usare per attivare ssh o telnet sul linksys
http://www.megaupload.com/?d=UARMA8U1
non ho inserito il file immagine per modfs , quello lo potete ottenere direttamente dall'svn
nello scritp wag320n-ctrl.sh manca una variabile my_access="admin:admin" che sarebbero username : password del router basta inserirla prima della funzione wag320n_command()
es:
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
my_access="admin:admin"
wag320n_command()
{
DANWHITE
10-02-2011, 21:23
Purtroppo non l'ho salvato :(
In ogni caso apparivano ip 0.0.0.0 o 0.0.0.1...insomma, roba assurda. Chiaramente se mi usciva con quegli IP non funzionava niente.
Comunque non c'è fretta, appena puoi prova e potrai verificare con i tuoi occhi.
Io non sono riuscito a vedere il log. Ho abilitato il servizio /sbin/syslogd, ma a parte il messaggio della busybox in /var/log/messages non vi era nulla.
L'output di iptables è il seguente
Chain INPUT (policy ACCEPT 293 packets, 19012 bytes)
pkts bytes target prot opt in out source destination
293 19012 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `LOG_INPUT'
Chain FORWARD (policy ACCEPT 254 packets, 15503 bytes)
pkts bytes target prot opt in out source destination
254 15503 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `LOG_FORWARD'
Chain OUTPUT (policy ACCEPT 205 packets, 14648 bytes)
pkts bytes target prot opt in out source destination
205 14648 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `LOG_OUTPUT'
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 13 packets, 1387 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * ppp0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 13 packets, 1387 bytes)
pkts bytes target prot opt in out source destination
Alcune considerazioni preliminari:
1) "acos_service" è una specie di shell compilata, se lo apri con un text editor vedrai che è piena di comandi shell
2) "acos_nat" sembra fondamentale per avere il NAT, appena viene tirato giù la NAT non funziona
3) Resta da appurare se "acos_nat" e "iptables" possono convivere insieme.
Ciao
Il log lo vedi con dmesg. Non mi hai detto la cosa piú importante: funziona o no?
1) sì, l'avevo notato. Tra l'altro alla busybox.
2) eh sì, ma anche il firewall
3) credo proprio di no
DANWHITE
11-02-2011, 08:22
La comunicazione intranet funziona ed il router è in grado di accedere all'esterno. Il problema risiede nel NAT, un PC interno alla rete non riesce ad accedere all'esterno. Non ho avuto il tempo di fare molte prove, comunque un tentativo di fare convivere "acos_nat" e "netfilter" vale la pena farlo.
Secondo te se rimuovo "acos_nat", installo i moduli di "netfilter" (che mi sembrano anche troppi) e reinstallo "acos_nat", nella catena degli eventi agganciati tramite "hook" viene prima "netfilter" o "acos_nat" ?
Il problema risiede nel NAT, un PC interno alla rete non riesce ad accedere all'esterno.
Esatto, stesso mio comportamento. Imho è impossibile farli convivere. acos_nat fa anche da firewall.
ho fatto il porting della dir "packages/base", ho creato un mod_image.bin usando additional_WAG320N="" però se lancio lo script boot.sh il server httpd non viene avviato, qualche idea?
per ora ho modificato solo i file package.descriptor e base/bin/routerdb, qualche idea?
forse perchè è stata cambiata l'estenzione dei pacchetti ?
back/
base pack_manager.mpkg system web.db
httpd.mpkg service_manager.mpkg telnet.mpkg webpass.mpkg
mentre qualche script cerca ancora i tar.gz?
es reset_modfs
if [ "$1" != "-f" ]; then
package -i $modfs/bin/back/httpd.tar.gz -f $device
package -i $modfs/bin/back/webpass.tar.gz -f $device
package -i $modfs/bin/back/telnet.tar.gz -f $device
package -i $modfs/bin/back/pack_manager.tar.gz -f $device
package -i $modfs/bin/back/service_manager.tar.gz -f $device
else
package -i $modfs/bin/back/httpd.tar.gz
package -i $modfs/bin/back/webpass.tar.gz
package -i $modfs/bin/back/telnet.tar.gz
package -i $modfs/bin/back/pack_manager.tar.gz
package -i $modfs/bin/back/service_manager.tar.gz
fi
Dovrebbe bastare correggere tar.gz con mpkg. Non avevo pensato a correggere anche quel file. Correggo subito.
ok corretto, i moduli base sono stati avviati
a questo punto non mi rimane che passare al porting dei vari package...
ok corretto, i moduli base sono stati avviati
a questo punto non mi rimane che passare al porting dei vari package...
Ho dato uno sguardo agli ultimi commit.
Sarebbe meglio che non modificassi l'indentazione dei sorgenti, almeno fino a quando lavori su un branch separato. Questo perché dopo rimane molto difficile capire quali parti siano state modificate e quali no ;)
Non mi sembra che sia cambiato qualcosa all'interno dei file php, ma alcuni hanno l'indentazione profondamente modificata.
DANWHITE
12-02-2011, 10:46
Imho è impossibile farli convivere. acos_nat fa anche da firewall.
Sono riuscito a fare molte prove (ho molti file di logs) ma in sintesti sembra che il NAT non funzioni. Ho provato con diverse interfacce ppp0, br0, atm0 (lo so che non ha senso) sperando in un baco, ma niente ...
Ho provato anche la strada della convivenza, anche in questo caso vengono prodotti i logs, ma le iptables non riescono a fermare nulla.
Credo che sia necessario trovare altre alternative...
Ciao
Mah... c'è qualcosa che vi sfugge :D
Sono riuscito a fare molte prove (ho molti file di logs) ma in sintesti sembra che il NAT non funzioni. Ho provato con diverse interfacce ppp0, br0, atm0 (lo so che non ha senso) sperando in un baco, ma niente ...
Ho provato anche la strada della convivenza, anche in questo caso vengono prodotti i logs, ma le iptables non riescono a fermare nulla.
Credo che sia necessario trovare altre alternative...
Secondo me c'è qualcosa che non va nel compilatore o nel sorgente del kernel. Altrimenti non me lo spiego.
DANWHITE
12-02-2011, 14:10
Secondo me c'è qualcosa che non va nel compilatore o nel sorgente del kernel
Come va con il TP-Link, supporta le iptables ?
Come va con il TP-Link, supporta le iptables ?
Sì, ma il kernel è completamente diverso per la parte di configurazione della board, quindi non si può usare direttamente, ma bisogna ricompilarlo. L'ho ricompilato con la configurazione del kernel del Netgear ed in più ho aggiunto la parte riguardante netfilter copiandola dalla configurazione del TP-Link.
Il kernel funziona, tutto il software Netgear funziona, alla fine però ho un segmentation fault al momento dell'inserimento del modulo iptable_filter.
DANWHITE
13-02-2011, 11:02
Il kernel funziona, tutto il software Netgear funziona, alla fine però ho un segmentation fault al momento dell'inserimento del modulo iptable_filter.
Prova a compilarlo staticamente ("=y" invece di "=m") e se ci sono i moduli da cui iptable_filter dipende (io complilerei staticamente tutti i principali moduli di netfilter).
P.S.
Ma la versione del Kernel del Netgear è la stessa del TP-Link ?
Prova a compilarlo staticamente ("=y" invece di "=m") e se ci sono i moduli da cui iptable_filter dipende.
Sì, potrebbe essere una prova da fare. Ovviamente se ci fossero moduli da cui iptable_filter dipende verrebbero automaticamente compilati e comunque lo segnalerebbe al momento dell'inserimento.
La versione del kernel non è solo la stessa, ma è addirittura la stessa versione di SDK di Broadcom.
DANWHITE
13-02-2011, 11:39
La versione del kernel non è solo la stessa, ma è addirittura la stessa versione di SDK di Broadcom.
Questa strada mi sembra promettente. Il problema di iptable_filter mi sembra risolvibile, almeno ci sono i sorgenti...
Questa strada mi sembra promettente. Il problema di iptable_filter mi sembra risolvibile, almeno ci sono i sorgenti...
Ma i sorgenti ci sono anche per il kernel del DGN2200 solo che, come hai visto, non funziona il nat...
DANWHITE
13-02-2011, 13:32
Ma i sorgenti ci sono anche per il kernel del DGN2200 solo che, come hai visto, non funziona il nat...
Il problema è che se è stato modificato una parte del codice per far funzionare acos_nat è diffice da trovare, altrimenti non spiego perchè il NAT delle iptables non funziona. Se si parte con un kernel più standard si può sperare di risolvere il problema più facilmente, nel caso delle iptables si potrebbero mettere delle printk() che scrivono nel buffer del kernel per capire dove si impianta.
P.S.
Mi è venuto in mente un problema: cosa succede se il nuovo kernel con le librerie statiche va in segmentation fault al boot ?
Il problema è che se è stato modificato una parte del codice per far funzionare acos_nat è diffice da trovare, altrimenti non spiego perchè il NAT delle iptables non funziona. Se si parte con un kernel più standard si può sperare di risolvere il problema più facilmente, nel caso delle iptables si potrebbero mettere delle printk() che scrivono nel buffer del kernel per capire dove si impianta.
Io sinceramente penso che sia un problema di compilatore, almeno per il segmentation fault.
P.S.
Mi è venuto in mente un problema: cosa succede se il nuovo kernel con le librerie statiche va in segmentation fault al boot ?
Non si avvia più il router...
DANWHITE
13-02-2011, 14:07
Io sinceramente penso che sia un problema di compilatore, almeno per il segmentation fault.
Prova queste toolchain:
http://kamikaze.openwrt.org/7.09/brcm-2.4/OpenWrt-SDK-brcm-2.4-for-Linux-i686.tar.bz2
http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/OpenWrt-SDK-atheros-2.6-for-Linux-i686.tar.bz2
Non vanno bene. La prima è per il kernel 2.4 e la seconda è per il kernel 2.6, ma per l'architettura MIPSr2. Inoltre sono per le uclibc 0.9.28, contro la 0.9.29 del nostro router. La versione successiva di OpenWRT ha però le 0.9.30.
Ho cercato tanto, ma fino ad ora non ho trovato una toolchain compatibile. Quella attuale l'ho compilata io con i sorgenti e seguendo le raccomandazioni di Netgear, ma secondo me avere una toolchain originale Broadcom sarebbe l'ideale anche per escludere questo problema.
DANWHITE
13-02-2011, 14:59
la seconda è per il kernel 2.6, ma per l'architettura MIPSr2. Inoltre sono per le uclibc 0.9.28, contro la 0.9.29 del nostro router
Io ho usato la seconda per aggiungere WOL.c nel DGN2000 e mi funzionava (ho dovuto compilarla staticamente).
Io ho usato la seconda per aggiungere WOL.c nel DGN2000 e mi funzionava (ho dovuto compilarla staticamente).
Fino a quando si tratta di programmi che non fanno uso delle istruzioni aggiuntive non ci sono problemi. Su programmi un minimo più grossi avrai un segmentation fault.
L'AR71xx, su cui sono basati i router Atheros supportati da OpenWRT, sono della famiglia MIPS 24K. Il BCM6358 invece è della famiglia MIPS 4K.
Quel compilatore funziona perfettamente per il DGN3500 ;)
DANWHITE
13-02-2011, 20:51
Secondo me il problema risiede nell'opzione mno-shared che introduce una ottimizzazione nel compilatore mips di cui se ne può fare a meno ed è probabilmente causa del segmentation fault.
Ho fatto delle prove con il firmware del TP-Link (che si compila decentemente). Ho usato il toolchain di open-wrt: ma anche il tuo va bene.
Per evitare problemi di configurazione ho decompresso il toolchain in /opt e poi ho eseguito i seguenti comandi:
cd /opt/toolchains/uclibc-crosstools-gcc-4.2.3-3
mv usr usr.save
ln -s /opt/OpenWrt-SDK-atheros-2.6-for-Linux-i686/staging_dir_mips usr
poi ho sostituito nel file /opt/bcm963xx_router/make.common la stringa:
export BRCM_APP_CFLAGS := $(BRCM_COMMON_CFLAGS) -mno-shared
con
export BRCM_APP_CFLAGS := $(BRCM_COMMON_CFLAGS)
e poi ho compilato !
Ho provato con 4 toolchains (incluso il tuo) diversi e sono sempre riuscito a generare un'immagine (non ho un TP-Link su cui provarla).
Rimuovi quell'opzione e "crossing the fingers"...
Proverò, ma come ti spieghi che quel sorgente e quelle opzioni funzionino sul TP-Link ?
Speriamo che TP-Link fornisca il compilatore che usano loro, l'ho fatto chiedere da un utente che ha il TP-Link e che ha già contattato l'assistenza per segnalare diversi bug.
DANWHITE
14-02-2011, 08:31
ma come ti spieghi che quel sorgente e quelle opzioni funzionino sul TP-Link ?
Come ti spieghi che la TP-Link nel codice GPL ha inserito il seguente readme ?
Notice:The final image only used to research, and can not use to update to the common TD-W8960Nv1.0 firmware, and the common TD-W8960Nv1.0 firmare also can not update to the final image.
Il fatto che Linux ha la licenza GPL li obbliga a rilasciare il codice sorgente, ma non sono obbligati a far si che funzioni ! Tutte le difficoltà che stai incontrando sono dovute a questo. Tu stesso ti sei lamentato che utilizzando il codice rilasciato dalla Netgear non si riesce ad ottenere un immagine funzionante !
L'unica speranza è di riuscire a rimuovere tutti gli ostacoli che sono stati introdotti...
P.S.
Se ti documenti sull'opzione mno_shared scoprirari che il suo nome non indica il tipo di ottimizzazione applicata, ma bensì il fatto che non può essere usata per compilare librerie dinamiche (shared) ed io non la utilizzarei neanche per compilare applicativi che si caricano librerie dinamiche...
Tu stesso ti sei lamentato che utilizzando il codice rilasciato dalla Netgear non si riesce ad ottenere un immagine funzionante !
Questo perché hanno incluso applicativi closed non funzionanti e diversi da quelli presenti nell'immagine del firmware. Il kernel funziona però.
Edit: indagando meglio quel parametro non viene usato nella compilazione del kernel, ma solo per le applicazioni
DANWHITE
14-02-2011, 10:25
Questo perché hanno incluso applicativi closed non funzionanti e diversi da quelli presenti nell'immagine del firmware. Il kernel funziona però.
Il kernel però si impianta. Se ritieni che il problema è il compilatore, prova ad usare altre toolchains: quelle di OpenWRT dovrebbero essere affidabili (anche se non supportano mno_shared). Cosa ne pensi del link statico ?
P.S.
Cosa ne pensi di compilare il kernel in modalità debug ?
DANWHITE
14-02-2011, 11:28
La versione del kernel non è solo la stessa, ma è addirittura la stessa versione di SDK di Broadcom.
Ho usato WinMerge per verificare le differenze tra il Kernel del Netgear ed il Kernel del TP-Link. Ci sono 59 files diversi. Ti allego il report di WinMerge (non ho avuto il tempo di controllare in cosa consistono).
Ciao
DANWHITE
14-02-2011, 13:21
Ma i sorgenti ci sono anche per il kernel del DGN2200 solo che, come hai visto, non funziona il nat...
Credo di avere individuato le modifiche fatte al Kernel per inserire gli "hook" di ACOS. Il file modificato è "kernel\linux\net\ipv4\ip_output.c" (vi sono anche altri files diversi). Le modifiche sono:
int (*br_insert_hook)(struct sk_buff *skb);
static inline int ip_finish_output(struct sk_buff *skb)
{
//Temp mark, enter acos nat anyway
#if 0
#if defined(CONFIG_NETFILTER) && defined(CONFIG_XFRM)
/* Policy lookup after SNAT yielded a new policy */
if (skb->dst->xfrm != NULL) {
IPCB(skb)->flags |= IPSKB_REROUTED;
return dst_output(skb);
}
#endif
#endif
//int ret;
if(NULL!=br_insert_hook)
{
//ret=ip_insert_hook(skb);
br_insert_hook(skb);
/*
if((ret==NF_DROP)||(ret==NF_STOLEN))
{
read_unlock(&br->lock);
return;
}
*/
}
void insert_func_to_BR_POST_ROUTE(void *FUNC)
{
br_insert_hook= FUNC;
}
void remove_func_from_BR_POST_ROUTE(void)
{
br_insert_hook= NULL;
}
Anche questo file è modificato: "kernel\linux\net\ipv4\ip_intput.c". Le modifiche sono:
int (*ip_pre_insert_hook)(struct sk_buff *skb);
int (*br_pre_insert_hook)(struct sk_buff *skb);
if(NULL!=br_pre_insert_hook)
{
int ret;
ret=br_pre_insert_hook(skb);
if((ret==NF_DROP)||(ret==NF_STOLEN))
return 0;
}
if(NULL!=ip_pre_insert_hook)
{
int ret;
ret=ip_pre_insert_hook(skb);
if((ret==NF_DROP)||(ret==NF_STOLEN))
return 0;
}
void insert_func_to_IP_PRE_ROUTE(void *FUNC)
{
ip_pre_insert_hook= FUNC;
}
void remove_func_from_IP_PRE_ROUTE(void)
{
ip_pre_insert_hook= NULL;
}
void insert_func_to_BR_PRE_ROUTE(void *FUNC)
{
br_pre_insert_hook= FUNC;
}
void remove_func_from_BR_PRE_ROUTE(void)
{
br_pre_insert_hook= NULL;
}
Poi ci sono altri file che includono il file:
#include "../../../../userspace/project/acos/include/multissidcontrol.h"
Comunque la lista è lunga..., però si potrebbe provare (usando una diff su Linux) ad estirpare "ACOS" dal Kernel del Netgear, ed a questo punto non ci servirebbe il TP-Link ;)
Appena posso indago meglio ;)
Estirpare Acos dal kernel sarebbe possibile, ma bisognerebbe caricare il nuovo kernel a runtime, altrimenti il router non funzionerebbe più.
Forse la strada migliore da percorrere sarebbe quella di sostituire non solo il kernel, ma anche la GUI, per metterne una che supporta iptables, ad esempio quella del DGN2000...
DANWHITE
15-02-2011, 13:27
Appena posso indago meglio ;)
Se confronti i 2 Kernel ti accorgerai che quello del Netgear contiene alcune patchs utili (rimozione limite grandi file in Samba, gestione di device USB non standard, etc...). Sicuramente il kernel del Netgear è meglio e conviene partire da questo. La rimozione di ACOS deve essere fatta attentamente (con #ifdef...) perchè mi sembra che si occupi anche della gestione di SSID multipli. Insomma si vede la luce in fondo al tunnel, ma la stada da percorrere mi sembra ancora lunga (non nomino la riscrittura dell'interfaccia...). Ti lascio il tempo di verificare con calma.
Ciao,
P.S.
La diff è meglio farla in Linux (Comparison_of_file_comparison_tools (http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools)) in quanto vi sono dei files nel kernel che hanno lo stesso nome ma case diverso (Windows non distingue e sovrascrive).
Sì sì conoscono l'uso di diff. Semplicemente non avevo pensato che si fossero messi ad escludere il funzionamento di netfiler dal kernel (quell'#if 0).
Se ci riesco lo patcho per farli funzionare con lo stesso kernel, anche se credo che sarà dura. In alternativa bisognerà abilitare kexec e lanciare un nuovo kernel.
ho completato il porting di:
wifi_sched
cron (funzionava senza particolari modifiche)
wol (ho messo il mio bin)
openvpn (apro iptable sulla wan)
telnetd (fixato) + i mpkg base
poi passo al porting di :
printer sshd stunnel, anche se ssh non prevede al momento l'uso di un authorized_keys (magari mentre faccio il porting introduco questo enhancement)
DANWHITE
16-02-2011, 10:10
Se non ti funziona neanche con queste regole:
.........
Vuol dire che il problema non è nelle iptables, ma nel kernel che non passa gli eventi di rete ai moduli sottostanti.
Mi autoquoto....
L'idea di usare la "diff" invece non mi è venuta in mente subito, discutere dei problemi aiuta molto...
Ciao :)
Per gli altri: sto cercando di capire come sic reano altri PVC, per poter configrare, ad esempio, IPTV sui nostri router.
cionci quando vuoi ;)
pvc2684ctl -l
brctl show br0
brctl show br1
ifconfig (nascondi i mac)
pvc2684ctl -l
brctl show br0
brctl show br1
ifconfig (nascondi i mac)
pvc2684ctl -l
pvc2684ctl -l: not found
brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.5cd998704b5c no eth0.2
nas_0_8_35
eth0.3
eth0.4
eth0.5
brctl show br1
bridge name bridge id STP enabled interfaces
br0 8000.5cd998704b5c no eth0.2
nas_0_8_35
eth0.3
eth0.4
eth0.5
ifconfig
br0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:XXX.XXX.XXX.XXX Bcast:XXX.XXX.XXX.XXX Mask:255.255.255.0
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:152989 errors:0 dropped:0 overruns:0 frame:0
TX packets:284620 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20009944 (19.0 MiB) TX bytes:359673398 (343.0 MiB)
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:152989 errors:0 dropped:0 overruns:0 frame:0
TX packets:574427 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24293636 (23.1 MiB) TX bytes:758722476 (723.5 MiB)
Interrupt:30 Base address:0x6800
eth0.2 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:111832 errors:0 dropped:0 overruns:0 frame:0
TX packets:147332 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17336835 (16.5 MiB) TX bytes:170317816 (162.4 MiB)
eth0.5 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:41157 errors:0 dropped:0 overruns:0 frame:0
TX packets:427019 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6956801 (6.6 MiB) TX bytes:588389044 (561.1 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:176 errors:0 dropped:0 overruns:0 frame:0
TX packets:176 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6668 (6.5 KiB) TX bytes:6668 (6.5 KiB)
nas_0_8_35 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:134871 errors:0 dropped:0 overruns:0 frame:0
TX packets:95441 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:151164650 (144.1 MiB) TX bytes:14499080 (13.8 MiB)
nas_0_8_37 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:10.87.168.81 Bcast:10.255.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:422594 errors:0 dropped:0 overruns:0 frame:0
TX packets:34866 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:573456875 (546.8 MiB) TX bytes:2842770 (2.7 MiB)
ppp_0_8_35_1 Link encap:Point-Point Protocol
inet addr:XXX.XXX.XXX.XXX P-t-P:151.23.226.196 Mask:255.255.255.
255
UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST MTU:1492 Metri
c:1
RX packets:133779 errors:0 dropped:0 overruns:0 frame:0
TX packets:94352 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:150042259 (143.0 MiB) TX bytes:11414442 (10.8 MiB)
Mi servirebbero anche questi:
ps (attenzione ad eventuali password in chiaro)
atmctl -h
ls -laR | grep 2684
Mi servirebbero anche questi:
ps (attenzione ad eventuali password in chiaro)
atmctl -h
ls -laR | grep 2684
ps
PID Uid VmSize Stat Command
1 admin 252 S init
2 admin SWN [ksoftirqd/0]
3 admin SW< [events/0]
4 admin SW< [khelper]
5 admin SW< [kblockd/0]
17 admin SW [pdflush]
18 admin SW [pdflush]
19 admin SW [kswapd0]
20 admin SW< [aio/0]
25 admin SW [mtdblockd]
34 admin 300 S -sh
71 admin 1720 S cfm
223 admin 204 S pvc2684d
376 admin 276 S dhcpd
572 admin 240 S ddnsd /var/ddnsd.cfg /var/ddnsd.cache
574 admin 220 S sntp -s ntp1.dlink.com -s ntp.dlink.com.tw -t Amsterd
623 admin 2156 S httpd
627 admin 404 S pppd -c 0.8.35.1 -i nas_0_8_35 -u
896 admin 212 S /bin/dnsprobe
900 admin 372 S upnp -L br0 -W ppp_0_8_35_1 -D
984 admin 228 S dhcpc -i nas_0_8_37
1048 admin 2516 S tr69c
1074 admin 264 S /bin/igmp ppp_0_8_35_1 nas_0_8_37
1217 admin 208 S reaim -e 151.65.246.100
1453 admin 1736 S telnetd
1454 admin 1752 S telnetd
1475 admin 260 S sh -c ps
1476 admin 248 R ps
atmctl -h
atmctl -h: not found
ls -laR | grep 2684
ls -laR | grep 2684: not found
Vedi quel pvc2684d ? E' il demone che crea i PVC e le interfacce nas_0_8_35 e nas_0_8_37.
Noi bisogna trovare il client che serve a configurare il demone.
Con il comando CD spostati nelle directory
/bin
/sbin
/usr/bin
/usr/sbin
e cerca tutti gli eseguibili che abbiano il numero 2684 all'interno.
Non so se conosci come spostarti nelle directory e vedere i file:
cd /bin
ls -la
Vedi quel pvc2684d ? E' il demone che crea i PVC e le interfacce nas_0_8_35 e nas_0_8_37.
Noi bisogna trovare il client che serve a configurare il demone.
Con il comando CD spostati nelle directory
/bin
/sbin
/usr/bin
/usr/sbin
e cerca tutti gli eseguibili che abbiano il numero 2684 all'interno.
Non so se conosci come spostarti nelle directory e vedere i file:
cd /bin
ls -la
non va nè il comando cd nè ls :/
questa è la lista dei comandi che esce con help
?
help
logout
reboot
adsl
atm
brctl
cat
ddns
df
dumpcfg
echo
ifconfig
kill
arp
defaultgat
dhcpserver
dns
lan
passwd
ppp
remoteacce
restoredef
route
save
swversion
wan
tr69c
ping
ps
pwd
rip
sntp
syslog
sysinfo
tftp
wlctl
wlan
Ah ok, non eri ancora entrato nella shell vera e propria...
Dai il comando
/bin/sh
Ora sei nella shell. Ricerca quel comando, probabile che sia in /sbin.
Ah ok, non eri ancora entrato nella shell vera e propria...
Dai il comando
/bin/sh
Ora sei nella shell. Ricerca quel comando, probabile che sia in /sbin.
nulla da fare...
> /bin/sh
/bin/sh: not found
edit: ho dato semplicemente sh ora sono nella busy box
:doh:
edit2: adesso funziona cd ma non ls...
edit2: adesso funziona cd ma non ls...
Prova così:
export PATH=/bin:/usr/sbin:/sbin:/usr/sbin
Poi dai i comandi:
busybox
/bin/busybox
pvc2684ctl -l
e poi prova anche ls
Prova così:
export PATH=/bin:/usr/sbin:/sbin:/usr/sbin
Poi dai i comandi:
busybox
/bin/busybox
pvc2684ctl -l
e poi prova anche ls
BusyBox v1.00 (2010.04.09-03:10+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
# export PATH=/bin:/usr/sbin:/sbin:/usr/sbin
# busybox
BusyBox v1.00 (2010.04.09-03:10+0000) multi-call binary
Usage: busybox [function] [arguments]...
or: [function] [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use, and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, busybox, cat, chmod, date, df, dmesg, echo, expr, false, ftpget,
ifconfig, init, insmod, kill, killall, klogd, ledctrl, linuxrc,
ln, logger, logread, mkdir, mount, msh, ping, ps, pwd, reboot,
rm, rmmod, route, sendarp, sh, sysinfo, syslogd, test, tftp, tftpd,
top, true, tty, vconfig
# /bin/busybox
BusyBox v1.00 (2010.04.09-03:10+0000) multi-call binary
Usage: busybox [function] [arguments]...
or: [function] [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use, and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, busybox, cat, chmod, date, df, dmesg, echo, expr, false, ftpget,
ifconfig, init, insmod, kill, killall, klogd, ledctrl, linuxrc,
ln, logger, logread, mkdir, mount, msh, ping, ps, pwd, reboot,
rm, rmmod, route, sendarp, sh, sysinfo, syslogd, test, tftp, tftpd,
top, true, tty, vconfig
# pvc2684ctl -l
VC interface mode vlan_id
-- --------- ------ ----------
8/ 35 nas524323 Bridging 65535 (XFFFF)
8/ 37 nas524325 Bridging 65535 (XFFFF)
# ls
ls: not found
#
Oh mamma...nemmeno ls hanno implementato in busybox :D
Comunque mi manca un pezzo...
Allora il setup dell'interfaccia nas si fa con pvc2684ctl, qui c'è un piccolo esempio: http://www.neufbox4.org/wiki/index.php?title=Interfaces_r%C3%A9seaux
Però manca il pezzo di setup della circuito ATM...
Gnommo !!! Che ne pensi ?
Gippe...prova:
atm
atm -h
atmctl -h
Gippe...prova:
atm
atm -h
atmctl -h
atm
> atm
Usage: atm start [--cqs <size>] [--pqs <size>] [--bs <size>]
[--bo <offset>] [--intf <port> <adsl|utopia|loopback>]
[<level2>] [<negedge>]]
atm stop
atm operate pripkt [--add <group> <offset> <value> [<mask>]
[--delete [<group>]] [--show [<group>]]
atm operate tdte [--add <ubr|ubr_pcr|cbr|rtvbr|nrtvbr>
[<pcr>] [<scr>] [<mbs>]] [--delete <index>] [--show [<index>]]
atm operate intf [--state <port> <enable|disable>] [--show [<port>]]
[--stats [<port>] [reset]]
[--setlink <port> <linkstate> <linkrate>]
[--settype <port> <adsl|utopia|loopback> [<level2>] [<negedge>]]
atm operate vcc [--add <port.vpi.vci>
<aal5|aal2|aal0pkt|aal0cell|aaltransparent> <tdte_index>
<vcmux_routed|vcmux_bridged8023|llcencaps|other|unknown>]
[--delete <port.vpi.vci>] [--addq <port.vpi.vci> <size> <priority>]
[--deleteq <port.vpi.vci> <size> <priority>]
[--addpripkt <port.vpi.vci> <group>
[--deletepripkt <port.vpi.vci> <group>
[--state <port.vpi.vci> <enable|disable>] [--show [<port.vpi.vci>]]
[--stats [<port.vpi.vci>] [reset]]
atm --version
atm --help
atm version 1.3
atm -h
> atm -h
atm: invalid command
atmctl -h
> atmctl -h
atmctl -h: not found
Prova
atm operate vcc --stats
atm operate vcc --show
Quindi ci siamo quasi, non capisco ancora come sia possibile per l'adattatore per l'IPTV instradare il proprio traffico sull'interfaccia nas corrispondente, visto che nel bridge l'interfaccia nas non c'è...
Che sfrutti il protocollo IGMP per il routing ?
Mi potresti riscrivere l'output di ifconfig lasciandoci solo le ultime due coppie degli indirizzi MAC ?
Prova
atm operate vcc --stats
atm operate vcc --show
Quindi ci siamo quasi, non capisco ancora come sia possibile per l'adattatore per l'IPTV instradare il proprio traffico sull'interfaccia nas corrispondente, visto che nel bridge l'interfaccia nas non c'è...
Che sfrutti il protocollo IGMP per il routing ?
Mi potresti riscrivere l'output di ifconfig lasciandoci solo le ultime due coppie degli indirizzi MAC ?
atm operate vcc --stats
> atm operate vcc --stats
aal5 vcc statistics for 0.8.35
crc errors 0
oversized sdus 0
short packet errors 0
length errors 0
aal5 vcc statistics for 0.8.37
crc errors 0
oversized sdus 0
short packet errors 0
length errors 0
atm operate vcc --show
vcc status type tdte_index q_size q_priority encapsul
ation
0.8.35 enabled aal5 1 100 1 llcencap
s
0.8.37 enabled aal5 2 100 1 llcencap
s
br0 Link encap:Ethernet HWaddr XX:XX:XX:XX:4B:5C
inet addr:XXX.XXX.XXX.XXX Bcast:XXX.XXX.XXX.XXX Mask:255.255.255.0
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:59108 errors:0 dropped:0 overruns:0 frame:0
TX packets:71000 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10022621 (9.5 MiB) TX bytes:71001332 (67.7 MiB)
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:4B:5C
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:59108 errors:0 dropped:0 overruns:0 frame:0
TX packets:79930 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11677555 (11.1 MiB) TX bytes:78221274 (74.5 MiB)
Interrupt:30 Base address:0x6800
eth0.2 Link encap:Ethernet HWaddr XX:XX:XX:XX:4B:5C
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:56104 errors:0 dropped:0 overruns:0 frame:0
TX packets:70190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10587772 (10.0 MiB) TX bytes:70458757 (67.1 MiB)
eth0.5 Link encap:Ethernet HWaddr XX:XX:XX:XX:4B:5C
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2995 errors:0 dropped:0 overruns:0 frame:0
TX packets:9707 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1088314 (1.0 MiB) TX bytes:7758718 (7.3 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:105 errors:0 dropped:0 overruns:0 frame:0
TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4704 (4.5 KiB) TX bytes:4704 (4.5 KiB)
nas_0_8_35 Link encap:Ethernet HWaddr XX:XX:XX:XX:4B:5C
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62959 errors:0 dropped:0 overruns:0 frame:0
TX packets:46368 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:68036890 (64.8 MiB) TX bytes:8222860 (7.8 MiB)
nas_0_8_37 Link encap:Ethernet HWaddr XX:XX:XX:XX:4B:5C
inet addr:10.87.168.83 Bcast:10.255.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:6067 errors:0 dropped:0 overruns:0 frame:0
TX packets:1325 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6975310 (6.6 MiB) TX bytes:217873 (212.7 KiB)
ppp_0_8_35_1 Link encap:Point-Point Protocol
inet addr:XXX.XXX.XXX.XXX P-t-P:151.23.226.202 Mask:255.255.255
.255
UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST MTU:1492 Metri
c:1
RX packets:62309 errors:0 dropped:0 overruns:0 frame:0
TX packets:45721 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:67507512 (64.3 MiB) TX bytes:6720917 (6.4 MiB)
Sono stato un pò impegnato ed ho perso un pò di vista la situazione :D
Chi mi fa un riassuntino sulla situazione e sulle cose da fare, così mi rimetto in attività?
Sto finendo OpenVPN per la parte client, aspetta se vuoi fare il porting. Anzi se vuoi dare un'occhio al motivo per cui non mi fa l'upload di static.key :D
Ora lo butto sul repository ;)
Ho fatto il commit.
In sostanza ancora il client non funziona (mi mancano ancora alcune cose da completare nell'interfaccia e negli script), ma ho problemi a fare l'upload di static.key. Non riesco a salvarlo in opevpn/etc/static.key.client :boh:
Eravamo rimasti qui se non sbaglio:
Che ne dici di rilasciare la versione 0.3 non appena abbiamo finito di mettere a posto:
- il grafico dei toni per entrambi i router (fatto per DGN2200)
- openvpn per entrambi i router (quasi finito)
- basicinfo e adslinfo per il DGN3500 (credo che sia un problema da risolvere insieme a quello dei toni)
- http file browser da sistemare: nell'editor di testo non viene applicato lo stile (qui ci dovresti pensare te, perché ci ho provato, ma non ho capito dove sia il problema)
- fare un redirect quando non esiste la variabile di sessione e non semplicemente visualizzare la schermata di login. (fatto)
Io aggiungerei: mettere a posto la visualizzazione con IE. Ed io certo non sono un drago con i CSS.
Eravamo rimasti qui se non sbaglio:
Che ne dici di rilasciare la versione 0.3 non appena abbiamo finito di mettere a posto:
- il grafico dei toni per entrambi i router (fatto per DGN2200)
- openvpn per entrambi i router (quasi finito)
- basicinfo e adslinfo per il DGN3500 (credo che sia un problema da risolvere insieme a quello dei toni)
- http file browser da sistemare: nell'editor di testo non viene applicato lo stile (qui ci dovresti pensare te, perché ci ho provato, ma non ho capito dove sia il problema)
- fare un redirect quando non esiste la variabile di sessione e non semplicemente visualizzare la schermata di login. (fatto)
Io aggiungerei: mettere a posto la visualizzazione con IE. Ed io certo non sono un drago con i CSS.
Ok procedo seguendo quell'ordine.
Per il grafico adsl meno male che avevo l'adsl2 prima altrimenti ora non sarei stato in grado di verificare il corretto funzionamento :D
il porting del pkg openvpn funziona ma in parte la condivisione funziona solo host to router non accedo alla LAN, probabilmente devo configurare il bridging
il porting del pkg openvpn funziona ma in parte la condivisione funziona solo host to router non accedo alla LAN, probabilmente devo configurare il bridging
Aspetta aspetta, devo ancora terminare il tutto, poi cerchiamo di capirci di più.
Il bridging non l'hai attivo ?
Pensa prima agli altri pacchetti ;)
Ok procedo seguendo quell'ordine.
Per il grafico adsl meno male che avevo l'adsl2 prima altrimenti ora non sarei stato in grado di verificare il corretto funzionamento :D
Se mi dai uno sguardo prima all'upload di static.key in openvpn mi sblocchi ;)
Se mi dai uno sguardo prima all'upload di static.key in openvpn mi sblocchi ;)
Ho risolto ;) Era una stupidata :doh:
Io le sto provando tutte per migliorare il DGN2200.
Ieri notte ho fatto il merge fra i kernel del TP-Link e del DGN2200, togliendo ovviamente acos. Poi ho messo il file system del TP-Link nell'immagine.
Il router si avvia ed aggancia la portante, ma ovviamente non è raggiungibile (perché il software non sa dove rimediare i MAC Address). Se avessi la seriale probabilmente mescolando un po' di file del DGN2200 riuscirei a far partire tutto.
Questa mattina ho provato con kexec per caricare l'altro kernel. Il problema è che viene caricato comunque il kernel del router. Ora come ora non so come rimediare questa cosa. C'è anche da dire che ai tempi del kernel 2.6.21.5 kexec (il programma userspace) non aveva il supporto mips, quindi è possibile che il kernel stesso non fosse stato testato sui mips.
DANWHITE
08-03-2011, 09:43
Io le sto provando tutte per migliorare il DGN2200.
Ieri notte ho fatto il merge fra i kernel del TP-Link e del DGN2200, togliendo ovviamente acos.
Potresti spiegare meglio le tue prove ? se ho ben capito tu hai provato 2 strade:
1) Kernel+drivers Tp-Link su immagine DGN2200, risultato: va in segmentation fault quando carichi le iptables (però trova il MAC)
2) Kernel TP-Link + drivers DGN2200 su immagine DGN2200, risultato: non trova il MAC.
e' chiaro che se i drivers del DGN2200 sono stati modificati per funzionare con acos non funzioneranno bene con un kernel senza acos e dato che dei drivers non vi sono i sorgenti non vedo facili soluzioni.
Da quel che ho capito tu vorresti provare a sostituire anche i drivers ? (forse basta quello che gestische le porte di rete)
In alternativa si potrebbe incominciare a fare una rimozione parziale di acos (ad es. rimuovendo solo l'"#if 0" ...)
In entrambi i casi occorre (purtroppo) fare molti tentativi.
Ciao
Ho modificato il kernel per escludere acos ed ho caricato l'immagine del root fs del TP-Link. Fa il boot, ma ovviamente non è accessibile.
L'ultima cosa che ho provato è modificare il sorgente per far convivere acos ed iptables. In pratica mi sono scritto un modulo del kernel che quando caricato va ad escludere acos, quando viene rimosso riabilita acos. Però è difficile da testare, anche perché non ho una configurazione base di iptables che sono sicuro che funzioni (ricordo che c'era anche il problema del nat sulle interfacce bridged).
DANWHITE
08-03-2011, 13:15
L'ultima cosa che ho provato è modificare il sorgente per far convivere acos ed iptables. In pratica mi sono scritto un modulo del kernel che quando caricato va ad escludere acos, quando viene rimosso riabilita acos. Però è difficile da testare, anche perché non ho una configurazione base di iptables che sono sicuro che funzioni (ricordo che c'era anche il problema del nat sulle interfacce bridged).
Questa strada mi sembra promettente: in pratica hai introdotto una variabile globale che viene testata in tutti i punti del codice in cui compaiono le modifiche per acos per abilitarle/disabilitare. Con questa soluzione mi aspetto, che quando acos è abilitato funzioni tutto come prima (quindi si va nell'ottica di modifica del kernel non radicale).
Per testarlo potresti provare, prima a disabilitare il firewall :
iptables -t -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
poi ad abilitare il nat:
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
se così funziona se già a buon punto, poi si potrebbe incominciare a settare qualche filtro, ma prima e' meglio vedere se la nat funziona...
Ciao
Con questa soluzione mi aspetto, che quando acos è abilitato funzioni tutto come prima (quindi si va nell'ottica di modifica del kernel non radicale).
Esatto, in pratica con il modulo caricato vado ad abilitare quel ramo dell'if che è racchiuso in "#if 0"
ormai i moduli principali funzionano, che modifica avete applicato al vostro router per consentire il boot di modfs?
Riguardo alle modifiche, io ho fatto così:
- ho aggiunto un busybox, rinominato come busybox2, con i comandi che mancano per eseguire lo script che fa il boot di Modfs. Ovviamente tutti i link puntano a busybox2 per quei comandi.
- ho aggiunto il seguente script che viene eseguito in rcS (mod_setup.sh > /tmp/mod_setup.log 2>&1 &):
#!/bin/sh
basepath="/tmp/mod"
devmountpath="$basepath/dev"
modmountpath="$basepath/modfs"
modules="/lib/modules/mod"
loopdev="/dev/loop0"
sleep 45
oldfat32=""
counter=1
mkdir -p $devmountpath
while [ $counter -le 30 ]; do
fat32=`fdisk -l | grep "FAT32" | cut -d' ' -f1`
if [ "$fat32" != "$oldfat32" ]; then
# FAT32 partitions
for dev in $fat32; do
mount -t vfat $dev $devmountpath
sleep 2
image="$devmountpath/mod_image.bin"
if [ -f $image ]; then
echo "Found on $dev"
insmod $modules/mbcache.ko
insmod $modules/jbd.ko
insmod $modules/ext3.ko
insmod $modules/loop.ko
losetup $loopdev $image
mkdir -p $modmountpath
mount -t ext3 $loopdev $modmountpath
exec "$modmountpath/boot.sh $modmountpath"
fi
echo "Not found on $dev"
umount $dev
sleep 2
done
fi
oldfat32=$fat32
counter=`expr $counter + 1`
sleep 1
done
Il WAG320N quanta Ram ha ? Se ha 32 MB ti conviene anche ricompilare il kernel ed aggiungere il supporto allo swap.
hehe sono arrivato al punto cruciale flashare il modem...
ps.
per compilare il modulo usblp , devo attivare CONFIG_USB_PRINTER=m nel config di compilazione kernel?
hehe sono arrivato al punto cruciale flashare il modem...
ps.
per compilare il modulo usblp , devo attivare CONFIG_USB_PRINTER=m nel config di compilazione kernel?
Sì, ma configura il tutto con make menuconfig, almeno se ti deve attivare qualche altra opzione che ti serve te la attiva da solo.
allora il modulo lo ha caricato
usbcore: registered new interface driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
però eseguendo p910nd il processo esce senza comunicare nulla...
nel firmware credo sia già attiva lo swap:
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
Adding 65528k swap on /harddisk/usb_1/FLASH_1_1/.swap. Priority:-2 extents:1 across:65528k
# free
total used free shared buffers
Mem: 29072 27524 1548 0 776
Swap: 65528 0 65528
Total: 94600 27524 67076
Se non sbaglio io avevo modificato qualcosa nel sorgente. Ci sono dei define per i file di lock e pid. Verifica che i percorsi esistano.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.