TL; DR
C'è qualcosa che posso fare per cambiare iptables da ddclient (con ddclient utente)?
La storia dietro
Ho un computer che usa dyndn per essere indirizzabile dall'esterno. Ogni volta che il provider emette un nuovo indirizzo IP (cosa abbastanza frequente in questi giorni) ddclient aggiorna la voce dns.
Il computer ha alcune regole di iptables basate sul suo IP pubblico che ovviamente funzionerà solo mentre l'IP è corretto.
Fino ad ora avevo un cron job orario che avrebbe funzionato così per tenere aggiornato iptables:
./change-iptables-public-ip.sh `curl ifconfig.me/ip`
Ora gli aggiornamenti orari significavano che potrebbe esserci un ritardo di un'ora in cui iptables è configurato con l'indirizzo sbagliato. Avrei potuto rendere il lavoro più frequente (fino a un minuto), ma ho pensato che fare questo genere di cose tramite il polling è uno spreco, specialmente quando ddclient offre la possibilità di eseguire uno script dopo che l'ip è stato cambiato.
Così ho inserito questo nella mia configurazione di ddclient:
postscript=/etc/ddclient/change-iptables-public-ip.sh
Ho anche aggiunto il bit suid a change-iptables-public-ip.sh
, ma senza risultato.
Quando lo script viene eseguito da ddclient risulta in:
iptables v1.4.18: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
Non mi piace l'idea di eseguire ddclient come root.
Un'idea che ho avuto fino ad ora era un processo eseguito come root, che ascolta un socket per il nuovo ip e quindi attiva le modifiche su iptables. Ma prima di sporcarmi le mani voglio sentire se ci sono soluzioni standard là fuori.