Questa pagina (attualmente work-in progress e non completa) spiegherà passo passo come creare un nuovo nodo con le configurazioni specifiche per l'isola lombarda. Le indicazioni di questa pagina sono solo per delle configurazioni semplici (e quindi consigliata per chi sta iniziando): per avere ulteriori informazioni sull'isola lombarda e su possibili varianti di configurazione è utile leggere l'articolo [[Lombardia/Architettura della rete]]. === Test di fattibilità === Il primo passo è come in tutta ninux inserire il proprio nodo potenziale sulla [[http://map.ninux.org/|mappa]]; a quel punto si possono contattare i nodi vicini sia direttamente che tramite la [[http://ml.ninux.org/mailman/listinfo/lombardia|mailing list]] per scoprire con quali nodi ci sono possibilità di collegamento. Prima di comprare equipaggiamento è possibile fare un test veloce con un binocolo ed un pezzo di stoffa colorata o qualcos'altro di facilmente identificabile, per verificare la visibilità ottica tra i due punti. In alternativa, partecipando agli incontri della comunità può capitare l'occasione di organizzare qualche test con antenne "di scorta"; non c'è però nessuna garanzia che queste antenne siano sempre disponibili, o che il loro proprietario sia in zona per effettuare il test. === Acquisto dell'equipaggiamento e hardware consigliato === Una volta appurato che il collegamento è ragionevolmente possibile, si può acquistare l'hardware necessario; prima di farlo vale la pena chiedere in [[http://ml.ninux.org/mailman/listinfo/lombardia|mailing list]] se altre persone siano interessate ad un acquisto di gruppo. Le antenne da usare dipendono ovviamente dallo specifico collegamento; nei casi più comuni consigliamo l'uso di una parabola verso un nodo esistente e successivamente un'antenna a pannello per permettere ad altri nodi il collegamento verso il nostro nodo. Anche se è possibile fare routing sulle antenne, il nostro suggerimento è di fare routing a terra, specialmente se l'antenna è installata in posizione difficile da raggiungere; per questo servirà un access point sul quale sia possibile installare openwrt oppure un single board computer o miniserver con porta di rete e chiavetta wifi sul quale sia possibile installare debian. ==== Antenne ==== la scelta dell'antenna dipende molto dalle caratteristiche del collegamento e va fatta dopo aver deciso con che nodo collegarsi. * Ubiquity Nanostation M5 (apertura 60°, adatta per essere raggiungibili da più nodi) * Ubiquity NanoBeam M5-400 (parabola, per link punto-punto) ==== Schede Debian-based ==== Vantaggi: * Sistema più simile a quello di un normale computer. * Maggiori possibilità di poter offrire servizi vari dalla stessa scheda che effettua il routing. Svantaggi: * Maggiori difficoltà nel trovare hardware economico con più di una scheda di rete (necessità di schede di rete usb per il collegamento verso casa). Schede/dispositivi potenziali: * [[https://www.olimex.com/Products/OLinuXino/A10/A10-OLinuXino-LIME/open-source-hardware|A10 Olinuxino LIME]] o [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/open-source-hardware|A20 Olinuxino Lime]]: schede Open Source Hardware supportate nativamente da Debian jessie+ (30/33 EUR + IVA). * Raspberry PI / Raspberry PI 2 / Raspberry PI 3. ==== Router (o schede) con OpenWRT ==== Vantaggi: * Hardware facilmente reperibile a basso costo. * Interfaccia grafica specifica per la configurazione della rete. Svantaggi: * Minori prestazioni dell'hardware (a parità di costo). Schede/dispositivi potenziali: * TP-Link WR841N o TP-Link WR841ND (circa 20 euro) attenzione alla versione del firmware: potrebbe non essere più modificabile [[http://ml.ninux.org/pipermail/battlemesh/2016-February/004379.html]] * [[https://www.olimex.com/Products/OLinuXino/RT5350F/RT5350F-OLinuXino-EVB/open-source-hardware|RT5350F-OLinuXino-EVB]] (24 EUR più iva) * [[https://omnia.turris.cz/en/|Turris Omnia]] (circa 250 euro): decisamente sovradimensionato, ma utile come dispositivo unico dal quale offrire servizi multipli. === Installazione === TODO: informazioni su come effettuare l'installazione fisica degli apparati, dal montaggio dei supporti al collegamento dei cavi di rete alle prese opportune. === Configurazione === ==== Antenna ==== L'antenna deve essere configurata in modalità bridge (tra interfaccia wlan e lan) e settata la modalità AccessPoint o Station in base alla configurazione dei vicini. In modalità AP, impostare come SSID ninux.org. e nessuna protezione. Consigliamo di modificare le credenziali di accesso standard dell'antenna poichè l'interfaccia di amministrazione sarà disponibile a coloro connessi al link. Inoltre consigliamo di cambiare indirizzo IP di default per evitare di andare in conflitto con altre antenne del link. ==== Debian ==== In futuro sarà sufficiente installare il pacchetto ninux-lombardia (da un nostro repository) per ottenere le dipendenze e configurare automaticamente un nodo ninux rispondendo solo ad alcune semplici domande; per ora è necessario impostare manualmente la configurazione. * Configurare il sistema per usare il nome del proprio nodo come hostname: {{{ echo $IL_MIO_NODO > /etc/hostname }}} * Installare i seguenti pacchetti: {{{ # apt-get install batctl rdnssd }}} * Caricare il modulo batman all'avvio aggiungendo una riga con `batman-adv` a `/etc/modules` * Impostare l'interfaccia batman per essere configurata automaticamente, con il seguente file `/etc/network/interfaces.d/batman` {{{ auto eth0 auto bat0 iface bat0 inet6 auto pre-up batctl if add eth0 }}} aggiungendo `eth1` per un eventuale seconda interfaccia collegata ad un'altra antenna, eccetera. * Perché vengano inviate le informazioni relative al nodo, installare anche il pacchetto `alfred`, disponibile in `stretch` o in `jessie-backports`: {{{ apt install -t jessie-backports alfred }}} ed installare i seguenti unit file perché all'avvio vengano lanciati `alfred` in modalità master e `batadv-vis` per inviare dati sulla topologia della rete. `/etc/systemd/system/alfred.service`: {{{ [Unit] Description=Almighty Lightweight Fact Remote Exchange Daemon Requires=network.target After=network.target [Service] ExecStart=/usr/sbin/alfred -i bat0 -m [Install] WantedBy=multi-user.target }}} `/etc/systemd/system/batadv-vis.service`: {{{ [Unit] Description=Almighty Lightweight Fact Remote Exchange Daemon Requires=alfred [Service] ExecStart=/usr/sbin/batadv-vis -i bat0 -s [Install] WantedBy=multi-user.target }}} al prossimo riavvio dell'interfaccia il computer sarà un nodo Ninux, ricevendo anche le informazioni sul DNS tramite rdnssd. ===== Wifi collegato in bridge ===== * Installare i seguenti pacchetti: {{{ # apt-get install bridge-utils, hostapd }}} * TODO: configurare hostapd per usare wlan0 come access point. * Anziché quanto riportato sopra, configurare bat0 come manual in `/etc/network/interfaces.d/batman` {{{ auto eth0 auto bat0 iface bat0 inet6 manual pre-up batctl if add eth0 }}} * Quindi aggiungere la configurazione del bridge in `/etc/network.d/bridge`: {{{ iface wlan0 inet6 manual iface br0 inet6 static bridge_ports bat0 wlan0 bridge_fd 0 }}} Al prossimo riavvio delle interfacce coinvolte si fornirà una rete wireless Ninux tramite la quale qualunque dispositivo in grado di ricevere l'autoconfigurazione IPv6 si potrà collegare direttamente all'isola lombarda, senza doversi configurare come nodo batman. ===== Router verso la rete di casa ===== TODO ==== OpenWRT ==== ===== Separazione rete ninux / rete locale tramite vlan ===== In questa sezione vedremo come utilizzare un router con installato openwrt e almeno due interfaccie lan, per permettere l'accesso alla rete ninux dalla rete locale, senza che dalla rete ninux ci sia accesso indiscriminato alla rete locale. Per fare questo verra' creata una rete vlan (virtual lan) all'interno della rete locale. Queste istruzioni sono per router con openwrt con switch integrato. La procedura e' stata provata su un RT5350F-OLinuXino e openwrt versione 15.05. Per prima cosa verificare qual è la porta lan e la porta wan. Collegandoci alla router tramite ssh, e possibile vedere il file di configurazione /etc/config/network: {{{ 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 globals 'globals' option ula_prefix 'fd74:7309:6675::/48' config interface 'lan' option ifname 'eth0.1' option force_link '1' option macaddr '00:0c:43:30:52:88' option type 'bridge' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' config interface 'wan' option ifname 'eth0.2' option force_link '1' option macaddr '00:0c:43:30:52:89' option proto 'dhcp' config interface 'wan6' option ifname 'eth0.2' option proto 'dhcpv6' config switch option name 'rt305x' option reset '1' option enable_vlan '1' config switch_vlan option device 'rt305x' option vlan '1' option ports '0 1 2 3 6t' config switch_vlan option device 'rt305x' option vlan '2' option ports '4 6t' }}} Nel caso uno volesse sapere qual è la porta corrispondente è possibile usare il comando [[http://wiki.openwrt.org/doc/techref/swconfig|swconfig]]: {{{ root@OpenWrt:/# swconfig list Found: switch0 - rt305x root@OpenWrt:/# swconfig dev switch0 show | egrep -i "port|vlan" [...] Port 0: link: port:0 link:up speed:100baseT full-duplex Port 1: link: port:1 link:down Port 2: link: port:2 link:down Port 3: link: port:3 link:down Port 4: link: port:4 link:down Port 5: link: port:5 link:down Port 6: link: port:6 link:up speed:1000baseT full-duplex VLAN 1: ports: 0 1 2 3 6t VLAN 2: ports: 4 6t }}} Da questi due comandi vediamo che il nome dello switch è switch0, e che in questo momento l'unico cavo collegato è collegato alla porta 0 (link up). La porta 6, non e' una vera porta fisica, ma è la cosidetta porta cpu, ossia la porta dello switch connessa alla cpu. Vediamo anche che ci sono due vlan configurate 1 e 2, e che la porta 0 e' associata alla vlan1. Nella sezione delle vlan, la 't' di fianco al numero di porta indica che la porta e' "tagged". Si consiglia la lettura delle seguenti pagine [[https://wiki.openwrt.org/doc/uci/network/switch|switch_configuration]], [[http://wiki.openwrt.org/inbox/doc/extend_router_ports_managed_switch|managed_switch]] per approfondire l'argomento. Se si guarda invece l'output di ifconfig si vedranno una serie di interfaccie configurate. Tra cui eth0.1 e eth0.2, che corrispondono rispettivamente alla vlan 1 e 2. A questo punto possiamo creare una nuova vlan su cui far arrivare la rete ninux: {{{ root@OpenWrt:/# swconfig dev switch0 vlan 212 set ports '0 6t' root@OpenWrt:/# swconfig dev switch0 set apply }}}