La vita, l’associazione, le vacche

Il mondo è bello perché è avariato. La vita è bella e basta. L’associazione, messa lì al posto dell’amore, non merita tanta attenzione come l’amore, ma io faccio parte di un’associazione perché ho una passione, per il software libero in particolare, ed una passione è quasi amore. In ogni caso l’amore è una cosa troppo sublime e complessa per parlarne su un blog. Il vero motivo, però, per cui al posto dell’amore ci ho messo l’associazione, è perché ci stava bene assieme al resto del titolo, ovvero assieme alle vacche.
Le vacche hanno questa caratteristica particolare che le contraddistingue: sono grosse, si vedono da lontano. Ed in rapporto alla loro dimensione ed al loro peso, sono poco intelligenti, potremmo dire tranquillamente stupide. Non a caso si dice che qualcuno fa qualcosa “bovinamente” volendo intendere che lo fa senza ragionarci.
Così succede che l’associazione debba, fra le altre cose, pascolare anche un paio di vacche, perché queste non sono abbastanza intelligenti da capire che il loro bovinismo è dannoso per loro stesse, prima ancora che per gli altri. Una delle due è talmente stupida da credere che nessuno la riconosca solo perché indossa un naso di plastica con baffi ed occhiali finti. L’altra invece è un pochino più intelligente, ma non abbastanza da capire che nessuno la considererà mai più di una vacca, se continua a comportarsi da vacca.
Peccato, perché lei a volte dimostra un neurone in più della media e potrebbe davvero fare buon latte, ma ogni volta che fa il latte poi ci caga sopra senza pietà e quel che ne risulta nessuno lo vuole nemmeno annusare, ovviamente.
Cosa significa tutto ciò? Significa che avrei voglia di scappare dalla città, per pascolare vacche vere, almeno loro colpa per la loro stupidità non ne hanno.

Ovvio, quindi taciuto. Virtualizzazione con libvirt e KVM.

Ora se avete voglia provate a cercare una pagina che descriva, passo passo, con linguaggio tecnico capibile da un amministratore Linux che però non hai mai usato KVM, come fare a creare un firewall Linux in un sistema guest virtualizzato con libvirt e KVM.

Le informazioni sono tutte là fuori, da qualche parte, su questo non c’è dubbio. Io però non ho trovato un posto in cui fossero raccolte tutte e solo quelle necessarie a creare un firewall in un guest. Per esempio, è abbastanza intuitivo che per creare un firewall virtualizzato la scheda di rete virtuale dovrà essere posta in bridging con quella fisica e non sottoposta a NAT. Non pretendo che questo mi venga spiegato, se non lo capisco da me, ho sbagliato lavoro oppure devo prima studiare e poi mettermi a fare. Quello che però vorrei che mi fosse scritto a chiare lettere, è che il bridge, con la scheda di rete virbr0 (abbreviazione di “VIRtual BRidge 0”), non si può fare. E di nuovo, non è che non ci sia scritto, solo che è scritto in una noticina al fondo di una pagina all’interno del capitolo del networking sulla guida ufficiale RedHat che parla di libvirt. Il che è quasi come se non fosse scritto.

Ma dico io, una cosa con cui non si può fare un bridge, vai a chiamarla “Virtual Bridge 0”? E poi vai a nascondere in una nota a fondo pagina il fatto che si chiama Bridge, ma non è quello che la maggior parte degli amministratori Linux intende per Bridge? Potevano chiamarlo Bridge in riferimento al famoso gioco di carte e sarebbero stati più chiari! E tanto per ridere, si chiama bridge, ma serve a fare il NAT, cioè la configurazione diametralmente opposta ad un bridge!

Comunque sia, capito quello (e non ci è voluto esattamente poco), i giochi si fanno più semplici. Basta creare un bridge con le normali configurazioni di Linux (quel bridge che tutti i sysadmin conoscono), metterci dentro una sola scheda di rete fisica, ed assegnare quel bridge come scheda di rete al sistema guest, invece di virbr0. Ovviamente se il firewall, come probabile, dovrà gestire più schede di rete, si creano tanti bridge quante sono le schede di rete e si assegnano tutti al firewall guest. Ah sì, ma un bridge non dovrebbe servire a mettere in comunicazione due reti fisicamente separate e quindi non dovrebbe contenere due schede di rete invece di una sola? Certo, infatti è così: una delle due schede di rete nel bridge ce la mettete voi (quella fisica), l’altra ce la mette KVM (quella virtuale). Capito ora? Non dovete mettere in bridge la scheda di rete fisica con virbr0, ma dovete creare un bridge lasciando l’altro endpoint vuoto, mettendogli quindi una sola scheda di rete. Esempio di configurazione in /etc/network/interfaces, per sistemi host Debian e derivati:

iface br-eth0 inet static
  bridge_ports eth0
  address 192.168.1.254
  broadcast 192.168.1.255
  netmask 255.255.255.0
  gateway 192.168.1.1
  bridge_stp off
  bridge_waitport 0
  bridge_fd 0

Ovviamente l’indirizzo 192.168.1.254 è quello che si assegna alla scheda di rete per il sistema host. Il sistema guest (il firewall) assegnerà un indirizzo IP diverso, magari anche in una sottorete diversa. I due indirizzi alla fine coesisteranno (multihoming) sulla stessa scheda di rete fisica.

Bene, fin qui sembra abbastanza chiaro. Mancano dei pezzi però. Esempio: come assegno gli indirizzi IP all’interno del firewall? Come voglio (ovvero statici o dhcp, funzionano entrambi).

E alla fine, come faccio il firewall? Anche qui, come mi piace di più. Posso usare regole di iptables inserite a mano, oppure qualcosa come Shorewall o ancora una distro apposita.

Lo so, questo non è un how-to e non sopperisce alla mancanza di un how-to vero e proprio. Forse un giorno avrò il tempo di scrivere un vero how-to, ma per ora… accontentatevi!

Cheat codes per giochi su Linux

Inizio il mio blog con qualcosa di poco impegnativo, qualcosa che non rischi di ricevere critiche troppo aspre, qualcosa che in fondo, se vi interessa, vi può anche piacere e se invece non vi interessa, come dire, quella è la porta!
Da programmatore, il bello di giocare con il PC non è tanto giocare e neppure vincere, quanto fregare il PC. Purtroppo non sono un videogamer molto abile e farmi fregare dal PC non è una cosa che mi piace molto. Ecco allora alcuni cheat codes per altrettanti giochini che si possono trovare su Linux. Ti piace vincere facile?

ATOMIC TANKS

Il gioco è un evergreen, scelta l’alzata, la gittata e l’arma con cui sparare, vince chi fa più danni al carro armato avversario. In questo caso il cheat code è particolarmente semplice. I menù di configurazione del gioco permettono di scegliere con quanti soldi parte ogni giocatore, ma pongono un limite a tale cifra, ovvero non più di 200mila dollari. Il gioco ricorda la cifra da una volta all’altra che lo avviate scrivendola in un file di configurazione, in formato testo semplice. È sufficiente modificare la cifra in quel file per alzarla a piacimento e poi avviare il gioco. Il file è $HOME/.atanks/atanks-config.txt e lo si può aprire con qualsiasi editor di testi (attenzione però, la cartella $HOME/.atanks è nascosta, dovete attivare la visualizzazione dei files nascosti nel vostro file manager per vederla).

Ora il bello è che alzando di MOLTO la cifra con cui partono i giocatori, quando si gioca contro il computer diventa facilissimo vincere, perché oltre una certa cifra il computer non usa più i soldi a disposizione per acquistare armi e scudi. È sufficiente quindi spendere l’intera fortuna per armare il vostro carro fino all’inverosimile e sarete sicuri di avere la macchina da guerra virtuale più potente di tutte le altre. Boom.

BURGERSPACE

E se Atomic Tanks è un evergreen, che dire di questo? Intramontabile pure lui. Peccato che cinque spruzzatine di pepe contro quella miriade di verdure ed uova che non vedono l’ora di farci la festa siano davvero poche… in questo modo il gioco è decisamente difficile e ci vogliono troppe ore di esercizio per riuscire a vedere tutti i livelli. Non pensate anche voi che sarebbe meglio disporre di un macinapepe magico che non si svuota mai e darne una spolveratina nell’occhio dell’uovo al tegamino ogni volta che ne abbiamo voglia? Bene, nulla di più semplice. Invece di avviare il gioco dal menù, aprite un terminale ed avviatelo in scrivendo:

$ INFINITEPEPPER=1 burgerspace

Et voilà, spruzzate pepe quanto volete, non finirà mai.

AIRSTRIKE

Altro giochino vecchio stile. Si tratta di pilotare un aereo ad elica ed abbattere l’aereo avversario avendo a disposizione una mitragliatrice e cinque bombe. È possibile scegliere se giocare con l’aereo blu o rosso e far pilotare l’altro al PC. A me piace il rosso perché preferisco partire alla sinistra dello schermo, ma a parte ciò, i due aerei sono equivalenti. O meglio, sono equivalenti fino a quando non apportiamo qualche personalizzazione ad uno dei due, tipo qualche adesivo qua e là perché anche l’occhio vuole la sua parte, o una mano di colore sgargiante sul bullone centrale dell’elica o, perché no, una dotazione di cinque MILIONI di bombe, invece che solamente cinque…

redplane.nr_bombs 5000000

Il file di configurazione nascosto in cui dovete modificare la riga e farla diventare come quella qui sopra è $HOME/.airstrikerc e vedrete che nello stesso file ci sono tante altre cose con cui divertirsi per personalizzarsi l’aereo in meglio (o in peggio se agiamo sulle righe blueplane… ovvero l’aereo avversario).

TRIPLANE

Continuiamo a volare. Anche questo gioco è un remake di vecchie stelle a 8/16 bit. L’idea è di riprodurre il gioco originale per MSDOS nel modo più fedele possibile. Purtroppo l’originale era molto difficile da giocare e, dato che questo remake cerca di riprodurlo in modo fedele, anch’esso è molto difficile. In questo caso però non è difficile solo il gioco, ma è difficile anche il cheat code, perché non ci sono files di configurazione dove il programma vada ingenuamente a leggere le caratteristiche dell’aereo. Se vogliamo vincere facilmente possiamo solo modificare il programma. Le modifiche le ho già fatte io per voi e se avete un sistema Debian o Ubuntu a 64 bit, potete installare direttamente il pacchetto triplane_1.0.8-1_amd64 invece di quello che trovate nel repository ufficiale della vostra distro, ma il bello non è certo prendere un gioco craccato e vincere: il bello è craccarlo! (Dove per craccarlo qui si intende modificare il codice sorgente, nulla di illegale).

Se quindi volete divertirvi a modificare a piacere le caratteristiche del vostro aereo, seguite queste istruzioni.

  1. Scaricate il codice sorgente del gioco in una cartella (se usate Debian o Ubuntu potete scaricarlo con “apt-get source triplane” poi “sudo apt-get build-dep triplane”)
  2. applicate la patch triplane-cheats (ovvero “cd cartella_coidice_sorgente_di_triplane” poi “patch -Np1 < triplane-cheats.diff”)
  3. compilate il programma (su Debian/Ubuntu “dpkg-source –commit”, date un nome a caso, salvate il file che vi viene proposto e poi “dpkg-buildpackage”)
  4. installate il programma così compilato (su Debian/Ubuntu “cd ..” poi “sudo dpkg -i triplane*.deb”)
  5. Avviate il gioco dal menù

MERITOUS

Gioco di esplorazione di dungeon con annessa disintegrazione molecolare di mostriciattoli brutti e cattivi. A spasso per i dungeon le armi non sono mai troppe, quindi ecco a voi la patch per poter esplorare senza tante preoccupazioni. La procedura è la stessa usata per Triplane con ovvi adattamenti, non sto a rispiegarla e questa volta vi lascio solo il codice sorgente, così vi divertite un po’ anche voi e magari migliorate la patch. meritous-cheats

Per oggi basta così, in futuro man mano che mi diverto a storpiare giochini, vi farò sapere…