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.

Indirizzo IP pubblico: cosa è, come individuarlo da terminale o da prompt, e come funziona il DDNS per raggiungere un dispositivo dall'esterno

Un computer o un qualsiasi dispositivo, quando connesso ad una rete (LAN), viene identificato tramite un indirizzo IP assegnato dal router.

L'indirizzo, di solito nella forma 192.168.X.Y viene rilasciato dal DHCP del router per identificare i vari dispositivi ad esso connessi.

Tuttavia essendo il router stesso connesso alla rete internet (WAN), e fungendo da gateway per l'instradamento delle richieste locali verso l'esterno (NAT), anch'esso avrà un indirizzo IP rilasciato dal proprio gestore di telefonia (ISP).

undefined

Questo indirizzo IP viene comunemente chiamato IP Pubblico (o External IP), perché identifica il primo dispositivo connesso alla rete locale (quindi il primo da contattare per raggiungere la propria LAN dall'esterno).

A seconda dei gestori, tale IP può essere in forma statica o dinamica, ovvero può essere fisso ad ogni connessione del router, o cambiare.
In genere gli ISP rilasciano IP pubblici dinamici, per evitare identificazioni degli utenti che potrebbero portare ad attacchi.

In questo modo, ogni volta che accendiamo il router, esso richiederà un nuovo IP pubblico al gestore (che come detto sarà ogni volta diverso).

Come identificare facilmente l'IP pubblico?

1. tramite router, nella pagina di status principale vedremo tutte le impostazioni correnti, compreso l'IP pubblico del provider

2. tramite browser, attraverso uno dei tanti siti web appositi, come ad esempio: whatismyipaddress.com

3. tramite bash linux, con il comando:

 curl ifconfig.me

che mi sembra il più facile da ricordare, in alternativa comunque esistono anche altri (in ogni caso avremo bisogno di curl installato)

 curl ipecho.net/plain ; echo
 curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

4. tramite prompt di windows, con il comando:

 nslookup myip.opendns.com. resolver1.opendns.com

oppure tramite powershell:

 Invoke-WebRequest ifconfig.me/ip


A cosa mi serve conoscere il mio IP pubblico

Può servire nei casi in cui abbiamo bisogno di raggiungere un dispositivo connesso alla nostra LAN (esempio: a casa) dall'esterno (esempio: da lavoro).

Per fare questo bisognerà impostare nel router un port-forwarding, ovvero 'aprire' una determinata porta sull'IP interno del dispositivo.

In tal modo basterà digitare (da qualsiasi parte del mondo), IPPubblico:PortaAperta per inoltrare la richiesta di connessione attraverso il nostro router, verso il dispositivo locale.

Dynamic DNS come funziona

Poichè come detto prima, l'IP pubblico nella quasi totalità delle volte cambia ad ogni accensione del router, come faccio a sapere ogni volta che IP è stato assegnato se sono fuori casa?

Esistono dei servizi di DDNS, ovvero dynamic DNS, che consentono di ovviare a tale problema.
Consentono inoltre di evitare di doversi ricordare l'indirizzo IP stesso (una scomoda sequenza di numeri), in favore di una parola a piacere.

Ce ne sono diversi, come ad esempio noip.com (che di solito è supportato dalla quasi totalità dei router; in ogni caso prima di scegliere un servizio in favore di un altro, verificate se supportato dal vostro router).
Dopo essersi registrati al sito, occorrerà scegliere un indirizzo DNS personalizzato (ovvero un nome a dominio usato per reindirizzarvi al vostro IP).
Esempio: provaaccesso.noip.com

A questo punto basterà configurare nella apposita sezione del router questo DDNS.
Il router stesso provvederà ad aggiornare il DDNS ad ogni cambio di IP Pubblico!

In questo modo, da qualsiasi parte del mondo voi siate, potrete accedere alla vostra rete domestica (LAN) semplicemente digitando:

provaaccesso.noip.com:PortaAperta

dove PortaAperta è la porta precedentemente aperta sul router, con destinazione l'IP del dispositivo che vogliamo raggiungere

 

ATTENZIONE ALLA SICUREZZA:

come tutti sappiamo esporre i dispositivi alla rete senza alcun firewall non è mai consigliabile.
I router di solito applicano il firewall di default proprio per evitare che qualcuno acceda ai vostri dispositivi locali dall'esterno.

Tuttavia molte, moltissime volte gli utenti non cambiano la password di accesso al router stesso, rendendo disponibile ad un eventuale attaccante l'accesso a tutte le impostazioni di rete dall'esterno.
Per questo motivo, se configurate un DDNS, assicuratevi che la vostra rete sia ben protetta (argomento per il quale non basterebbe un solo post per descrivere tutti i passaggi).

Assicuratevi che il router abbia una password sicura, che abbia il firewall attivo, e, magari, che sia bloccato l'accesso alle impostazioni di rete dall'esterno (dalla WAN).

 

Home