mainSlogopaceclick Blog  · informatica · elettronica · astronomia..

Connettersi ad un RaspberryPi tramite Remote Desktop Protocol (RDP) usando XRDP

Chi ha detto che per usare un RaspberryPi si debba per forza usare SSH o un monitor esterno con tastiera dedicata?

Un modo semplice per avere a disposizione il Desktop (o Scrivania) connettendosi comodamente dal proprio PC è tramite il Remote Desktop Protocol.

undefined

In questo modo il Raspberry potrà essere lasciato connesso solamente alla Ethernet, senza altri fastidiosi cavi.

1. Connettersi al Raspberry tramite SSH

Preparare il Raspberry con una distro Debian come Raspbian (o Kali Linux), e connettersi tramite SSH.
Per connettersi tramite SSH usare Putty (su Windows) o il comando (da Linux):

ssh pi@192.168.x.x

dove al posto di x dovrete inserire il vero ip del raspberry; la password di default di raspbian per l'utente 'pi' è 'raspberry'.

Una volta connessi, eseguite un update dei packages con

sudo su
apt-get update

2. Installare XRDP

apt-get install xrdp

3. Avviare il servizio

service xrdp start
service xrdp-sesman start

4. Impostare l'auto avvio del servizio all'accensione

update-rc.d xrdp enable

5. Connettersi tramite RDP

A questo punto il Raspberry è pronto, possiamo anche dimenticarci l'SSH.

Apriamo l'applicazione (client) desktop remoto che preferiamo, e connettiamoci in via remota.

undefined

Usare un RaspberryPi come server DNS locale per tradurre indirizzi locali in IP locali tramite DnsMasq

Il server DNS consente di convertire la stringa dell'URL cercato sul browser, nell'indirizzo IP del server remoto.

Di norma ogni ISP ha i propri server DNS autoritativi (che vengono interpellati per ogni richiesta dal router), molte volte tuttavia si opta per l'uso di quelli di Google o degli OpenDNS, andando a modificare manualmente il proprio Sistema Operativo o il router stesso.
E' infatti risaputo che i server DNS di Google siano molto più veloci nelle risposte, e abbiano molti più indirizzi in cache rispetto a quelli degli ISP sparsi per il mondo.

undefined

Un server DNS locale può servire a due utilizzi:

  1. velocizzare la navigazione, tenendo in cache gli indirizzi che vengono maggiormente richiesti dalla rete casalinga (o aziendale), e inoltrando la richiesta verso un server DNS esterno solo in caso di necessità (esempio un indirizzo non i cache)
  2. consentire la traduzione di DOMINI locali in IP locali, funzione interessantissima in ambito aziendale ma anche casalingo

Consideriamo per esempio l'uso di un NAS locale, sull'indirizzo 192.168.1.8:

ogni volta che ci dovremmo connettere, avremmo da inserire tale (scomodo) IP.

Avendo un server DNS autoritativo locale:

potremmo invece decidere di assegnare un NOME A DOMINIO a tale IP, come ad esempio nas.myhome, e fare si che venga risolto sull'indirizzo IP del NAS stesso.

In questo modo nel browser (quando siamo in rete locale, ma anche tramite VPN) non ci resterà che digitare nas.myhome, come se fosse un normalissimo sito web pubblico.

In aggiunta, usando questo metodo, sarà possibile anche incrementare la sicurezza, andando ad impostare una blacklist globale sui nomi a dominio che non vogliamo vengano risolti.

Ovviamente perché tutto funzioni dobbiamo fare in modo che TUTTE le richieste DNS locali vengano risolte dal nostro server DNS autoritativo locale, e che questo non vada mai offline, per evitare impossibilità di risolvere indirizzi.

Una comoda soluzione a basso costo può essere l'uso di un RaspberryPi, vediamo come configurarlo.

Mini guida per il setup di RaspberryPi

Preparare il Raspberry con una distro Debian come Raspbian, e connettersi tramite SSH (o aprire il terminale se connessi con tastiera e schermo).
Per connettersi tramite SSH usare Putty (su Windows) o il comando (da Linux):

ssh pi@192.168.x.x

dove al posto di x dovrete inserire il vero ip del raspberry; la password di default di raspbian per l'utente 'pi' è 'raspberry'.

Una volta connessi, eseguite un update dei packages con

sudo apt-get update

Adesso assegnate un IP statico al raspberry:

sudo nano /etc/network/interfaces

il file deve sembrare così

auto lo

iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

auto wlan0
iface wlan0 inet static
address 192.168.1.190
gateway 192.168.1.1
netmask 255.255.255.0

auto eth0
iface eth0 inet static
address 192.168.1.190
gateway 192.168.1.1
netmask 255.255.255.0

(ovviamente al posto di .1.190 e .1.1 inserite gli indirizzi che vi competono)

salvare con Ctrl+X, e premendo Y, confermando con Invio, 
poi riavviare con

sudo reboot

e controllare che l'indirizzo sia corretto con il comando

ifconfig 

 

Configurare il server DNS Locale

Installare DNSMASQ:

sudo apt-get install -y dnsmasq

adesso il servizio DNS sarà già attivo, andiamo ad interromperlo per poterne modificare la configurazione

sudo service dnsmasq stop

configuriamo adesso il server DNS con il comando

sudo nano /etc/dnsmasq.conf

si aprirà l'editor di testo sul terminale, 
il file di configurazione mostrato sarà tutto commentato (con '#' all'inizio di ogni frase),
potete anche lasciare tutto intatto per consultazioni future, l'importante è inserire all'inizio le stringhe di configurazione che seguono:

# DOMAIN CONFIG
domain=raspberry.myhome
resolv-file=/etc/resolv.dnsmasq
min-port=4096

# FORWARDING DNS SERVERS
server=8.8.8.8
server=8.8.4.4
server=208.67.222.222
server=208.67.220.220

# LOCAL CACHE SIZE
cache-size=10000

# LOCAL ADDRESSLIST
address=/nas.myhome/192.168.1.8

# BLACKLIST
address=/double-click.net/127.0.0.1

# qui di seguito tutto il file originale..

NOTE

  • i 4 server di forwarding sono rispettivamente 2 Google e 2 OpenDns
  • il dominio .myhome può essere cambiato a piacere, ma NON deve essere un dominio usato pubblicamente (esempio .net), evitare anche il famoso .local
  • potete inserire nella Local-AddressList, tutti gli indirizzi locali che volete risolvere in IP (locali o anche pubblici)
    -ovviamente è anche possibile eseguire override di indirizzi comuni (DNS Spoofing)
    -nel mio caso ho inserito la risoluzione dell'IP del mio NAS su un dominio personalizzato (.myhome)
    -potete aggiungere una nuova riga per ogni altra mappatura
  • tutti i domini inseriti nella blacklist non risulteranno più raggiungibili dalla rete locale (perchè mappati sul loopback)

salvare con Ctrl+X, e premendo Y, confermando con Invio.

Riavviare il servizio dnsmasq

service dnsmasq start

NOTA: DnsMasq è in grado di fungere anche da server DHCP, ma nel nostro caso lo useremo solamente come server DNS.

Adesso il nostro server DNS locale è pronto per poter essere usato

Per poter usare il nostro server DNS locale, andiamo sul PC o sul router nella sezione di configurazione DNS, ed inseriamo come server DNS primario l'indirizzo IP statico precedentemente assegnato al nostro Raspberry.

E' buona norma inserire anche un server DNS secondario, usato in caso di malfunzionamento o irraggiungibilità del nostro server DNS locale, possiamo ad esempio inserire quello di Google (secondario: 8.8.4.4).

Facciamo un test da un computer in LAN con i comandi:

nslookup google.it
nslookup nas.myhome

la risposta sarà corretta se proveniente dal server DNS locale, ovvero del tipo:

Server: 192.168.1.190
Non-authoritative answer:
Name: google.it
Address: 216.58.205.67

oppure

Server: 192.168.1.190
Non-authoritative answer:
Name: nas.myhome
Address: 192.168.1.8

in ogni caso avendo impostato un DNS secondario, in caso di disconnessione del raspberry, sarà comunque possibile navigare tranquillamente.

Installare e configurare Apache Web Server su Ubuntu o su Debian

Per creare un web server basato su Apache, appoggiandosi ad una comune macchina Ubuntu o Debian, procedere come segue.

undefined

1. Installare Apache

sudo apt-get update
sudo apt-get install apache2

Per verificare se correttamente installato, andare sul sito

localhost

dovreste trovare scritto 'It works!'

2. Configurare

Tutti i file di configurazione si trovano in

"/etc/apache2"

si può visualizzare tramite terminale con 

cd /etc/apache2
ls -F

apparirà

apache2.conf    envvars       magic             mods-enabled/     sites-available/
conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/

tra i quali, i più importanti

apache2.conf: la configurazione del webserver
sites-available/: contiene i virtual host

3. Aggiungere i file del sito da esporre

Come includere i propri files php (o html) in modo da poterli esporre ad Apache, posizionarli nella cartella:

/var/www

Nota

La cartella necessita di permessi di root per essere modificata.
E' possibile (ma sconsigliato) modificare questi permessi con il comando:

sudo chown <user> /var/www

dove al posto di <user> dovrete inserire il vostro nome utente (questo comando va applicato anche a tutti i file predefiniti all'interno).
Si potrà in questo modo copiare direttamente da Nautilus.

Per copiare i file da terminale, senza modificare i permessi della suddetta cartella (consigliato per questioni di sicurezza), il comando è:

sudo cp <file da copiare> /var/www

5 funzioni utili che può fare un Raspberry Pi in rete (FTP/TFTP/WEB/SAMBA/SYSLOG)

Vediamo come fare ad impostare un Raspberry Pi per poterlo usare come server nella rete locale.

Di seguito troverete una lista di comandi e azioni da eseguire passo passo per configurare il dispositivo.

undefined

[1] SERVER FTP

mkdir -p /home/pi/files/
chmod 777 /home/pi/files/
sudo bash

apt-get install pure-ftpd -y
pure-pw useradd pi -u pi -g pi -d /home/pi/files/

impostare come password: raspberry, poi

pure-pw mkdb
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb
service pure-ftpd restart

 

[2] SERVER TFTP

wget http://downloads.sourceforge.net/project/tftp-server/tftp%20server%20single%20port/opentftpspV1.66.tar.gz
tar xvf opentftpspV1.66.tar.gz
cd opentftp/

g++ opentftpd.cpp -oopentftpd -lpthread
mkdir /home/pi/files
chmod 777 /home/pi/files/

sudo bash

cp opentftpd /usr/bin/
vi /etc/opentftp.ini

nel file dovrete verificare o aggiungere il seguente contenuto

[LISTEN-ON]

[HOME]
/home/pi/files

[TFTP-OPTIONS]
username=pi
ThreadPoolSize=10
Read=Y
Write=Y
Overwrite=Y
/usr/bin/opentftpd -i /etc/opentftp.ini

 

[3] WEB SERVER

mkdir -p /home/pi/files/
chmod 777 /home/pi/files/
sudo bash
apt-get install apache2 -y
rm -rf /var/www/html/
ln -s /home/pi/files/ /var/www/html

 

[4] SAMBA SERVER

mkdir -p /home/pi/files/
chmod 777 /home/pi/files/
sudo bash
apt-get update
apt-get install samba -y
rm /etc/samba/smb.conf
vi /etc/samba/smb.conf

nel file dovrete verificare o aggiungere il seguente contenuto

[global] netbios name = server server string = server workgroup = WORKGROUP security = user
[server] comment = server path = "/home/pi/files/" public = yes guest ok = yes read only = no
pdbedit -a -u pi

impostare come password: raspberry, poi

service smbd restart

 

[5] SYSLOG SERVER

mkdir -p /home/pi/files
chmod 777 /home/pi/files
sudo bash
apt-get install syslog-ng -y

modificare il file config che si trova in:

/etc/syslog-ng/syslog-ng.conf

cambiare le impostazioni di permessi del file config da 640 a 644:

options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no); owner("root"); group("adm"); perm(0644); stats_freq(0); bad_hostname("^gconfd$");
};

inserire nel file anche queste 3 linee di configurazione:

source s_net { udp(ip(0.0.0.0) port(514)); };
destination d_files { file("/home/pi/files/${YEAR}_${MONTH}_${DAY}__${HOST}"); };
log { source(s_net); destination(d_files); };

salvare il file modificato e riavviare il server:

service syslog-ng restart

 

[PLUS] RADIUS SERVER 

sudo bash
apt-get update
apt-get install freeradius -y

modificare (con vi <file>) il file config che si trova in:

/etc/freeradius/clients.conf

nel file dovrete verificare o aggiungere il seguente contenuto

client 0.0.0.0/0 {
 secret = {RADIUS server shared key}
 shortname = anyone
}

modificare (con vi <file>) il file config che si trova in:

/etc/freeradius/users

nel file dovrete verificare o aggiungere il seguente contenuto

testuser Cleartext-password := "password"


[PLUS] DHCP SERVER

sudo bash

impostare un IP statico nel file

/etc/dhcpcd.conf

inserire ad esempio

static value
interface eth0
static ip_address=192.168.0.1/24
static routers=192.168.0.254
static domain_name_servers=8.8.8.8

riavviare il raspberry

reboot

aggiornare

apt-get update
apt-get install isc-dhcp-server -y

modificare il file config per DHCP che si trova in

/etc/dhcp/dhcpd.conf

inserire ad esempio

subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.20 192.168.0.40;
 option routers 192.168.0.254;
 option domain-name-servers 8.8.8.8;
}

se volete anche inserire opzioni aggiuntive in base al vendor, aggiungete

option vendor-class-identifier "AppleInc";
option vendor-encapsulated-options "192.168.1.100";

avviare il server DHCP con il comando

dhcpd -cf /etc/dhcp/dhcpd.conf

Come ripristinare la scrivania di un Raspberry su Debian

undefined

Durante l'uso intensivo del nostro RaspberryPi, è possibile trovarsi nella spiacevole situazione in cui l' X server non riesce ad avviarsi.

Possono essere varie le cause: un arresto anomalo, una cancellazione di file di sistema, o un fallito aggiornamento.

In tutti i casi, all'avvio saremmo di fronte ad un errore come quello sotto, che ci notifica il mancato avvio del comando startx, che fa partire proprio l' X server, responsabile della visualizzazione della scrivania (desktop).

undefined

Cosa fare?

Una possibile soluzione è ripristinare il file di configurazione del server X.

Appena dopo il boot, premere

ctrl+alt+F2

 

Apparirà un prompt, inserire i comandi (ognuno seguito da invio)

cd ~
ls -a

Vengono mostrati a video i file, cercare il file

.Xauthority

se è presente, è possibile che sia danneggiato. E' possibile cambiargli nome per far si che al successivo avvio il sistema ne generi uno nuovo:

mv .Xauthority .Xauthority.backup

In questo modo se riavviamo il sistema (con ad esempio il comando 'halt'), dovrebbe ricomparire la scrivania.

Nel caso non funzionasse, è possibile dare il comando aggiuntivo:

sudo chmod 777 /home/pi

 

Come creare una cartella condivisa su Linux in pochi passi

Una semplice guida per creare una cartella condivisa accessibile e scrivibile da qualunque dispositivo in rete locale.

Valida per Ubuntu, Debian, RaspberryPi, ecc..

Attenzione: questa è una delle procedure più semplici e brevi; per creare cartelle con utenti e password la procedura si complica di non poco.

1. installare samba

sudo apt-get install libcupsys2 samba samba-common

2. creare cartella e permessi

mkdir -p /home/samba-share/allusers
chmod –R a+rwx /home/samba-share/allusers

3. editare il file di configurazione

vi /etc/samba/smb.conf

 nota:     per scrivere nel file premere “i”, per cancellare “canc”

 per salvare premere: “esc” e digitare “:wq” (che corrisponde a :writequit)

Modificare nel file:

security=user con security=share (in caso togliere il simbolo di commento)

Inserire nel file (in fondo):

[SHARED]
comment = PMS files
path = /home/samba-share/allusers
browseable = yes
guest account = nobody
guest ok = yes
write ok = yes
writable=yes
read only=no

4. riavviare il servizio

sudo /etc/init.d/samba restart

5. creare un link sul desktop (scrivania)

sudo su
cd /home/pi/Desktop
ln –s /home/samba-share/allusers

 

La cartella sarà ora visibile in LAN con permessi di Lettura/Scrittura per tutti gli utenti (cartella pubblica).

Su Spaceclick.com troverai anche una guida per installare e configurare da zero il tuo RaspberryPi.

Home