Получить ExecStartPre для работы с iptables и ipset

У меня есть правило в iptables, которое вызывает черный список Я создал с помощью ipset. Мое правило:

-A INPUT -m set --match-set blacklist src -m comment --comment "BLACKLISTED TRAFFIC" -j DROP

При перезагрузке не сохраняется. Это приводит к тому, что iptables не запускается при загрузке, так как черный список отсутствует. Для создания списка я использую команду

/usr/sbin/ipset restore < /etc/ipset-blacklist/ip-blacklist.restore

. Чтобы запустить iptables, я настроил /usr/lib/systemd/system/iptables.service следующим образом

[Unit]
Description=IPv4 firewall with iptables
Before=ip6tables.service
After=syslog.target
AssertPathExists=/etc/sysconfig/iptables

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/usr/sbin/ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
ExecStart=/usr/libexec/iptables/iptables.init start
ExecReload=/usr/libexec/iptables/iptables.init reload
ExecStop=/usr/libexec/iptables/iptables.init stop
Environment=BOOTUP=serial
Environment=CONSOLETYPE=serial
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=basic.target

Если я сделаю

 systemctl start iptables.service

, я вернусь :

ipset[26566]: ipset v6.38: Unknown argument <

Теперь, если я изменю iptables.service на этот

[Unit]
Description=IPv4 firewall with iptables
Before=ip6tables.service
After=syslog.target
AssertPathExists=/etc/sysconfig/iptables

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
ExecStart=/usr/libexec/iptables/iptables.init start
ExecReload=/usr/libexec/iptables/iptables.init reload
ExecStop=/usr/libexec/iptables/iptables.init stop
Environment=BOOTUP=serial
Environment=CONSOLETYPE=serial
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=basic.target

, то я получаю сообщение об ошибке

iptables: Applying firewall rules: iptables-restore v1.4.21: Set blacklist doesn't exist

Таким образом, похоже, что ExecStartPre не запускается. Есть какие-нибудь советы?

0
задан 13 September 2019 в 10:07
1 ответ

Попробуйте

ExecStartPre=/bin/sh -c "/usr/sbin/ipset restore < /etc/ipset-blacklist/ip-blacklist.restore"
1
ответ дан 4 December 2019 в 15:37

Теги

Похожие вопросы