SamKnows Whitebox - come utilizzarla come router preservando le misurazioni

  • 462 Risposte
  • 218838 Visite

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

livingsilver94

  • Visitatore
Eccomi! Allora aggiungo le modifiche di Ansuel visto che sono state testate sia da lui che da varma. Grazie ragazzi ;)
Solo una cosa Ansuel: Perché hai messo la LAN come DHCP client? Così ogni volta l'utente deve sbattersi per cercare l'IP della Whitebox.
« Ultima modifica: 09 Novembre 2015, 21:06 da livingsilver94 »

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
Eccomi! Allora aggiungo le modifiche di Ansuel visto che sono state testate sia da lui che da varma. Grazie ragazzi ;)
Solo una cosa Ansuel: Perché hai messo la LAN come DHCP client? Così ogni volta l'utente deve sbattersi per cercare l'IP della Whitebox.
Lo ho messo perchè stranamente con l'ip statico non riceveva connessione o.o
Io ho risolto successivamente settando l'ip statico dal router principale


livingsilver94

  • Visitatore
Mi sembra strano. Hai un conflitto di IP? Oppure hai dimenticato di aggiungere il DNS?

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
Mi sembra strano. Hai un conflitto di IP? Oppure hai dimenticato di aggiungere il DNS?
No era tutto apposto
se vuoi riprovo ora :D

Ok ho provato ora....
Ho scoperto cosine interessanti... lo sbaglio è mettere il server dns...
se si mette ip e gateway riesce a risolvere gli indirizzi
« Ultima modifica: 09 Novembre 2015, 21:41 da Ansuel »

livingsilver94

  • Visitatore
Probabilmente le cose sono cambiare con Chaos Calmer. BB senza l'indirizzo del server DNS non andava, la cosa è stata confermata anche da un utente di un altro forum. Meglio così, stasera aggiorno il post.

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
Probabilmente le cose sono cambiare con Chaos Calmer. BB senza l'indirizzo del server DNS non andava, la cosa è stata confermata anche da un utente di un altro forum. Meglio così, stasera aggiorno il post.
Ehi ciao alla fine dopo vari rompimenti di balle e ricerche c'è bisogno di fare alcune rettifiche :D

Primo con il tuo script si otterranno degli errori da snmp di mancanza di moduli... Per risolvere basta aggiungere nel tuo script alla fine la dicitura -m ALL (che appunto include tutti i moduli)

Secondo bisogna trovare una soluzione in modo da chiamare la sessione per nome e non utilizzando l'id, perchè nel mio caso stranamente l'id cambia

livingsilver94

  • Visitatore
Ciao!
Beh anche se non utilizzi i MIBS poco cambia, visto che io uso l'OID numerico e non il suo identificativo. Metti pure -m ALL comunque!
Che intendi col chiamare la sessione per nome?

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
Ciao!
Beh anche se non utilizzi i MIBS poco cambia, visto che io uso l'OID numerico e non il suo identificativo. Metti pure -m ALL comunque!
Che intendi col chiamare la sessione per nome?
Intendo si dovrebbe fare uno script con il quale sia possibile identificare l'OID numerico automaticamente, siccome può accadere che esso cambi

In teoria con questo comando si visualizzano tutte le possibili interfacce

snmpwalk -v 2c -c public 192.168.1.1 .1.3.6.1.2.1.2.2.1.2 -m ALL

per il -m ALL  non è necessario ma almeno non ti riempe il log di 20 righe alla volta :D


Stavo pensando di aggiungere al tuo script un ciclo iniziale che prenda da solo l'OID da quel comando e lo assegna poi agli altri due

Problema è che le mie competenze in script sono meno di zero
« Ultima modifica: 13 Novembre 2015, 19:39 da Ansuel »

Offline proniuzelo

  • Membro Giovane
  • **
  • 87
--------
« Ultima modifica: 22 Febbraio 2018, 15:22 da tro69 »

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
Living, avresti voglia di rendere disponibile il firmware openwrt con le tue modifiche e ottimizzazioni, senza includere le librerie e pacchetti per le rilevazioni di samknows? Te ne sarei grato ;) Mi farebbe molto piacere avere una versione pulita e con le tue modifiche :D
la versione di chaos calmer normale basta e avanza :D

Comunque per living ci sono quasi, sono riuscito ad estrapolare il numero dell'interfaccia ora devo solo capire come aggiungerlo all'OID finale XD

OK E DOPO un pochino ci so riuscito :D

Cosa ne pensi living?

Ora l'utente dovrà solo cambiare la variabile dell'interfaccia che vuole...


Ho pulito e compattato un pò :D
Codice: [Seleziona]
#!/bin/sh
snmphost='192.168.1.1'
snmpcommunity='public'
interface='pppoe-wan' # immettere il nome dell'interfaccia da monitorare
interface_oid=$(snmpwalk -v 2c -c "$snmpcommunity" "$snmphost" .1.3.6.1.2.1.2.2.1.2 -m ALL | grep "$interface" -w | cut -c23-24)
rx_oid='1.3.6.1.2.1.31.1.1.1.6.'$interface_oid
tx_oid='1.3.6.1.2.1.31.1.1.1.10.'$interface_oid
ETH_IFACE='eth0'
interval=5
rx_old=0
tx_old=0

while true; do
values=$(snmpget -Oqv -c "$snmpcommunity" -v 2c "$snmphost" "$rx_oid" "$tx_oid" -m ALL)
rx_bytes=$(echo "$values" | head -n1)
tx_bytes=$(echo "$values" | tail -n1)
rx_traf=$(((rx_bytes - rx_old) / interval))
tx_traf=$(((tx_bytes - tx_old) / interval))
rx_old=$rx_bytes
tx_old=$tx_bytes
echo -n $rx_traf > /tmp/${ETH_IFACE}_rx
echo -n $tx_traf > /tmp/${ETH_IFACE}_tx
echo -n 0 | tee /tmp/wlan0_pkt /tmp/wlan1_pkt
echo -n 1 > /tmp/threshold_pcap
sleep "$interval"
done
« Ultima modifica: 13 Novembre 2015, 20:29 da Ansuel »

livingsilver94

  • Visitatore
Living, avresti voglia di rendere disponibile il firmware openwrt con le tue modifiche e ottimizzazioni, senza includere le librerie e pacchetti per le rilevazioni di samknows? Te ne sarei grato ;) Mi farebbe molto piacere avere una versione pulita e con le tue modifiche :D
La farei volentieri, a livello di impostazioni cambia poco e niente, il problema è che per ogni build che creo devo mettere in piedi un repo, perché i pacchetti kmod-* compilati "ufficialmente" non possono essere installati in build diverse da quelle a loro volta compilate "ufficialmente". Piuttosto possiamo fare così: se ti armi di un PC o virtual machine Linux-based, ti dico come fare e ospiti il tuo repo in casa ;)

@Ansuel: mi piace! La tua modifica è tanto semplice quanto efficace. Solo una problema: metti che uno monti DD-WRT o OpenWrt sul router. Fin qui nessun problema perché i due SO mostrano tranquillamente i nomi delle interfacce. Ma se uno avesse un Netgear, un Asus, un Fritzbox o quello che vuoi con fw stock? Le web interface mostrerebbero in chiaro le interfacce di rete? Qualcuno ha esperienze da condividere? Perché chi andrà a modificare questo script potrebbe non avere accesso al nome che dovrebbe inserire.
« Ultima modifica: 13 Novembre 2015, 20:48 da livingsilver94 »

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
La farei volentieri, a livello di impostazioni cambia poco e niente, il problema è che per ogni build che creo devo mettere in piedi un repo, perché i pacchetti kmod-* compilati "ufficialmente" non possono essere installati in build diverse da quelle a loro volta compilate "ufficialmente". Piuttosto possiamo fare così: se ti armi di un PC o virtual machine Linux-based, ti dico come fare e ospiti il tuo repo in casa ;)

@Ansuel: mi piace! La tua modifica è tanto semplice quanto efficace. Solo una problema: metti che uno monti DD-WRT o OpenWrt sul router. Fin qui nessun problema perché i due SO mostrano tranquillamente i nomi delle interfacce. Ma se uno avesse un Netgear, un Asus, un Fritzbox o quello che vuoi con fw stock? Le web interface mostrerebbero in chiaro le interfacce di rete? Qualcuno ha esperienze da condividere?
o al massimo gli fai compilare quella immagine con i kmod già fatti :D

Se tu hai accesso alla busybox fai ifconfig e sostituisci l'interfaccia con quella più appropriata, dovrebbe andare così siccome il protocollo snmp segue degli standard

livingsilver94

  • Visitatore
I kmod vanno in coppia col tuo .config . Per ogni config c'è una firma del kernel (version magic) che verrà confrontata con quella dei kmod. In pratica ogni kmod può essere installato solo se è stato compilato con le stesse impostazioni della build. Il massimo del lavoro che gli posso risparmiare è compilare tutto da me e inviare lo zip con sia build che kmod. Il repo poi se lo hosta lui.

Sì sono d'accordo con te. Ma tutti i router che ho elencato prima hanno accesso alla Shell via telnet o SSH?

Offline Ansuel

  • VIP
  • *****
  • 3166
  • Sesso: Maschio
  • Il trucco è avere tanti modem da brikkare :P
I kmod vanno in coppia col tuo .config . Per ogni config c'è una firma del kernel (version magic) che verrà confrontata con quella dei kmod. In pratica ogni kmod può essere installato solo se è stato compilato con le stesse impostazioni della build. Il massimo del lavoro che gli posso risparmiare è compilare tutto da me e inviare lo zip con sia build che kmod. Il repo poi se lo hosta lui.

Sì sono d'accordo con te. Ma tutti i router che ho elencato prima hanno accesso alla Shell via telnet o SSH?
Se non sono brandizzati sicuramente e in ogni caso penso che se non permettono quello allora non hanno nemmeno la possibilità di mettere un server snmp XD

Ok sto facendo alcuni bugfix allo script....

Si presenta un problema piuttosto grave in cui si hanno 2 interfacce con lo stesso nome, in questo caso ho corretto prendendo solo il primo valore

Codice: [Seleziona]
#!/bin/sh
snmphost='192.168.1.1'
snmpcommunity='public'
interface='pppoe-wan' # immettere il nome dell'interfaccia da monitorare
interface_oid=$(snmpwalk -v 2c -c "$snmpcommunity" "$snmphost" .1.3.6.1.2.1.2.2.1.2 -m ALL | grep "$interface" -w | cut -c23-24 | head -n1)
rx_oid='1.3.6.1.2.1.31.1.1.1.6.'$interface_oid
tx_oid='1.3.6.1.2.1.31.1.1.1.10.'$interface_oid
ETH_IFACE='eth0'
interval=5
rx_old=0
tx_old=0

while true; do
values=$(snmpget -Oqv -c "$snmpcommunity" -v 2c "$snmphost" "$rx_oid" "$tx_oid" -m ALL)
rx_bytes=$(echo "$values" | head -n1)
tx_bytes=$(echo "$values" | tail -n1)
rx_traf=$(((rx_bytes - rx_old) / interval))
tx_traf=$(((tx_bytes - tx_old) / interval))
rx_old=$rx_bytes
tx_old=$tx_bytes
echo -n $rx_traf > /tmp/${ETH_IFACE}_rx
echo -n $tx_traf > /tmp/${ETH_IFACE}_tx
echo -n 0 | tee /tmp/wlan0_pkt /tmp/wlan1_pkt
echo -n 1 > /tmp/threshold_pcap
sleep "$interval"
done



OK SONO ARRIVATO A UNA RISOLUZIONE :D

Allora come avevo scritto in chat il problema grave era che questi script con i loro cicli while non permettevano allo script di avvio di completarsi...
Così facendo purtroppo lo script di avvio non si avviava proprio pensando di essere ancora in fase di boot.....

Per risolvere il problema semplicemente basta mettere questa scringa nello startup

/usr/bin/bandwidth_snmp.sh &

Ora devo solo controllare se funzia
« Ultima modifica: 14 Novembre 2015, 18:03 da Ansuel »

livingsilver94

  • Visitatore
Sì scusa dimenticanza mia!! Lo script "non snmp" ha la &, in questo l'ho proprio scordato. Troppi impegni, troppe distrazioni. Ho bisogno di una vacanza :P
Ah, non server fare head -n1, grep ha già un'opzione per fermarsi alla prima riga trovata. Domanda: e se l'interfaccia utile fosse la seconda?
Ma poi possono esserci interfacce con lo stesso nome?