Кажется, что fwbuilder всегда хочет записывать правила брандмауэра непосредственно на устройство, которое будет их запускать, однако я хочу записать их в файл правил, который я затем могу поддерживать и обновлять на устройстве с помощью управления конфигурацией (доступный).
Уточнение: Хотите, чтобы правила были записаны в формате, подходящем для использования iptables-restore.
Это возможно?
fwbuilder из коробки не генерирует "прямой" скрипт, совместимый с iptables-restore, но его можно сделать с некоторыми изменениями. в этом есть две части:
Сначала установите флажок «Использовать iptables-restore для активации политики» на вкладке «Сценарий» в диалоге настроек брандмауэра). На этой же вкладке отключите все остальные функции сгенерированного скрипта.
Правила представлены в формате iptables-restore, но поскольку созданный по умолчанию сценарий хочет отправить их на стандартный ввод iptables-restore, они генерируются следующим образом:
(
echo '*filter'
# ================ Table 'filter', automatic rules
echo :INPUT DROP [0:0]
echo :FORWARD DROP [0:0]
echo :OUTPUT DROP [0:0]
# accept established sessions
echo "-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT "
echo "-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT "
echo "-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT "
# ================ Table 'filter', rule set Policy
#
# Rule 0 (global)
echo ":Cid5468X36359.0 - [0:0]"
. . . . . . . .
echo "-A POSTROUTING -o eth1 -s 10.0.18.0/24 -j SNAT --to-source 74.123.224.162 "
echo "-A POSTROUTING -o eth1 -s 10.0.22.0/24 -j SNAT --to-source 74.123.224.162 "
#
echo COMMIT
) | $IPTABLES_RESTORE; IPTABLES_RESTORE_RES=$?
вы можете заменить реальный iptables-restore вашей собственной утилитой, которая будет брать эти правила из stdin и сохранять их в файле, который будет в правильном формате iptables-restore (это то, что вы хотите). Утилита может быть простой, например, «тройник». Чтобы взять на себя iptables-restore, откройте диалоговое окно «Host OS Settings» в свойствах брандмауэра, перейдите на вкладку «Пути» и измените путь для iptables-restore, заменив его на путь и имя вашей утилиты или скрипта.
Поскольку вы не используете формат сценария по умолчанию, который ожидает fwbuilder, его встроенный установщик политики все равно не будет работать. Итак, что вам нужно сделать, это запустить сгенерированный скрипт для создания правильного файла iptables-restore, а затем установить его на место. Как вы сделаете последнее, зависит от вас.
Вы также можете изменить формат созданного скрипта, чтобы удалить ненужные части. Сгенерированный сценарий построен с использованием шаблона, который вы можете изменить. См. Главу 13 «Конфиглеты» Руководства пользователя. Идея состоит в том, чтобы «упростить» сгенерированный скрипт, чтобы оставить только правила iptables, которые уже должны быть в формате iptables-restore, и удалить все остальное. Я думаю, что правила по-прежнему будут иметь форму «echo -A INPUT ...», поэтому вам нужно будет запустить сгенерированный скрипт, чтобы получить правила в нужном вам формате.