TL; DR
Что я могу сделать, чтобы изменить iptables с ddclient (с пользователем ddclient)?
История позади
У меня есть компьютер, который использует dyndns для адресации извне. Всякий раз, когда провайдер выдает новый IP-адрес (что случается довольно часто в наши дни), ddclient обновляет запись DNS.
На компьютере есть некоторые правила iptables, основанные на его общедоступном IP-адресе, которые, конечно, будут работать только при правильном IP-адресе.
До сих пор у меня была почасовая работа cron, которая работала бы так, чтобы поддерживать iptables в актуальном состоянии:
./change-iptables-public-ip.sh `curl ifconfig.me/ip`
Теперь почасовые обновления означают, что может быть часовая задержка, когда iptables настроен с неверным адресом. Я мог бы сделать работу более частой (до минуты), но я подумал, что делать подобные вещи с помощью опроса - пустая трата времени, особенно когда ddclient предлагает возможность выполнить скрипт после изменения ip.
Поэтому я вставил это в мой конфиг ddclient:
postscript=/etc/ddclient/change-iptables-public-ip.sh
Я также добавил бит suid в change-iptables-public-ip.sh
, но безрезультатно.
Когда скрипт выполняется ddclient, это приводит к:
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.
Мне не нравится идея запуска ddclient от имени пользователя root.
До сих пор у меня была идея, что процесс, выполняющийся от имени пользователя root, прослушивает сокет для нового ip, а затем запускает изменения в iptables. Но прежде чем испачкать руки, я хочу услышать, есть ли там стандартные решения.