Configurazione VDSL2 Infostrada con modem in bridge e PPPoE su router

Le linee ADSL sono ormai diventate lo standard “minimo” utilizzato per fornire connettività a livello domestico ed aziendale. Il Web 2.0, i social sempre più integrati, lo streaming live e non, e tanti altri servizi hanno causato un aumento dell’utilizzo della rete, ed hanno portato i provider alla ricerca di nuove soluzioni per fornire connettività maggiori. Le vecchie tecnologie si sono basate sul rame dei cavi telefonici per fornire connettività alle abitazioni, a partire dalle connessioni 56 kb/s con l’uso di modem seriali fino alle ultime ADSL2+ con velocità di download massime di 20Mb/s.

L’ultima trovata per l’aumento delle velocità è la VDSL, conosciuta anche come FTTC (Fiber To The Cabinet). Funziona più o meno come una ADSL ma utilizza frequenze più alte per comunicare, di conseguenza la banda a disposizione aumenta. Si utilizza sempre il rame, può essere installata sulle linee pre-esistenti e non richiede interventi da parte dell’utente per il funzionamento e l’installazione. In compenso gli operatori si sono preoccupati di sostituire buona parte del tratto in rame con la fibra ottica (motivo per cui viene chiamata erroneamente “fibra”), accorciando le distanze tra gli apparati (infatti il tratto in rame per ora rimane). Infatti i vari DSLAM VDSL2 sono installati direttamente negli armadi da cui partono le cosidette coppie secondarie (ultimo miglio) riducendo il tratto in rame ad una media di 300 metri (al posto di diversi Km) e raggiungendo portanti che arrivano anche a 85-90 Mb/s in download e 25-30 Mb/s in upload.

Su un profilo di questo tipo, fornire una connnettività da contratto di 30 Mb/s in download e 3Mb/s in upload è semplicissimo per gli operatori e la stabilità della connessione è garantita dal fatto che la linea stessa lavora a meno della metà della sua reale capacità di funzionamento (al contrario delle vecchie ADSL quando la velocità reale era praticamente data dalla massima capacità della linea, considerata la lunghezza, l’attenuazione, il disturbo ed altre variabili).

Unico intervento da parte dell’utente, oltre ad attivare un contratto con un operatore VDSL, è la sostituzione del modem con quello fornito dall’operatore, oppure utilizzando un modem proprio acquistato a parte.

Questa piccola guida riguarda proprio questo caso e consenitrà di configurare il modem per collegarsi tramite PPPoE esterna.

Prima cosa occorre configurare il modem per funzionare in modalità VDSL2. Molti modem hanno un’impostazione automatica che consente di selezionare automaticamente il profilo in base al tipo di segnale che viene rilevato sul doppino, ma per velocizzare l’accensione è preferibile impostare VDSL in manuale.

In seguito occorre configurare un nuovo bridge PTM per consentire ad un router esterno di effettuare la PPPoE tramite ethernet. Nella VDSL i valori di VPI e VCI sono stati sostituiti da un parametro chiamato VID (VLan ID). Per tutti i provider italiani, i vecchi valori di VPI/VCI erano 8/35. Anche le VDSL hanno mantenuto una numerazione simile utilizzando 835 come VID.

Da questo momento in poi possiamo collegare un PPPoE client (su router o su computer). L’indirizzo IP pubblico sarà comunque assegnato automaticamente.

Linea vuota sul crontab

Quando nei sistemi Linux si configurano operazioni da eseguire periodicamente tramite cronjobs utente (crontab -e) è opportuno ricordarsi di inserire una riga vuota alla fine del file. In caso contrario cron ignora l’intero contenuto del file e non esegue nessuna delle operazioni pianificate.

Creare una rete privata virtuale con OpenVPN

Al giorno d’oggi le reti private virtuali sono uno strumento fondamentale per chi lavora in remoto o chi vuole accedere in modo sicuro a risorse esterne senza dover esporre i servizi direttamente sulla rete pubblica. La VPN permette di creare una vera e propria LAN dedicata in cui far accedere solo i dispositivi considerati Trusted, o consente l’accesso a reti già esistenti attraverso sistemi di autenticazione, cifratura o accesso selettivo.

Tra le varie soluzioni esistenti ricopre un ruolo fondamentale la PPTP, ben supportata dai sistemi Apple (compresi iPad ed iPhone), su Android e dai sistemi Windows grazie ad un’integrazione nativa. Questa soluzione, oltre ad essere ormai datata, presenta diverse lacune dal punto di vista della sicurezza, ed inoltre si basa su un tunnel GRE (protocollo IP 47) per il traffico dati punto-punto, soluzione che spesso costringe a configurazioni particolari sopratutto nel caso in cui sia necessario stabilire più VPN sulla stessa macchina.

Una delle soluzioni più utilizzate oggi in campo enterprise è l’IPSec. In realtà con il termine IPSec si intende tutta una serie di strumenti utilizzati per cifrare, certificare e rendere sicuro il traffico all’interno di reti generiche, ma l’utilizzo più diffuso si ha nella creazione di VPN. Il sistema è largamente supportato da router/firewall hardware come Cisco o Juniper e sui sistemi Windows è presente un client nativo che consente di creare tunnel con protocollo L2TP/IPSec. Nei sistemi operativi Linux è necessaria l’installazione di software dedicati come OpenSWAN. La tecnologia è molto robusta dal punto di vista della sicurezza ma è più complessa rispetto ad altre soluzioni e richiede una configurazione molto articolata per un corretto funzionamento.

Al giorno d’oggi si stanno diffondendo diverse soluzioni proprietarie che fanno uso di client specifici installati sul sistema operativo. Se da un lato questa soluzione rende più semplice la connessione, dall’altro complica il libero utilizzo del computer perché i client installati sono in grado di configurare ogni aspetto del sistema operativo, comprese le regole di routing, DNS e firewall. Queste configurazioni sono necessarie per le VPN che di fatto inseriscono i PC direttamente nelle reti aziendali.

Una delle soluzioni più sicure, efficaci, meno invasive e sopratutto OpenSource è OpenVPN. Questo sistema, che ultimamente si sta diffondendo anche grazie a delle personalizzazioni commerciali spesso fornite con firewall hardware, fa uso di una soluzione mista tra un driver kernelspace ed un demone userspace. Di fatto il driver crea un’interfaccia di rete virtuale che può dialogare con le altre interfacce degli altri nodi per mezzo del demone in esecuzione.

La soluzione comprende autenticazioni per mezzo di certificati SSL fino a 4096 bit e può utilizzare sistemi di cifratura come l’AES-256. Il traffico dati tra un demone e l’altro può avvenire per mezzo di connessioni TCP o UDP, con porte completamente configurabili. Uno dei punti di forza di questa tecnologia è quello di poter lavorare sia in modalità “tun” che in modalità “tap”. La prima stabilisce una connessione punto punto in Layer3 ISO/OSI, mentre la seconda stabilisce un link su Layer2 ISO/OSI consentendo di creare un vero e proprio Switch di rete virtuale al quale ogni client accede e si collega.

Ho iniziato una piccola guida per la creazione di una VPN semplice da configurare. Potete trovarla nella pagina dedicata.

Building FFMpeg 2.5.3 on Debian 7.8 i686

This guide will describe how to build the last FFmpeg 2.5.3 on Debian 7.8 with i686 architecture with custom install prefix both for FFmpeg and external libraries. In order to keep your system clear, FFmpeg will be compiled and installed in /opt/ffmpeg prefix, and will have all dependencies enabled using only libraries from official Debian repository with some needful libraries. Only x264, x265 and libaacplus will be added using the last version of sources from the last tarball release or the last commit in official CVS repositories.

In order to ensure that all copy and/or install commands have writing access to /opt directory, every “make install” command should be launched as root. Another solution is to create the destination directory by hand, change ownership to the building user, launch “make install” and finally re-change ownership to root. But the first is easier.

First of all you will need to install all compiling and repository tools using apt-get. You can copy/paste this command:

After that, you have to install all dependencies from official repository (both libraries and headers). Again, you can copy/paste the command:

Now you have to download official source archive. If you have problems with sources link you can browse the official FFmpeg site at https://www.ffmpeg.org/download.html and choose the last archive available. This guide will mostly work with all 2.5.x versions.

Now we need to prepare all external libraries. We start downloading sources using wget, git and mercurial. The first one is a tarball archive, so you have to extract it. The last two command directly create 2 directories with all sources inside.

In order to build x264 and x265 you will need a modern Yasm Modular Assembler. The version shipped with Debian official packages is too old (version 1.1.0), and we need YASM to be at least version 1.2.0. So we need to download and updated version on YASM and compile it.

After that you can build x264 video encoder. Enter in “x264” directory and launch these commands. You have to prepend PATH environment variable in order to override default system path and ensure that configure script will use our fresh YASM installation. I prefer to prepend PATH in each command instead exporting it globally.

Now we have to build x265. Move to the right build folder and launch the configuration script using cmake. After that use the classical “make && make install”.

We continue building the last external library. Unpack libaacplus sources, enter in directory and build it. Have a look to the with-fftw3-prefix parameter. In Debian most of the libraries are installed in a arch-dependent directory, so you have to put the right folder based on your architecture. The most used are i386-linux-gnu and x86_64-linux-gnu. Remember to add the trailing slash at the end of the path.

All external libraries are done. Now, in order to let FFmpeg configure script to find the right external libraries, you need to prepare some environment variables. I prefer to prepare a script which do all the work and contains all configuration flags.

Now we need to launch classical “make && make install”

We are just one step from the end.

FFmpeg need to find all external libraries in order to be launched, and our libraries are installed using a custom prefix, with different directories inside /opt. I suggest to prepare an environment script which sets all variables needed, ready to be launched before calling ffmpeg command. Put it on /opt/ffmpeg/env.sh

Now, to launch FFmpeg from shell you can use these commands:

Now enjoy your fresh FFmpeg in your Debian.

ioQuake3 Ubuntu mouse

ioQuake3 su Ubuntu e derivate ha un problema con il mouse.

Il puntatore ritorna automaticamente alla posizione di partenza circa ogni 1 o 2 secondi. Il problema si presenta fin dall’inizio del gioco, rendendo quasi impossibile selezionare le voci del menù e spostando la visuale durante il gioco.

Il problema si verifica in entrambe le versioni 32 e 64 bit.

Per risolvere il problema è sufficiente lanciare il binario impostando una variabile su BASH:

In questo modo il mouse si comporta in maniera corretta.

FFmpeg 2.3.3 on Ubuntu 14.04

Questa guida contiene le istruzioni per compilare FFmpeg 2.3.3 “Mandelbrot” (non Libav) su Ubuntu 14.04 e derivate abilitando tutte le dipendenze possibili che richiedono librerie e pacchetti presenti nella distribuzione stessa, senza la necessità di compilare librerie esterne.

Se non presenti, installare i pacchetti contenenti i tool di sviluppo

Installare tutti i pacchetti necessari, comprese le versioni “-dev” che contengono i files di sviluppo.

Scaricare FFMpeg dal sito ufficiale, estrarre i sorgenti ed entrare dentro la directory:

Configurare i sorgenti per essere compilati. Come prefix di installazione si può specificare una qualsiasi directory del sistema operativo. Al suo interno verranno inseriti tutti i files rispettando la struttura base (lib, bin, share, etc.)

Lanciare la compilazione. Il parametro “-j” specifica quanti job paralleli avviare. In un sistema quad-core di solito si specifica 4 o 6.

Al termine, installare FFmpeg

Installare Linux su RaspberryPi con SD di qualsiasi dimensione

In questo esempio mostro come installare in una qualsiasi SD una distribuzione per la RaspberryPi, senza dover eseguire procedure per per l’espansione delle partizioni e con la possibilità di organizzare le partizioni come si vuole.
Gli esempi sono fatti con la Raspbian (2013-05-25-wheezy-raspbian.zip)

Partizionare (fdisk, parted, cfdisk) la scheda SD e creare due partizioni:

  1. primaria, 64MB, FAT32 LBA (codice 0x0c)
  2. primaria, tutto lo spazio rimanente, Linux (codice 0x83)

Formattare la prima con mkdosfs (FAT32):

Formattare la seconda con mkfs (ext3 o ext4):

Ora è neccessario montare l’immagine su delle directories temporanee per copiare i dati.
Estrarre il file ZIP e verificare gli offset con fdisk:

Nella colonna “Start” abbiamo i valori per montare le partizioni con l’offset.
Creiamo due directories temporanee:

Montiamo le partizioni dell’immagine:

Creiamo la directory per la scheda SD e montiamo le due partizioni:

Copiamo tutti i files del sistema operativo:

Copiamo tutti i files della partizione di boot:

Ora verifichiamo con vim il contenuto del file in /mnt/boot/etc/fstab:

Nella RPi, il device della scheda SD si chiamerà /dev/mmcblk0. Verificate che il tipo di filesystem corrisponda con quello da voi scelto, in questo caso ext4, ed aggiungete eventuali righe per ogni partizioni che avete creato.
Ora smontate tutte le partizioni:

Rimuovete la scheda dal PC e collegatela alla RPi, e tutto dovrebbe andare.