<> = DISCLAIMER (in Italian, not tech stuff) = Ninux usa la VPN per collegare isole di rete distanti geograficamente tra loro. In nessun caso vengono collegati nodi di singole persone che vogliono accedere ai servizi interni Ninux via VPN. La VPN infatti serve solo per il monitoring e per il trobleshooting. Non si fa traffico reale in VPN in quanto sarebbe molto lento. Se avessimo dato anche in passato l'accesso alla "VPN Tinc" a tutti quelli che lo volevano per giocare adesso Ninux sarebbe una rete in VPN invece di una rete wireless. = Connettersi alla Rete Ninux via VPN con TINC = A seguire verrà illustrata passo passo la procedura per poter configurare i propri sistemi per la connessione [[http://it.wikipedia.org/wiki/Virtual_Private_Network|VPN]] == Guida per i sistemi Linux == Aprire il terminale e seguire le procedure qui indicate: === 1) Installare l'ultima versione di [[http://tinc-vpn.org/|tinc]] === {{{ sudo apt-get install tinc }}} '''__Nota:__''' Assicurarsi che la versione installata sia almeno la 1.0.13 === 2) Creare la cartella Ninux per tinc === {{{ sudo mkdir /etc/tinc/ninux }}} === 3) Creare il file di configurazione === {{{ sudo gedit /etc/tinc/ninux/tinc.conf }}} Una volta aperto gedit, inserire il testo a seguire: {{{ Name = yournickname ConnectTo = Norimberga Mode = switch }}} È necessario inserire un nickname univoco. ''Norimberga'' è il nostro Server HUB e ''Mode = switch'' è necessario perché tinc opererà con una interfaccia [[http://it.wikipedia.org/wiki/Network_tap|TAP]], necessari per eseguire su di esso [[http://it.wikipedia.org/wiki/OLSR|OLSR]]. === 4) Creare la cartella host === {{{ sudo mkdir /etc/tinc/ninux/hosts/ }}} === 5) Generare il Keypair === {{{ sudo tincd -n ninux -K }}} per maggiori approfondimenti, consultare la pagina riguardo alla [[http://it.wikipedia.org/wiki/Crittografia_asimmetrica|Crittografia Asimmetrica]] === 6) Creare il file ''Norimberga'' === {{{ sudo gedit /etc/tinc/ninux/hosts/Norimberga }}} Questo file deve contenere sia l'indirizzo che la chiave pubblica del Server indicati a seguire: {{{ Address = svn.ninux.org -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEA30bZWtIej9kj837Eb8C+nxvEXfy4Jly41tuJYfzpJiP/pTQGaPyF XDEdfwAq8qJpfLaRfKl0pQ9rbDo4zjSlNW8e/5BxTnobXHcvSD9sm8bNAME2qBkI plmeWt4RvDmEKDrJWyUIoyKyaTcCkXpfHslTJSBBj7TSjYX9SCfTkSS3GjNDWMjc C02i2+ZB3balcR+Ea046l/GVFp0htxrUFxew5RDXPmmaiQRF6cpm3fMNtdq9ixz+ uJNjmfHW/lHk4KMUj6KMLca9mS4TWsFxLYmP0jZi7lD2hA3dNCW4nua8HHYPwj+X Mh/vucAMckowzaf+51bGD+o8HVuM1hm4TwIDAQAB -----END RSA PUBLIC KEY----- }}} Se si vuole anche un link di backup è possibile utilizzare un Server secondario ==== 6a) Creare il file di backup ''guinness'' ==== {{{ sudo gedit /etc/tinc/ninux/hosts/guinness }}} Come sopra, inserire l'indirizzo e la chiave a seguire: {{{ Address = hispanico.ninux.org -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAp2VqrJOPTubK+I6lineZZ0QcgsuxtPaGqlEHbCis2I03Tv2KQ8ka JQOdyuPcn/1KJE5Ys0JUgl67W5fneicQOSei/+9e/AbuzcPA35/Ldu/sfv+SP2/T XSU+W681zyfUFk8fQqbaU6XXSYMJX1ZEWAv5sWWRSA0612xIkzKZoG628mwBYoGG d9kjnkZRpqFJd2ZFyn+/wyX5yof/3TZ7UIntnUVgljOn6cscDFzOh+zAqbrPXyaD ha8pP9ZvOILlK55ZDx1NLoMWiS1x4L8J0u+vUsTgjvo466J5AuYrwt4HpLvULUQq Pgvk/5z4OPLWUi7jgjQAQ/GO7hg69ybDyQIDAQAB -----END RSA PUBLIC KEY----- }}} ==== 6b) Modificare il file di configurazione ==== {{{ sudo gedit /etc/tinc/ninux/tinc.conf }}} e aggiornarlo con i seguenti dati: {{{ Name = yournickname ConnectTo = Norimberga ConnectTo = guinness Mode = switch }}} === 7) pubblicazione del proprio IP === Consultare la pagina della [[GestioneIndirizzi#Tabella_IP_Classe_A_10.2BAC8-8|gestione degli indirizzi]] e scegliere un indirizzo IP entro il range 10.0.1.'''0~24'''. Controllare bene che l'indirizzo scelto non sia già assegnato, quindi modificare la pagina e pubblicare tale IP insieme ai propri dati di afferenza. __Nota:__ Sarebbe preferibile [[http://wiki.ninux.org/?action=newaccount|iscriversi]] al nostro Wiki. === 8) Creare il file''tinc-up'' === {{{ sudo gedit /etc/tinc/ninux/tinc-up }}} e inserire il seguente script: {{{ ip link set dev ninux up ip a a dev ninux TUOIPSCELTO/24 broadcast 10.0.1.255 #Adjust MTU ip link set mtu 1350 dev ninux iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu }}} '''__Nota bene__''' sostituire '''''TUOIPSCELTO''''' con l'indirizzo IP scelto al [[#A7.29_pubblicazione_del_proprio_IP|punto 7]] Abilitare i permessi di esecuzione al file ''tinc-up'' {{{ sudo chmod +x /etc/tinc/ninux/tinc-up }}} === 9) Invio della richiesta di abilitazione === Inviare un e-mail all'indirizzo contatti@ninux.org con i seguenti dati: * Nickname (scelto al [[#A3.29_Creare_il_file_di_configurazione|punto 3]]) * Indirizzo IP scelto * La chiave '''pubblica''' generata - attraverso la quale potremo abilitarti al Server VPN e quello di backup. Dopo aver ricevuto la notifica che la chiave pubblica è stata autorizzata è possibile provare a connettersi con il seguente comando: {{{ tincd -n ninux }}} Se tutto funziona è possibile fare un [[http://it.wikipedia.org/wiki/Ping|ping]] all'indirizzo 10.0.1.1 Ora bisognerà configurare [[http://it.wikipedia.org/wiki/OLSR|OLSR]] per utilizzare l'interfaccia "ninux". '''Note inportanti per la configurazione del protocollo OLSR''' È FONDAMENTALE: * Utilizzare la versione OLSR 0.6.1 * Inserire un Link Quality Multiplier nel file di configurazione dell'interfaccia di OLSR ''olsrd.conf''. Somiglierà a quanto segue: {{{ Interface "ninux" { LinkQualityMult default 0.2 } }}} == OpenWRT e TincVPN == Installare [[http://tinc-vpn.org/|tinc]] e configurarlo (vedi i paragrafi precedenti per la configurazione): {{{ opkg update opkg install tinc }}} I pacchetto Tinc per [[https://openwrt.org/|OpenWRT]] è veramente minimo. Lo script init.d non è più adatto e deve essere riconfigurato con questo: {{{#!bash #!/bin/sh /etc/rc.common START=50 start() { tincd -n ninux } stop() { killall tincd } }}} Se si vuole utilizzare il comando 'IP' per tinc-up è necessario installare tale pacchetto con {{{ opkg install ip }}} Poiché tincd viene configurato manualmente, bisogna utilizzare il seguente codice in /etc/config/network per collegare l'interfaccia VPN a quella di Ninux, creata da tinc. In questo modo si può utilizzare l'interfacciaVPN quando si configurano con UCI altri programmi tipo [[http://it.wikipedia.org/wiki/Optimized_Link_State_Routing_Protocol|OLSRD]] {{{ config interface vpn option proto none option ifname ninux }}} Se il Firewall OpenWRT non è attivo saltare questo passo. Nel file /etc/config/firewall è necessario abilitare il traffico in invio tra la LAN e il VPN e viceversa, altrimenti non si riuscirà a raggiungere altri compputer nella [[http://it.wikipedia.org/wiki/Subnet|subnet]], quindi aggiungere il seguente codice: {{{ ##VPN ninux Zone config 'zone' option 'name' 'vpn' option 'input' 'ACCEPT' option 'output' 'ACCEPT' option 'forward' 'ACCEPT' ##Traffic from/to lan/vpn config forwarding option 'src' 'vpn' option 'dest' 'lan' config forwarding option 'src' 'lan' option 'dest' 'vpn' ##end VPN ninux Zone }}} Intallare OLSRD e i suoi componenti aggiuntivi: {{{ opkg install olsrd olsrd-mod-mdns olsrd-mod-dyn-gw olsrd-mod-arprefresh olsrd-mod-httpinfo olsrd-mod-txtinfo olsrd-mod-nameservice }}} '''__Nota:__''' Non tutti i componenti aggiuntivi sarebbero necessari, ma sicuramente lo è olsrd-mod-mdns per bonjour/zeroconf. Questi componenti sono elencati in /etc/config/olsrd perciò tanto vale installarli tutti. Nel file /etc/config/olsrd è ora possibile aggiungere il seguente codice: {{{ config 'Interface' option 'interface' 'vpn' option 'LinkQualityMult' 'default 0.2' }}} è molto importante settare il Link Quality Multiplier per utilizzare solo la VPN nel caso non ci sia un collegamento wireless disponibile. Se dopo la messa a punto di {{{LinkQualityMult}}} il demone OLSRD non inserisce percorsi nel kernel, è necessario togliere il commento a questa riga: {{{ #LinkQualityAlgorithm "etx_fpm" }}} Lo script a seguire è necessario per abilitare la LAN non OLSR per comunicare con altri VPN {{{ config LoadPlugin option library 'olsrd_mdns.so.1.0.0' option NonOlsrIf 'lan' }}} In questo modo annunceremo ad altri host sulla rete OLSR la nostra LAN: {{{ config 'Hna4' option 'netaddr' 'LAN_ADDR' option 'netmask' 'NETMASK_LAN_ADDR' }}} Sostituire LAN_ADDR with con la propria [[http://it.wikipedia.org/wiki/Subnet|sottorete]] LAN (ad es: 192.168.23.0) e NETMASK_LAN_ADDR con la propria [[http://it.wikipedia.org/wiki/Subnet_mask|marchera di rete]] (per trovare una sottorete disponibile controllare GestioneIndirizzi, e se è già utilizzata si prega di cambiarla) == Guida per i Sistemi Apple == È necessario avere installato [[http://developer.apple.com/xcode/|XCode]] e [[http://www.macports.org/|MacPorts]]. 1) Installare XCode dal [[http://developer.apple.com/xcode/|sito]] o dal DVD di installazione dell'OSX. 2) Installare MacPorts (http://www.macports.org/) 3) Successivamente, chiudere e riaprire il terminale. Aggiornare il sistema e la lista di porte con i comandi a seguire: {{{ sudo port selfupdate sudo port sync }}} Installare [[http://tinc-vpn.org/|tinc]] e tutte le dipendenze necessarie. {{{ sudo port install tinc }}} I files di configurazione sono posizionati in {{{/opt/local/etc/tinc}}} Tinc può essere ora configurato ed eseguito. 3) I files di configurazione di Tinc su OSX sono posizionati in {{{/usr/etc/tinc}}} ma quelli per la VPN di Ninux VPN verranno posizionati nella cartella {{{/Library/tinc}}}. Digitare il comando a seguire per creare la cartella di configurazione per Ninux: {{{ mkdir -p Library/tinc/ninux }}} 4) Sarà necessario creare creare i seguenti file e cartelle: ''Tinc.conf'' con il seguente codice: {{{ Name = TUONICKNAME ConnectTo = Norimberga Mode = switch Device = /dev/tap0 }}} ''tinc-up'' con il seguente codice: {{{ ifconfig $INTERFACE HEREYOURIPADDRESS/24 netmask 255.255.255.0 broadcast 10.0.1.255 ifconfig $INTERFACE mtu 1350 }}} Dove al posto di ''HEREYOURIPADDRESS'' bisogna mettere l'indirizzo IP scelto in GestioneIndirizzi ''tinc-down'' con il seguente codice: {{{ ifconfig $INTERFACE down }}} ''hosts/Norimberga'' con il seguente : {{{ Address = svn.ninux.org -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEA30bZWtIej9kj837Eb8C+nxvEXfy4Jly41tuJYfzpJiP/pTQGaPyF XDEdfwAq8qJpfLaRfKl0pQ9rbDo4zjSlNW8e/5BxTnobXHcvSD9sm8bNAME2qBkI plmeWt4RvDmEKDrJWyUIoyKyaTcCkXpfHslTJSBBj7TSjYX9SCfTkSS3GjNDWMjc C02i2+ZB3balcR+Ea046l/GVFp0htxrUFxew5RDXPmmaiQRF6cpm3fMNtdq9ixz+ uJNjmfHW/lHk4KMUj6KMLca9mS4TWsFxLYmP0jZi7lD2hA3dNCW4nua8HHYPwj+X Mh/vucAMckowzaf+51bGD+o8HVuM1hm4TwIDAQAB -----END RSA PUBLIC KEY----- }}} ''hosts/yournickname'' nel quale andrà inserita la propria chiave pubblica (vedere i passi successivi) 5) Rendere eseguibili i files ''tinc-up'' e ''tinc-down'': {{{ chmod +x tinc-up tinc-down }}} 6) Inoltre, sarà necessario generare il paio di chiavi (publica e privata) per il proprio terminale. Fatelo solo dopo che il file di cui sopra siano configurati correttamente! Vi verrà chiesto per le posizioni di alcuni file. Le posizioni predefinite vanno bene. {{{ sudo tincd -c ~/Library/tinc/ninux -K }}} spostare la propria '''chiave pubblica''' nel file {{{/hosts/yournickname}}}. 7) Una volta completato inviare un'e-mail a contatti@ninux.org con il proprio Nickname scelto al punto 4 e la propria chiave '''pubblica''' per consentirci di abilitavi al Server VPN. 10) Una volta avvenuta conferma che la chiave pubblica è stata autorizzata è possibile tentare una connessione: {{{ sudo tincd -c ~/Library/tinc/ninux --pidfile=/var/run/tincd.pid -D --debug=1 }}} Se tutto funziona è possibile fare un [[http://it.wikipedia.org/wiki/Ping|ping]] all'indirizzo 10.0.1.1. Ora bisognerà configurare [[http://it.wikipedia.org/wiki/OLSR|OLSR]] per utilizzare l'interfaccia "tap0". Per interrompere il proprio client basta eseguire: {{{ kill -9 'cat /var/run/tincd.pid' }}}