NoIpClientVPN
Uno script su Raspberry Pi che tiene aggiornato un hostname DDNS No-IP con l'IP pubblico corrente, con avvisi su Telegram — così il VPN di casa resta raggiungibile anche quando l'IP cambia.
Il problema
La connessione di casa passa da un router su rete mobile/LTE, con un IP pubblico che cambia e che il router non aggiorna in modo affidabile sul servizio DDNS. Senza un indirizzo stabile a cui puntare, il server WireGuard di casa diventa irraggiungibile dall’esterno proprio quando serve.
Cosa fa
Ogni 5 minuti, lanciato da cron, lo script:
- Recupera l’IP pubblico attuale da un servizio esterno.
- Lo confronta con l’ultimo valore noto (tenuto in cache).
- Se è cambiato → aggiorna il DDNS No-IP tramite la loro API e manda un messaggio su Telegram.
- Se è uguale → esce in silenzio, senza fare nulla.
Così l’hostname punta sempre all’IP giusto e il client WireGuard può usarlo come endpoint, senza toccare la configurazione del router.
Dettagli
- Cache dell’ultimo IP per evitare aggiornamenti inutili (e rispettare le regole di No-IP).
- Notifiche Telegram opzionali, solo quando l’IP cambia davvero.
- Credenziali fuori dal codice, in un file
.env. - Log su file e gestione esplicita delle risposte di No-IP (
good/nochg/badauth/nohost) per capire a colpo d’occhio cosa è successo.
Stack
Python · Raspberry Pi · cron · API No-IP · WireGuard · Telegram