[:it]TPSIT – CIDR – Classless Inter-Domain Routing[:]

[:it]

Jim Warren

Il CIDR (Classless Inter-Domain Routing) è un nuovo schema di indirizzamento introdotto nel 1993 per sostituire lo schema classful secondo il quale tutti gli indirizzi IP appartengono ad una specifica classe (classe A, B e C).

La notazione usata per esprimere indirizzi CIDR è la seguente: a.b.c.d/x, dove x è il numero di bit (contati partendo dal più significativo a sinistra) che compongono la parte di indirizzo della rete. I rimanenti y = ( 32 − x ) bit consentono di calcolare il numero di host della sottorete pari a 2^{y}-2  ( − 2 ) è dovuto al fatto che il primo e l’ultimo indirizzo di ogni rete non sono assegnabili ad alcun host, in quanto riservati rispettivamente come indirizzo della rete in generale (usato ad esempio nelle tabelle dei router) e come indirizzo di broadcast (ovvero un indirizzo che comprende indistintamente ogni altro indirizzo all’interno di quella rete: viene usato ad esempio in alcuni protocolli di routing).

Utilizzando il CIDR, possiamo scegliere che struttura dare all’indirizzamento specificando semplicemente che parte assegnare alla rete e quale assegnare all’host.

Prendiamo due reti e assumiamo che gli host appartengano allo stesso dominio di collisione (uno switch o un hub):

  • 192.168.0.0/24 – netmask: 11111111.11111111.11111111.00000000 (255.255.255.0)
  • 192.168.1.0/24 – netmask: 11111111.11111111.11111111.00000000 (255.255.255.0)

Alle due reti sono assegnati 256 IP (28 bit) ciascuna, tra cui 254 usabili per gli host (difatti il .0 è riservato per la rete ed il .255 per il broadcast). Tuttavia, gli host di una rete non saranno in grado di raggiungere gli host dell’altra rete, pur essendo connessi allo stesso dominio di collisione. Ciò è dovuto al fatto che, avendo scelto come prefisso di routing i primi tre ottetti, le due reti risultano totalmente indipendenti e disconnesse l’un l’altra. Dunque, affinché gli host delle due reti possano vedersi, è necessario collegarle ad un router in grado di instradare i pacchetti.

Una seconda soluzione consiste nel diminuire di un bit il prefisso di routing, assegnando così a tale porzione 23 bit anziché 24, al fine di formare due sotto-reti:

  • 192.168.0.0/23 – netmask: 11111111.11111111.11111110.00000000 (255.255.254.0)
  • 192.168.1.0/23 – netmask: 11111111.11111111.11111110.00000000 (255.255.254.0)

In questo caso abbiamo i primi 23 bit assegnati al prefisso di routing, mentre i successivi 9 bit per gli host (512 IP). Poiché per ogni ottetto è possibile utilizzare fino a 256 bit, avremo due sotto-reti (192.168.0.0 e 192.168.1.0) in grado di comunicare senza necessità di instradare pacchetti tramite un router.

Voglio inserire i l link al seguente sito che calcola automaticamente la netmask ed il numero di host che possono essere presenti nella rete:

https://ipaddressguide.com/cidr

se adesso mettessimo come notazione della nostra rete:

172.16.0.1/12 avremo nella sottorete 255.240.0.0 e quindi

2^{20}-2=1.048.574 host a disposizione.

NOTA

Nella vecchia struttura a classi la notazione delle reti non permetteva un’efficiente suddivisione degli indirizzi in quanto le sottomaschere erano rigide:

classe A/8

classe B/16

classe C/24

in questo nuovo tipo invece si ha un’ottimizzazione degli indirizzi e dell’hardware.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Raspberry – impostare Chromium con proxy [:]

[:it]Se si lavora con un proxy per poter navigare è necessario impostare il proxy.

Attenzione

il comando successivo non deve essre dato come root ma come utente non root:

chromium-browser –proxy-server=”ipproxy:portaproxy”

se vine dato come root comparirà il seguent messaggio:

[1116/083633.698451:FATAL:chrome_main_delegate.cc(477)] Check failed: process_type.empty(). Unable to get the user data directory for process type: zygote
#0 0x0000020c0eb0 <unknown>
#1 0x0000020d8210 <unknown>
#2 0x00000086f530 <unknown>
#3 0x000001d2abcc <unknown>
#4 0x000001d31640 <unknown>
#5 0x000001d29c88 <unknown>
#6 0x00000086ed0c <unknown>
#7 0x000075501678 __libc_start_main

Received signal 6
#0 0x0000020c0eb0 <unknown>
#1 0x0000020c0e20 <unknown>
#2 0x0000755176c0 <unknown>
#3 0x00007551645c gsignal
[end of stack trace]
Calling _exit(1). Core file will not be generated.
[1708:1708:1116/083633.704762:FATAL:zygote_host_impl_linux.cc(182)] Check failed: ReceiveFixedMessage(fds[0], kZygoteBootMessage, sizeof(kZygoteBootMessage), &boot_pid).
#0 0x0000020a6eb0 <unknown>
#1 0x0000020be210 <unknown>
#2 0x00000105e388 <unknown>
#3 0x00000105d2d8 <unknown>
#4 0x00000105d908 <unknown>
#5 0x000000ceacb8 <unknown>
#6 0x000000cf20c8 <unknown>
#7 0x000000cea358 <unknown>
#8 0x000001d110cc <unknown>
#9 0x000001d179cc <unknown>
#10 0x000001d0fc88 <unknown>
#11 0x000000854d0c <unknown>
#12 0x00007557c678 __libc_start_main

Received signal 6
#0 0x0000020a6eb0 <unknown>
#1 0x0000020a6e20 <unknown>
#2 0x0000755926c0 <unknown>
#3 0x00007559145c gsignal
[end of stack trace]
Calling _exit(1). Core file will not be generated.

 [:]

Pubblicato in Senza categoria | Lascia un commento

Raspberry – apt-get con proxy

[:it]

Jim Warren

Tale esigenza nasce quando si debba aggiornare o installare un pacchetto e si è in una LAN con un proxy attivo.

Io ho adottato questo metodo:

cd /etc/apt/apt.conf.d

poi:

sudo nano 10proxy

e poi ho scritto:

Acquire::http::Proxy “http://username:password@yourproxyaddress:proxyport/”;

dove con username e password esattamente la password e username per accedere al proxy.

Altro comando:

export http_proxy=”http://username:password@host:port/”

più compatto ma a volta potrebbe non funzionare.[:en]N[:de]N[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Raspberry – bridge wifi – ethernet[:]

[:it]Raspberry può diventare un bridge tra il wifi (dato da un cellulare che fa da hotspot mobile o un qualsiasi altro segnale wifi) e un altro host che ha la necessità di avere un collegamento alla rete ma è privo di wifi.

Il raspberry diventa un server dhcp ossia fornisce un indirizzo ip a tutti gli host che siu collegano ad esso.

Nella mia configurazione ho collegato all’uscita ethernet raspberry uno switch a cui si collegava un host con windows 10, un host debian sempre collegato allo switch ed un host Ubuntu sempre collegato allo switch.

Per comprendere tutti i passaggi è necessario conoscere:

  • impostazione porta wlan
  • dhcp
  • ip statico
  • modifica parametri di sistema
  • firewall

Per eseguire i comandi che seguono bisogna essere root

Impostazione wlan0

Editare il file /etc/wpa_supplicant/wpa_supplicant.conf  con il comando:

nano /etc/wpa_supplicant/wpa_supplicant.conf

aggiungere le seguenti righe senza cancellare quelle precedenti:

network=

{

      ssid="ReteETE"

      psk="PASSWORD"

}

con

  • ssid il nome della rete wifi
  • psk la password del wifi

si può verificare la corretta impostazione della rete con il comando:

wpa_passphrase "NOME-RETE" "password"

Impostazione IP statico

Adesso si deve impostare un IP statico andando ad editare il file /etc/network/interfaces con il comando:

nano /etc/network/interfaces

aggiungendo le seguenti righe:

allow-hotplug eth0
iface eth0 inet static
address 10.0.0.1    
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp


da notare come gestisco entrambe le porte la eth0 e la wlan0 in maniera tale che quando ricarico la configurazione entrambe le porte siano correttamente configurate.

Per caricare la corretta configurazione digitare il comando:

service networking restart

Per verificare lo stato del servizio digitare:

service networking status

Installazione dhcp

per installare il dhcp bisogna prima installarlo con il comando:

apt-get install dnsmasq

è buona regola copiare il vecchio file di configurazione prima di modificarlo:

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

adesso vado a digitarlo:

nano /etc/dnsmasq.conf

ed inserisco le seguenti righe:

interface=eth0 # Use interface eth0
listen-address=10.0.0.1 # Specify the address to listen on
bind-interfaces      # Bind to the interface
server=208.67.222.222 # Use OpenDNS
domain-needed        # Don't forward short names
bogus-priv           # Drop the non-routed address spaces.
dhcp-range=10.0.0.10,10.0.0.50,12h # IP range and lease time

è necessario anche abilitare il forward nel file sdi configurazione sysctl.conf per abilitire l’invio IP IPv4p

Modifica variabili di configurazione di sistema

Bisogan editare il file:

nano /etc/sysctl.conf

e togliere il cancelletto alla riga

#net.ipv4.ip_forward=1

per attivare il nuovo parametro digitare:

sysctl --system

per verificare i parametri attivi nel sistema digitare il comando:

sysctl -a

Configurazione firewall

Si modifica il firewall per consentire a tutto il traffico dalla nostra interfaccia wlan0   alla eth0:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

per consentire a tutte le modifiche di diventare definitive e non di cancellarsi ogni qualvolta che si fa il reboot del sistema si deve:

sh -c "iptables-save > /etc/iptables.ipv4.nat"
nano /etc/rc.local

inserire prima della riga exit 0 la riga:

iptables-restore < /etc/iptables.ipv4.nat

A questo punto si può far partire il dhcp:

service dnsmasq start

ma considerando tutte le notevoli modifiche effettuate, meglio è far ripartire il sistema.

[:]

Pubblicato in Senza categoria | Contrassegnato , , | 2 commenti

[:it]TPSIT – Linux – Installazione wordpress[:]

[:it]WordPress è lo strumento più conosciuto per la creazione di blog.

Prerequisito aver funzionante un server LAMP.

mysql -u root -p

ossia entro nel database come amministratore

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'userpassword';

ossia creo un utente wpuser con un’opportuna password, si può verificare entrando in phpmyadmin il corretto funzionamento di tale utente.

CREATE DATABASE wp_database;
GRANT ALL ON `wp_database`.* TO `wpuser`@`localhost`;
FLUSH PRIVILEGES;
exit;
wget https://wordpress.org/latest.tar.gz

ossia mi scarico l’ultima versione di wordpress

tar xpf latest.tar.gz

scompatto il file compresso

copio tutta la mia directory nella directory in cui salvo i miei file html

cp -r wordpress /var/www/html

poi apro il mio web ed ho:

http://localhost/wordpress/index.php

mi chiederà varie impostazioni per il suo funzionamento, dare i comandi opportuni a seconda dell’impostazione data precedentemente.

Si chiederà di creare un file wp-config.php, basta usare nano e si creerà.

Alla fine per accedere al proprio wordpress locale si digita sul proprio browser:

localhost/wordpress e dando l’invio si avrà la schermata iniziale di wordpress.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT – Backup completo del sistema con tar[:]

[:it]

Renè Magritte

Quando si sta installando del software nuovo è buona norma effettuare un backup completo del sistema in quanto tutto ciò che è stato installato deve essere ripristinato esattamente in quella maniera.

Ci si pone come utente root in /

 

 

Con il seguente comando:

tar -cvpzf /backup.tgz --exclude=/proc/* --exclude=/sys/* --exclude=/lost+found/* --exclude=/mnt/* --exclude=/media/* --exclude=/backup.tgz /

ossia utilizzo le opzioni del comando tar:

-c: indica che noi dobbiamo creare un nuovo archivio

-v: esegue l’operazione in modalità verbose, ossia ci mostra nel terminale tutto quello che il computer sta facendo

-p: dice a tar di mantenere inalterati tutti i permessi dei file

-z: comprime il file con gzip

-f /backup.tgz: f indica il nome del file compresso, in questo caso /backup.tgz, quindi verrà creato nella cartella /

–exclude=: non è necessario fare il backup dei contenuti delle cartelle /proc, /sys e /lost+found, sono stati eliminati anche /media e /mnt per evitare che venisse fatto un backup anche di eventuali partizioni o penne usb montate e infine è stato eliminato dal backup il file /backup.tgz, che dal momento in cui viene creato fa a tutti gli effetti parte del contenuto del disco e quindi è meglio eliminarlo dal backup

/: per ultimo bisogna indicare di quale cartella si vuole fare il backup, quindi in questo caso scriviamo / per fare un backup dell’intero disco

 

RIPRISTINO

tar -xvpzf /backup.tgz -C /

-x: indica che si vuole estrarre l’archivio

-C /: si sposta nella directory specificata, in questo caso /[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]PHP – Approccio MySqli – connessione e creazione database, tabelle[:]

[:it]

Renè Magritte

Con Php ci si può interfacciare con il mariaDB.

MySQLi (MySQL improved), che può essere programmata tramite un approccio Object Oriented sebbene mantenga la possibilità di poter essere utilizzata anche con un approccio procedurale è un modo di poter scrivere sql.

Comprende le API (Application Programming Interface) per le prepared statements e le stored procedures, ma anche per query multiple e transazioni.

Per iniziare a lavorare con la libreria è necessario innanzitutto istanziare la relativa classe: il costruttore di MySQLi utilizzerà i parametri forniti, o quelli di default se non ne vengono specificati altri, per aprire la connessione con il DBMS, essa sarà il nostro tramite per comunicare di volta in volta le operazioni da svolgere sul database.

I metodi connect_error() e connect_errno() sono molto utili per controllare l’avvenuta connessione e consiglio sempre di usarli.

Eccone un esempio:

Attenzione alle seguenti cose, questo serve per connettersi al DBMS non allo specifico database. Serve solo la prima volta per creare un database, le volte successive si deve specificare il database a cui ci si deve connettere ed inoltre bisogna aver creato almeno un utente con gli opportuni accessi al database. Usare l’utente root solo per cancellare database e non dare mai l’autorizzazione ad altri utenti per fare tale operazione

il passo successivo è  quello di creare il database:

Quindi prima ci si connette al DBMS e poi si crea il DATABASE che nel caso specifico si chiama scuola.

Per avere i dettagli si può andare sulla seguente pagina in cui vi sono i comandi mysqli.

Per creare una tabella ci si deve prima connettere al database e poi effettuare la creazione della tabella. Naturalmente non serve più creare il database in quanto esso è già stato creato nel passo successivo.

Quindi come si vede mi sono prima connesso con il database scuola e poi ho creato la tabella login. Osservare che il campo password è un VARCHAR(64). Nel passo successivo lo spiego perchè.

Posso creare una tabella prima appoggiando il codice SQL in una variabile d’appoggio e poi passarla al metodo query.

Da notare che al termine dei comandi chiudo sempre la connessione con il database.

Pubblicato in Senza categoria | Lascia un commento

[:it]Linux – elenco pacchetti installati – installazione nuovo software da tar.gz o .deb[:]

[:it]

Janek Yerka

PACCHETTI INSTALLATI

Per verificare i pacchetti installati dare il seguente comando

dpkg -l

se si vogliono ulteriori informazioni si deve dare il comando:

ls /var/log/ | grep dpkg

a questo punto si può andare a vedere che cosa si è installato nei dettagli.

INSTALLARE DA TAR.GZ

Per installare un pacchetto che si è appena scaricato con estensione tar.gz

dare il seguente comando:

tar -xvzf nome_file.tar.gz

per i dettagli andare a vedere il post tar

./configure

make

make install

make clean

 

INSTALLARE da .deb

dare il comando

dpkg -i nome_file.deb

Estrarre da .zip

dare il comando:

unzip nomefile.zip[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]PHP – Introduzione generale[:]

[:it]PHP è un linguaggio per lo scripting server-side, ossia un linguaggio che risiede in un server in remoto e che, in fase di esecuzione, interpreta le informazioni ricevute da un client grazie al Web server, le elabora e restituisce un risultato al client che ha formulato la richiesta.

PHP si differenzia poi dai linguaggi di scripting client side, come per esempio JavaScript, per via del fatto che il sorgente viene eseguito nel server, generando markup HTML da inviare al client; quest’ultimo riceverà i risultati dell’esecuzione di un’applicazione ma il codice eseguito non sarà mai visibile.

PHP nasce nel 1994 dalla tastiera di Rasmus Lerdorf; inizialmente esso veniva presentato come una serie di Common Gateway Interface (CGI) binari scritti in C per tracciare il numero di visite all’interno della suo homepage personale. Da qui il primo nome del PHP: Personal Home Page. In seguito però verrà rinominato in Hypertext Preprocessor.

Per sviluppare in PHP non sono necessari di molti strumenti, il set up della macchina è piuttosto veloce e si è operativi in breve tempo. Vediamo di quali soluzioni abbiamo bisogno:

  • un server Web;
  • PHP;
  • un editor di testo;
  • un browser per la navigazione Internet;
  • un gestore di database per l’eventuale interazione con i dati.

Per poter scrivere del codice è consigliabile usare un IDE (Integrated Development Environment)attraverso il quale si possa poi digiatare del software.

Nel caso specifico si userà Eclipse.

Ambiente LAMP[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Linux – backup con tar[:]

[:it]

Janek Yerka

La cosa più importante per il mantenimento di un server è l’effettuazione dei backup.

Vi sono due tipi di backup:

  • incrementali
  • completi (full)

Il backup incrementale copia solo i file modificati.

Nella tabella seguente evidenzio i vantaggi e gli svantaggi

Tipo Backup Restore
incrementale veloce lento
full lento veloce

Il comando utilizzato per effettuare un backup è

tar

ecco i parametri che si devono conoscere, si possono combinare assieme come sempre nel mondo linux e per convenzione è meglio sempre farli precedere dal –

p effettua il backup mantenendo i privilegi
c crea un archivio in cui inserisce il backup
z comprime i dati con gzip
j comprime i dati con jzip
f scrive/legge l’archivio nel file di cui si fornisce il nome – attenzione che tale parametro deve essere l’ultimo dei parametri dati
v mostra i dati di cui si sta facendo il backup o restore
vv fornisce ulteriori dettagli (maggiori rispetto al comando precedente)
w ogni azione richiede la conferma
r aggiunge i file ad un archivio già creato sempre che questo non sia compresso
t mostra il contenuto di un archivio
x estrae i dati da un archivio
C si fornisce il percorso di dove dovrà essere effettuato il restore

Avvertenza: per poter dare i comandi successivi bisogna essere root

Ecco alcuni esempi:

BACKUP

Avvertenza: prima di effettuare il backup, creare la directory in cui verrà poi posto il backup

tar -pzcf /mnt/backup/home-backup-`date ‘+%d-%B-%Y’`.tar.gz /home/francesco

p–> copia i file mantenendo i permessi

z–> utilizzo gzip per comprimere i file

c –>crea un archivio che conterrà il backup

f –> utilizza il nome del file che segue per inserire i backup

`date ‘+%d-%B-%Y’` –> mi crea il nome del file prendendo la data del sistema il simbolo ` si crea con altgr e poi apice (normalmente sotto il ?)

tar.gz mi indica che è un file tar compresso con gz

LISTA CONTENUTO

Avvertenza: dare il comando nella directory in cui si trova il file

tar -ztf home-backup-28-ottobre-2018.tar.gz

z –> è un file di tipo gzip

t –> mostra il contenuto

f –> il file che segue ha quel nome specifico

RESTORE

Avvertenza: specificare bene dove effettuare il restore, se non viene specificato si rischia di fare il restore di tutti i file anche di quelli di cui non si vuole fare il restore

tar -xvpzf home-backup-28-ottobre-2018.tar.gz -C /mnt/restore

x –> effettuo il restore

v–> mi fornisce le informazioni di cosa sta facendo

p–> mi ricrea i permessi

z –> file creato con gzip

f–> nome del file che segue

-C /mnt/restore –> mi effettua il restore nella cartella restore[:]

Pubblicato in Senza categoria | Lascia un commento