I blog non sono nè stampa clandestina nè prodotto editoriale

Palazzo di Giustizia a Roma

Palazzo di Giustizia a Roma (fonte wikimedia.org)

Sui blog potremo scrivere le nostre puttanate in maniera più tranquilla. Potranno sempre querelarci per diffamazione, ma almeno dalle 19.30 del 10 maggio 2012 non incorriamo più nel reato di stampa clandestina.

“La Corte di Cassazione annulla senza rinvio perchè il fatto non sussiste.”

[...]

Il Supremo Collegio emette cosi una sentenza molto attesa e pone cosi fine a cinque anni di dispute dottrinarie e !infuocati” dibattiti sulla natura dei blog giornalisitici  e sulla loro clandestitinità in caso di non registrazione presso l’apposito registro delle testate editoriali del Tribunale, assolvendo lo storico e giornalista siciliano Carlo Ruta accusato di diffamazione a mezzo stampa e stampa clandestina .

[...]

(tratto da http://www.fulviosarzana.it/blog/storica-sentenza-della-cassazione-i-blog-non-sono-stampa-clandestina-e-non-sono-un-prodotto-editoriale-assolto-carlo-ruta-perche-il-fatto-non-sussiste/ )

LP

About these ads

Mesh Network con Openwrt Backfire 10.03.1 e batman-adv su fonera2.0g

L’obiettivo di questo articolo è descrivere come configurare la fonera 2.0g con openwrt backfire 10.03.1 per una mesh network con l’utilizzo di batman-adv.

Se non capisci a cosa serve questa roba, sappi che può essere utilizzata per portare dei tipici servizi di rete (come magari l’accesso ad internet) anche nel più remoto angolo di questo pianeta. Questo approccio viene utilizzato molto spesso per creare delle reti wireless cittadine oppure in zone rurali. Quindi se c’è qualcuno (il comune?) che paga la connessione per noi, c’è internet gratis per tutti.

La fonera 2.0g, openwrt con i pacchetti necessari e le sue interfacce.

Si suppone che su ogni fonera sia presente un’installazione pulita di openwrt, sia configurato correttamente l’accesso ssh e l’accesso ad internet (necessario quest’ultimo solo per l’installazione dei pacchetti). I pacchetti necessari sono dunque:

opkg update; opkg install ip kmod-batman-adv

(Il pacchetto ip non è indispensabile, ma è molto comodo)

La guida che segue considera l’utilizzo di due router fonera (fonA e fonB). Ogni router mette a disposizione un device wifi0 (sulla quale è possibile configurare almeno due interfacce wireless virtuali) e 2 device eth0.1/eth0.2 per l’ethernet.

Su entrambi i router saranno configurate due interfacce wireless virtuali: una in modalità adhoc (per la portante della mesh), ed una in modalità ap (per permettere ai client wireless, come i nostri notebook, sprovvisti di qualunque software particolare, di connettersi alla rete mesh). Allo stesso modo dell’ap, l’interfaccia eth0.1 potrà essere utilizzata dai client.

La fonA sarà inoltre configurata per il collegamento ad internet e per fungere dunque da gateway, con server dhcp attivo per i client. La fonB sarà configurata come router gestendo la rete mesh anche su porta ethernet oltre che wireless.

Sulla fonA, per semplicità si suppone che l’interfaccia wan sia configurata tramite dhcp.

Su entrambe le fonera il firewall sarà disabilitato.

I vantaggi di batman-adv?

Batman-adv è un protocollo di routing per reti mesh, ottimizzato per l’utilizzo su reti  wireless. Il tipico scenario in cui questo protocollo viene utilizzato è una rete wireless adhoc multi-hop.

E’ un protocollo su layer2, cioè instaura comunicazione con gli altri nodi della rete senza utilizzare i comuni indirizzi ip (che sono sul layer3). Per gestire il protocollo si utilizza l’eseguibile batctl (che può fornire utili informazioni sullo stato della mesh), anche se openwrt mette a disposizione un comodo file di configurazione che infatti si utilizzerà.

Quello che sarà necessario indicare a batman-adv sono i device da utilizzare per la mesh, e se il nodo in questione deve funzionare da gateway per internet o da client. Fatto questo, batman-adv creerà una nuova interfaccia (nel caso bat0) sulla quale si potrà lavorare sul layer3.

Grazie a tutte le bat0 di ogni device viene quindi a crearsi una struttura di nodi simile ad “un grande switch” (ave batman-adv!). Quindi ad ogni bat0 (o al bridge al quale appartiene)sarà possibile assegnare i suoi ip. Quindi ogni device batman-adv riuscirà a vedere, attraverso i suoi vicini, tutti gli altri nodi della rete.

Un primo aspetto molto interessante di questo approccio alla rete (che tra l’altro forniscono anche altri protocolli di routing come oslr, ed è quindi una caratteristica intrinseca delle reti mesh) è la creazione di una struttura a maglia, nella quale ogni nodo riesce a comunicare direttamente (single-hop) con un alto numero di nodi vicini. Si capisce che in questo modo, la caduta di un singolo nodo non pregiudica il collegamento di altri nodi, che infatti saranno in grado di trovare la strada per le loro comunicazioni attraverso gli altri vicini attivi.

In maniera complementare, l’aggiunta di un altro nodo alla rete mesh sarà automaticamente riconosciuta da tutti i suoi vicini, e quindi da tutti i nodi della rete mesh, contribuendo in questo modo alla crescita della rete.

Un peculiarità molto interessante di batman-adv, grazie anche alla presenza dei server dhcp sui gateway, è la capacità dei nodi senza accesso ad internet di trovare il server dhcp “migliore”. Per approfondimenti visitare http://www.open-mesh.org/wiki/batman-adv/Gateways.

La gestione degli indirizzi ip.

Ogni nodo avrà un ipv4 statico nella sottorete 172.16.0.0/16. Inoltre i nodi sui quali è presente un gateway verso internet avranno un ipv4 nella sottorete dei client 10.0.0.0/8.  Come accennato precedentemente solo questi nodi avranno avviato il server dhcp, oltre all’ip forward ed al masquerade per la connettività internet.

I file di configurazione e gli initscripts…

Una volta installati i pacchetti come sopra indicato, i file che si va a modificare su ciascuna fonera sono /etc/config/network, /etc/config/wireless, /etc/config/batman-adv,  /etc/dnsmasq.conf e /etc/rc.local. Quest’ultimo in particolare assegna gli indirizzi ip ai nodi.

Tutti i file di configurazione sono disponibili sul repository https://github.com/iuliinet/.

… sulla fonA (con gateway verso internet)

########################################################
root@kozlic:~# cat /etc/config/network
config 'interface'              'loopback'
        option 'ifname'         'lo'
        option 'proto'          'static'
        option 'ipaddr'         '127.0.0.1'
        option 'netmask'        '255.0.0.0'

config 'interface'              'lan'
        option 'ifname'         'eth0.1 bat0'
        option 'type'           'bridge'
        option 'proto'          'none'

config 'interface'              'wan'
        option 'ifname'         'eth0.2'
        option 'proto'          'dhcp'

config 'interface'              'mesh0'
        option 'ifname'         'adhoc0'
        option 'mtu'            '1528'
        option 'proto'          'none'
########################################################
root@kozlic:~# cat /etc/config/wireless
config 'wifi-device'            'wifi0'
        option 'type'           'atheros'
        option 'channel'        '11'
        option 'diversity'      '0'
        option 'txpower'        '18'

config 'wifi-iface'
        option 'device'         'wifi0'
        option 'ifname'         'ap0'
        option 'mode'           'ap'
        option 'network'        'lan'
        option 'ssid'           'ap'
        option 'encryption'     'psk2'
        option 'key'            '12345678'

config 'wifi-iface'
        option 'device'         'wifi0'
        option 'ifname'         'adhoc0'
        option 'mode'           'adhoc'
        option 'network'        'mesh0'
        option 'ssid'           'mesh'
########################################################
root@kozlic:~# cat /etc/config/batman-adv
config 'mesh' 'bat0'
        option 'interfaces' 'mesh0'
        option 'aggregated_ogms'
        option 'ap_isolation'
        option 'bonding'
        option 'fragmentation'
        option 'gw_bandwidth'
        option 'gw_mode' 'server'
        option 'gw_sel_class'
        option 'log_level'
        option 'orig_interval'
        option 'vis_mode'
########################################################
root@kozlic:~# cat /etc/config/dhcp
config 'dnsmasq'
        option 'domainneeded' '1'
        option 'boguspriv' '1'
        option 'localise_queries' '1'
        option 'rebind_protection' '1'
        option 'rebind_localhost' '1'
        option 'local' '/lan/'
        option 'domain' 'lan'
        option 'expandhosts' '1'
        option 'authoritative' '1'
        option 'readethers' '1'
        option 'leasefile' '/tmp/dhcp.leases'
        option 'resolvfile' '/tmp/resolv.conf.auto'

config 'dhcp' 'lan'
        option 'interface' 'lan'

config 'dhcp' 'wan'
        option 'interface' 'wan'
        option 'ignore' '1'

########################################################
root@kozlic:~# cat /etc/dnsmasq.conf
address=/kozlic/172.16.0.1
address=/drei/172.16.0.2
dhcp-range=10.0.1.20,10.0.1.40,255.0.0.0,infinite

dhcp-host=00:22:5f:d1:7c:28,00:26:b9:03:bc:3b,10.0.1.1,jarod
dhcp-host=00:22:5f:d1:7c:28,00:26:b9:03:bc:3b,172.16.1.1,jarod
dhcp-host=00:06:93:30:03:17,10.0.1.2,redo

########################################################
root@kozlic:~# cat /etc/rc.local
#!/bin/sh
IP="0.1"
LAN="br-lan"
WAN="pppoe-wan"

ip addr add 172.16.$IP/16 dev $LAN

GW="$(awk -F"'" '/gw_mode/{print $4}' /etc/config/batman-adv)"

/etc/init.d/dnsmasq  stop
/etc/init.d/firewall stop

if test $GW = "server"; then
        ip addr add 10.0.$IP/8 dev $LAN
        iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
        /etc/init.d/dnsmasq start
fi

exit 0

… sulla fonB

########################################################
root@drei:~# cat /etc/config/network
config 'interface'              'loopback'
        option 'ifname'         'lo'
        option 'proto'          'static'
        option 'ipaddr'         '127.0.0.1'
        option 'netmask'        '255.0.0.0'

config 'interface'              'lan'
        option 'ifname'         'eth0.1 bat0'
        option 'type'           'bridge'
        option 'proto'          'none'

config 'interface'              'mesh0'
        option 'ifname'         'adhoc0'
        option 'mtu'            '1528'
        option 'proto'          'none'

config 'interface'              'mesh1'
        option 'ifname'         'eth0.2'
        option 'mtu'            '1500'
        option 'proto'          'none'
########################################################
root@drei:~# cat /etc/config/wireless
config 'wifi-device'            'wifi0'
        option 'type'           'atheros'
        option 'channel'        '11'
        option 'diversity'      '0'
        option 'txpower'        '18'

config 'wifi-iface'
        option 'device'         'wifi0'
        option 'ifname'         'ap0'
        option 'mode'           'ap'
        option 'network'        'lan'
        option 'ssid'           'ap'
        option 'encryption'     'psk2'
        option 'key'            '12345678'

config 'wifi-iface'
        option 'device'         'wifi0'
        option 'ifname'         'adhoc0'
        option 'mode'           'adhoc'
        option 'network'        'mesh0'
        option 'ssid'           'mesh'
########################################################
root@drei:~# cat /etc/config/batman-adv
config 'mesh' 'bat0'
        option 'interfaces' 'mesh0 mesh1'
        option 'aggregated_ogms'
        option 'bonding'
        option 'fragmentation'
        option 'gw_bandwidth'
        option 'gw_mode' 'client'
        option 'gw_sel_class'
        option 'log_level'
        option 'orig_interval'
        option 'vis_mode'
########################################################
root@drei:~# cat /etc/rc.local
#!/bin/sh
LAN="br-lan"
WAN="pppoe-wan"
IP="0.2"

ip addr add 172.16.$IP/16 dev $LAN

GW="$(awk -F"'" '/gw_mode/{print $4}' /etc/config/batman-adv)"

if test $GW = "server"; then
        ip addr add 10.0.$IP/8 dev $LAN
        iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
        /etc/init.d/dnsmasq start
fi

exit 0

Confronto dei file di configurazione.

Ogni interfaccia da dare in pasto a batman-adv dovrebbe avere mtu 1528, questo per limitare la frammentazione dei pacchetti ed il calo delle prestazioni della rete. Anche se purtoppo le interfacce ethernet della fonera non supportano mtu maggiore di 1500.

/etc/config/network

Notare che nella fonA l’eth0.2 gestisce la wan, mentre nella fonB la stessa interfaccia è utilizzata da batman-adv.
Non è indispensabile, ma ogni intefaccia gestita da batman-adv ha una sezione in /etc/config/interfaces. Questo può essere utile per passare dei parametri come l’mtu. E’ altrimenti possibile passare i device adoch0 (e nel caso eth0.2) direttamente a batman-adv.

/etc/config/wireless

I file /etc/config/wireless sono identici su entrambi i router. La rete adhoc è aperta (l’attuale openwrt non supporta la cifratura). L’ap è invece protetto da wpa-psk2.

/etc/config/batman-adv

Nella fonA sia ha solo l’interfaccia wifi in mesh e gw_mode su server, mentre nella fonB le interfacce in mesh sono due (adhoc0 e eth0.2) e gw_mode su client.

/etc/config/dhcp, /etc/dnsmasq.conf

Questi vanno configurati solo nella fonA e gestiscono la rete dei client. Il server dhcp è configurato con un range di ip da assegnare e con dei dhcp statici.

/etc/rc.local

E’ questo il file che assegna gli indirizzi ip ai nodi della mesh e che permette l’avvio del server dhcp sui gateway, oltre al masquerade.

Progetti per il futuro

Per gestire l’accesso ad internet su un determinato gateway, un approccio molto interessante potrebbe essere quello di configurare un tunnel vpn tra i gareway stessi ed i client. Software come quicktun o openvpn potrebbero fare al caso.

Nel caso il gateway abbia accesso ipv6 dalla wan, nativo o utilizzando un tunnel ipv6, è possibile istruire un demone come radvd per la propagazione degli ipv6 verso tutti i client.

E’ stato eseguito con successo qualche test di mesh anche collegato la fonB in ethernet ad un portatile gentoo. Ma questo esula da openwrt.

Ovviamente nessuno vieta di compilarsi un’immagine a puntino per il proprio device a partire dai sorgenti trunk di openwrt.

Conclusioni

Giungere a questo risulato, per chi è a digiuno di concetti di networking anche basilari può essere complicato, in particolare per quando riguarda la configurazione. Ma non è affatto impossibile :D

Le fonera2.0g sono degli ottimi device per effettuare questi test, dato il costo relativamente basso. Nei miei test le due fonera erano collegate in adhoc a circa -70db, collegandomi al gw-client in wifi ed in ethernet ho ottenuto transmission-rate rispettivamente di ~2MB/s e ~0,5-1/MB/s. Esistono in commercio alcuni apparati wifi professionali (come le antenne ubiquiti) che possono essere utilizzate proprio per questo scopo. Per effettuare dei link di qualche km la spesa totale per nodo parte da ~100€di hardware.

La documentazione è abbastanza scarsa (per questo ho deciso di scrivere questo articolo) ma su irc://irc.freenode.net#batman e irc.freenode.net#openwrt c’è qualcuno che può aiutarti!

Altro aspetto negativo è che allo stato attuale le varie versioni di batman-adv non sono retrocompatibili. Questo dicono è un problema che sarà risolto entro l’estate. Per approfondire è disponibile la pagina http://www.open-mesh.org/wiki/batman-adv/Compatversion.

Un ringraziamento è doveroso a marec, jow_laptop ed in particolare ad ordex per i consigli e l’aiuto fornitomi.

Se qualcuno vuole fare qualche link con me non esiti a contattarmi.

Buon mesh network a tutti!

LP

luca postregna coglione

sono un coglione

luca postregna coglione

Uno dei modi più efficaci per aumentare le visite al proprio sito è analizzare le chiavi di ricerca che le persone utilizzano e che portano al sito stesso. Una tra le chiavi di ricerca utilizzate per raggiungere questo sito è “luca postregna coglione“.

Essendo che tale frase è utilizzata da molto tempo per raggiungere questo blog, e data la sua eccezionale singolarità ho deciso di dedicarle un articolo!

Giusto per non correre il rischio di capitare non in prima posizione su google! :D

Buon primo aprile a tutti!

LP