Un paio di settimane fa vi ho parlato di come installare WireGuard su un raspberry, a distanza di pochi giorni la situazione è cambiata e non è più stato possibile raggiungere direttamente il raspberry con un port-forward dal router, dato che il router stesso aveva un IP privato di una rete Ho.
Fortunatamente ho una serie di VPS onLine e mi sono appoggiato ad uno di questi per pubblicare la porta di WireGuard tramite SSH Port Forwarding, ma in questo caso la cosa non è stata immediata, perché WireGuard funziona in UDP mentre SSH fa il Port Forwarding di connessioni TCP.
Beh, allora l’unica cosa da fare era veicolare i pacchetti UDP sulla connessione TCP che SSH, tramite Port Forwarding, metteva a disposizione. Passiamo al dunque.
Intanto ho bisogno di autossh sul raspberry che installiamo con:
apt install autossh
e socat sia sul raspberry che sul VPS:
apt install socat
Sul raspberry (Wireguard Server) ho inserito queste due righe nel file /etc/rc.local (in modo da avviare automaticamente al reboot):
autossh -2 -fN -M 20001 -R 51821:localhost:51821 user@ip_del_vps socat tcp4-listen:51821,reuseaddr,fork udp:localhost:51820
Sul VPS (con IP pubblico) ho inserito questa riga nel file /etc/rc.local:
socat -T15 udp4-recvfrom:51820,reuseaddr,fork tcp:localhost:51821
ecco fatto… Ora, effettuando la connessione dal client Wireguard verso l’IP del server VPS su porta 51820/UDP, i pacchetti vengono inoltrati da socat verso la porta 51821/TCP dove in ascolto c’è la connessione SSH, per il Port-Forwarding, avviata dal Raspberry sul quale abbiamo nuovamente socat che rigira i pacchetti dalla porta 51821/TCP verso la porta 51820/UCP dove è in ascolto il servizio VPN WireGuard.
Nota:
Sui sistemi Debian Based recenti (con systemd) è necessario riattivare l’esecuzione di rc.local al riavvio. C’è già il file systemd in /lib/systemd/system/rc-local.service dove aggiungeremo la sezione [Install] alla fine:
[Install] WantedBy=multi-user.target
Poi creiamo il file rc.local:
>/etc/rc.local chmod +x /etc/rc.local
in cui scriviamo
#!/bin/sh -e # # rc.local # #inserire di seguito le istruzioni exit 0
infine attiviamo il servizio:
systemctl enable rc-local.service systemctl start rc-local.service
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta