HowTo/Netsukuku
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:
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