TL; DR
¿Hay algo que pueda hacer para cambiar iptables de ddclient (con el usuario ddclient)?
La historia detras
Tengo una computadora que usa dyndns para ser direccionable desde afuera. Cada vez que el proveedor emite una nueva dirección IP (lo que sucede con frecuencia en estos días) ddclient actualiza la entrada dns.
La computadora tiene algunas reglas de iptables basadas en su IP pública que, por supuesto, solo funcionará mientras la IP sea correcta.
Hasta ahora tenía un trabajo cron por hora que funcionaría así para mantener actualizadas las iptables:
./change-iptables-public-ip.sh `curl ifconfig.me/ip`
Ahora, las actualizaciones por hora significaban que podría haber un retraso de una hora cuando iptables se configura con la dirección incorrecta. Podría haber hecho el trabajo más frecuente (hasta un minuto), pero pensé que hacer este tipo de cosas a través del sondeo es un desperdicio, especialmente cuando ddclient ofrece la posibilidad de ejecutar un script después de que se haya cambiado la ip.
Así que inserté esto en mi configuración de ddclient:
postscript=/etc/ddclient/change-iptables-public-ip.sh
También agregué el bit suid a change-iptables-public-ip.sh
, pero fue en vano. Cuando el script es ejecutado por ddclient, resulta en:
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.
No me gusta la idea de ejecutar ddclient como root.
Una idea que tenía hasta ahora era un proceso que se ejecutaba como root, que escucha en un socket la nueva ip y luego desencadena los cambios en iptables. Pero antes de ensuciarme las manos quiero saber si hay soluciones estándar por ahí.