PDA

View Full Version : [Guida] Superare il NAT dei vari Operatori con il reverse tunneling + VPS


lelebello1977
26-02-2021, 21:42
Il contenuto di questo post è rilasciato con licenza Creative Commons Attribution-Noncommercial-Share Alike 2.5 http://creativecommons.org/licenses/by-nc-sa/2.5/it/

Ho creato anche io una guida alternativa per superare il nat dei nostri amati operatori mobili per esporre le nostre porte dei servizi su ip pubblico.
Per ora è una guida basilare e cercherò di ampliarla, se richiesto.
Si richiede sempre l'utilizzo di una vps su server esterni con ip pubblico, di un Raspberry posizionato nella nostra rete è un po' di buona volontà. La reale differenza consiste nel fatto che il nostro traffico non viene indirizzato tutto sulla vps, ma solo le porte da noi scelte. In questa maniera non avremo problemi di velocità, di traffico totale a disposizione sulla vps e ci permetterà di scegliere la vps più economica possibile. Ovviamente non va bene per i giochi e si utilizza solo il protocollo TCP. Però è utile per esporre telecamere, server interni ed ad esempio interfacce dei nostri modem, per monitorarli anche dall'esterno.

1) Installare il sistema operativo su microSD per il raspberry, usando https://www.raspberrypi.org/software/ scegliete la versione con Pi Os with desktop, quella da circa 1GB

2) Prima di inserire la microsd nel Raspberry, inseritela nel computer nuovamente ed aggiungete un file chiamato "ssh" (senza virgolette), senza estensione e senza scrivere nulla al suo interno e lo salvate nella partizione boot . Qui altri sistemi di abilitazione di ssh (il nostro sistema è il punto 3):
https://www.raspberrypi.org/documentation/remote-access/ssh/

3) Inserire la microsd nel Raspberry, dargli l'alimentazione, aspettare un po', cercare che ip ha preso, supponendo che la vostra rete abbia il dhcp.
Aprire winscp ed Andare in options>preference>panels e dirgli di mostrare anche le cartelle e i file nascosti (si può fare anche premendo ctrl+alt+h).
a) Premere new site
b) Inserite l'ip del raspberry in host
c) Come user name pi e password raspberry
d) Cliccate save, per salvare i dati di accesso e poi login
e) Confermate al messaggio successivo la chiave ed ecco che siete entrati nel raspberry, via ssh. A destra sono le cartelle del vostro raspberry a sx il vostro computer.
f) Scaricate putty dal sito https://www.putty.org/ sul vostro pc e mettetelo nella cartella denominata putty in winscp. Eventualmente aprite le opzioni di winscp e specificate dove è posizionato il file putty.exe in Prefernce>Integration>Applications

4) installare autossh sul raspberry con putty, che avvieremo direttamente da winscp, dopo essere entrati nel nostro raspberry, selezionando l'icona con i 2 computer con il lampo. Si aprirà il terminale, eventualmente rimetteremo la pw e daremo il comando:

sudo apt install autossh

Autossh è un servizio che permette di ripristinare ssh se cade la connessione

A questo punto Sarebbe intelligente cambiare la password dell'utente pi, inviando questo comando sempre dal terminale putty

passwd

seguire le indicazioni.

5) creare sul raspberry sempre tramite putty una chiave rsa. I comandi dateli dopo aver fatto prima

sudo su

ssh-keygen

usate la cartella suggerita e
non usate una password quando richiesto

6) attivare il TCP forwarding su raspberry, da putty
sudo nano /etc/sysctl.conf

Rimuovete dalla riga #net.ipv4.ip_forward=1 il simbolo di inizio commento (#). Che quindi diventerà:

net.ipv4.ip_forward=1

Cliccate su CTRL+X, scrivete yes. Per applicare i cambiamenti descritti nel file appena modificato digitate
sysctl -p

7) Acquistare una vps con Debian 10 non importano le prestazioni, basta l'ip pubblico

8) Accedere con winscp alla vostra nuova VPS (fate New site ed aggiungete i dati della vostra VPS, come avete fatto con il raspberry, ma ovviamente con indirizzi IP e utenti diversi) e andare in etc/ssh/sshd_config della vps e modificare il file in questo modo, aggiungendo alla fine del file le righe qui sotto e dopo riavviate la vps.

GatewayPorts yes
AllowTcpForwarding yes
KeepAlive yes
Protocol 1,2
X11Forwarding yes
TCPKeepAlive yes
ClientAliveInterval 5
ClientAliveCountMax 10

9) Attivare l'inoltro anche delle porte sul server vps, come avete fatto sul raspberry, da putty

sudo nano /etc/sysctl.conf

Rimuovete dalla riga #net.ipv4.ip_forward=1 il simbolo di inizio commento (#). Che quindi diventerà:

net.ipv4.ip_forward=1

Cliccate su CTRL+X, scrivete yes. Per applicare i cambiamenti descritti nel file appena modificato digitate
sysctl -p

10) Copiare con winscp il contenuto del file id_rsa.pub del nostro Raspberry (client) che trovate dentro la cartella /root/.ssh di ed incollarlo nel file presente in /root/.ssh authorized_keys della vps. Se non c'è crearlo e dargli questi permessi rw-r-r, sempre con putty (ottale 0644)

11) Collegarsi via SSH dal Raspberry alla vps, sempre da winscp connesso al raspberry, avviare putty e scrivete ssh [email protected], ditegli di sì e a quel punto non servirà più mettere utente e pw per connettersi. Comunque riprovare facendo exit e rinviando il comando

12) Provare il reverse tunneling sulla porta che volete aprire. Per esempio ho una telecamera con ip 192.168.1.110 sulla porta 5010 e la mia vps ha il suo determinato ip. il comando sarà ssh -R 5010:192.168.1.110:5010 -N [email protected] -p 22
Se invece volessimo cambiare la porta su internet, e scelgo per esempio la 9010, ma che punta sempre alla stessa telecamera, possiamo fare ssh -R 9010:192.168.1.110:5010 -N [email protected] -p 22

13) Provare il servizio, scrivendo vps.ip:5010 e si dovrebbe aprire la telecamera

14) In aggiunta editate sempre con winscp il file config presente sul raspberry in /root/.ssh/ aggiungendo per esempio una telecamera che è sull'ip 192.168.1.110, che necessita della porta 5010 aperta, che chiameremo Tele5010

Host Tele5010
HostName IP della VPS
User root
Port 22
RemoteForward 5010 192.168.1.110:5010
ServerAliveInterval 30
ServerAliveCountMax 3
ExitOnForwardFailure yes

15) Dopo aver creato questo file, non ci sarà più bisogno di mandare il comando ssh -R 9010:192.168.1.110:5010 -N [email protected] -p 22 , ma solo
autossh -M 0 -f -T -N tele5010

16) editate il file crontab in modo che al riavvio venga correttamente eseguito il comando autossh -M 0 -f -T -N tele5010



Se avete un Mikrotik connesso ad un modem LTE potreste evitare tutta questa procedura e seguire questa altra mia guida per ora in inglese:
https://www.reddit.com/r/mikrotik/comments/ls7vkq/mikrotik_as_vpn_client_behind_vps/

chinemys
12-04-2021, 18:57
Interessante questa guida
Alla fine non fai altro che creare un tunnel ssh
,potrebbe tornarmi utile anche se credo che la soluzione della vpn sia migliore .
Usare utente "ROOT" non è mai una buona idea secondo me ,potresti aggiungere adduser