HowTo/Netsukuku

Da FSUG Padova - Wiki pages.

Netsukuku è un progetto italiano nato in seno al Freaknet Lab.

Dalla pagina delle FAQ, "The Netsukuku project is based on the very simple idea of exploiting the great potentiality of the wifi connectivity, making the PCs of wireless communities act as routers and handle together an ad-hoc network even bigger than the Internet." ovvero il progetto è basato sull'idea di sviluppare le potenzialità della tecnologia wireless, in modo che i singoli pc fungano da router per una rete estesa (WAN).

Netsukuku è una rete studiata per gestire reti con una elevata quantità di nodi, con un consumo minimo di CPU e memoria degli elaboratori. In questo modo, il sistema può essere usato per costruire una rete distribuita, fault-tolerant, anonima, e indipendente dalla rete attuale, internet. L'idea di una rete dove ogni pc è un router e che non richieda sistemi di backbone, sistemi centralizzati o autorità per la gestione della rete stessa garantisce una infrastruttura immune da censure e filtri.

Per maggiori informazioni, si rimanda alla pagina principale del progetto, ospitato sul sito del Freaknet Lab:

netsukuku.freaknet.org


HOWTO - test del demone ntkd

- ringrazio lukisi per il supporto ;) -

Il seguente test è stato fatto su macchina kubuntu 10.10. Di seguito le dipendenze richieste:


- build-essential: presente nei repository debian e ubuntu;

- swing: altro pacchetto presente nei repositories ufficiali;

- openssl e libss-dev: pacchetti presenti nei repositories per il supporto ssl;

- xsltproc: sempre presente nei depositories, http://xmlsoft.org/XSLT/xsltproc.html per maggiori informazioni;

- tinc: supporto per le vpn: http://www.tinc-vpn.org/

- subversion: per questo non occorrono spiegazioni, per chi volesse le specifiche http://subversion.apache.org/

- stackless python: www.stackless.com

- M2Crypto: http://chandlerproject.org/bin/view/Projects/MeTooCrypto

- DNSpython: http://www.dnspython.org/


Dipendenze

Le seguenti dipendenze sono propedeutiche all'installazione del demone ntkd: apriamo una shell e come amministratore installiamo i pacchetti necessari.

apt-get update

apt-get install build-essential

apt-get install swing

apt-get install openssl libssl-dev

apt-get install xsltproc tinc

apt-get install subversion


Per il corretto funzionamento del sistema, è richiesto il pacchetto stackless python (un progetto sperimentale di python, per maggiori informazioni www.stackless.com). Per l'installazione dovremo scaricare i sorgenti, compilarli e installarli:

scarichiamo ed estraiamo i sorgenti:

wget http://www.stackless.com/binaries/stackless-262-export.tar.bz2

tar xf stackless-262-export.tar.bz2


creiamo la cartella in cui installeremo il software compilato:

sudo mkdir -p /opt/stackless

entriamo nella directory di stackless estratta e compiliamo stackless (come superuser):

cd stackless-2.6.2

./configure --prefix=/opt/stackless

make

make altinstall


Lo stesso procedimento dovremo farlo per M2Crypto e DNSpython:

scarichiamo ed estraiamo i sorgenti di M2Crypto ed estraiamo i sorgenti:

wget http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.20.1.tar.gz

tar xf M2Crypto-0.20.1.tar.gz

entriamo nella directory:

cd M2Crypto-0.20.1/

quindi compiliamo con python:

~/M2Crypto-0.20.1$/opt/stackless/bin/python2.6 setup.py build

~/M2Crypto-0.20.1$/opt/stackless/bin/python2.6 setup.py install


Quindi installiamo DNSPython:

wget http://www.dnspython.org/kits/1.7.1/dnspython-1.7.1.tar.gz

tar xf dnspython-1.7.1.tar.gz

cd dnspython-1.7.1

~/dnspython-1.7.1$ /opt/stackless/bin/python2.6 setup.py build

~/dnspython-1.7.1$ sudo /opt/stackless/bin/python2.6 setup.py install


Installazione di netsukuku

Per prima cosa recuperiamo il codice netsukuku dal repository SVN:


svn co http://dev.hinezumi.org/svnroot/netsukuku/sandbox/lukisi/branches/multipleip netsukuku

in questo modo, all'interno di ~/netsukuku/pyntk trovate la versione python di netsukuku

compiliamo e installiamo andns:

cd ~/netsukuku/ANDNS/andns

~/netsukuku/ANDNS/andns$ make

~/netsukuku/ANDNS/andns$ sudo make install

~/netsukuku/ANDNS/andns$ cd ~/netsukuku/ANDNS/pyandns

~/netsukuku/ANDNS/pyandns$ /opt/stackless/bin/python2.6 setup.py build

~/netsukuku/ANDNS/pyandns$ sudo /opt/stackless/bin/python2.6 setup.py install


compiliamo e installiamo quindi ntkresolv:

cd ~/netsukuku/ntkresolv

~/netsukuku/ntkresolv$ make

~/netsukuku/ntkresolv$ sudo make install


A questo punto, per lanciare il demon, creiamo un link simbolico nella directory etc,:

mkdir -p /etc/netsukuku

sudo ln -s $HOME/netsukuku/pyntk/setup/etc/netsukuku/tinc /etc/netsukuku


ANDNA

verifichiamo che in etc/hostname ci sia il nome che vogliamo venga registrato nella rete, quindi configuriamo il dns wrapper:

~: sudo tee /etc/netsukuku/dnswrapper.conf <<EOF >/dev/null

andnsserver in-process


~: sudo tee /etc/netsukuku/andnsserver.conf <<EOF >/dev/null

inetnameserver 8.8.8.8


In questo caso il server 8.8.8.8 è il DNS pubblico di google....


~: sudo tee /etc/netsukuku/libandns.conf <<EOF >/dev/null

andnsserver 127.0.0.1

EOF


Avviare PynTK

Apriamo un terminale. Andiamo nella directory pyntk, dove troveremo il file ntkd. Lanciamo il demone con l'interprete stackless e specifichiamo le interfacce che vogliamo gestire. (Prima di questo passaggio, ricordiamoci di disattivare eventuali gestori di interfacce di rete, come ad esempio NetworkManager)

cd netsukuku/pyntk

~/netsukuku/pyntk$ sudo /opt/stackless/bin/python2.6 ntkd -i eth0 eth1 -vvvv

il parametro -vvvv indica che vogliamo che il demone ci generi un output sull'interfaccia: possiamo reindirizzarlo eventualmente in qualche file.

A questo punto, per risolvere i nomi con ANDNA, dobbiamo dire al resolver di usare 127.0.0.1 come DNS server:

sudo tee /etc/resolv.conf <<EOF >/dev/null nameserver 127.0.0.1