У меня есть сервер ubuntu, который разрешает трафик только на выбранную группу портов через iptables. Один из портов настроен на REJECT
по умолчанию 53
.
Мне нужно периодически открывать порт 53 для запуска экземпляра acme-dns
подтвердить подлинность DNS-01
проблемы от LetsEncrypt, а затем закройте его, когда закончите.
Есть ли простой способ автоматизировать это? Я знаю как легко автоматизировать добавление правило через iptables -I
вставить ACCEPT
для udp
трафик 53
вверху списка, но единственный способ, которым я знаю, как отключить конкретное правило, - это перечислить все активные правила с номерами строк и отключить конкретное правило по номеру строки. Это требует ручного вмешательства с моей стороны.
Мне нужно удалить это правило, а не отменять его, вставляя REJECT
перед этим, потому что это будет выполняться заданием cron, и я не хочу загрязнять правила кучей переключателей ACCEPT / REJECT, которые отменяют друг друга.
Единственный подход, который я могу придумать, - это написать сценарий, который печатает правила по номеру строки, анализирует их, а затем отбрасывает правило сопоставления. Есть ли способ сделать это просто с помощью команды iptables, о которой я не знаю?
Правилами можно легче управлять, используя определяемую пользователем цепочку.
Создайте цепочку:
iptables -N acme-dns
Вызовите эту цепочку с помощью этой команды, запущенной в нужном месте в скрипте iptables, перед правилом REJECT для порта 53:
iptables -A INPUT -j acme-dns
Обычно эта цепочка пуста и эффекта нет. Когда нужен доступ к acme-dns, можно запустить эту команду (можно было бы точнее, но дело не в этом):
iptables -A acme-dns -p udp --dport 53 -j ACCEPT
Когда доступ больше не нужен, содержимое цепочки может быть сброшено. Даже если по какой-то причине предыдущая команда была добавлена несколько раз, это все равно сбросит все записи:
iptables -F acme-dns
Для этого простого случая это действительно все, что нужно. Для сложных случаев, включающих множество динамических изменений значений (порты, IP-адреса ...), но не правил, модуль соответствия набора и ipset может помочь в производительности и управлении.