Где хранятся наборы правил iptables в Ubuntu 12.04?

8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

Где хранятся наборы правил iptables при вызове iptables-save <ruleset-name>?

Пояснение :

Согласно этому ответу, основной способ сохранения правил iptables - это вызов

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

и затем загрузка / восстановление этих правил в /etc/network/interfacesвиде:

iface eth0 inet static
        ....
        pre-up iptables-restore < /etc/iptables/rules.v4
        pre-up ip6tables-restore < /etc/iptables/rules.v6

... или положить их в сценарий оболочки в /etc/network/if-pre-up.d.


Это можно упростить, установив iptables-persistentпакет.

sudo apt-get install iptables-persistent
inovoke-rc.d iptables-persistent save
update-rc.d iptables-persistent defaults

Следуя некоторым учебникам, я попытался вызвать service iptables status(несуществующую / неизвестную команду для iptablesверсии / пакета, которая поставляется с предустановленной 12.04) и нашел этот интересный вывод:

Aborting iptables initd: unknown command(s): "status".                                                               
  ...                                                                                  
  save <ruleset>                                                                                                    
     save the current ruleset                                                                                       
  load <ruleset>                                                                                                    
     load a ruleset                                                                                                 
   ...                                                                                                   
Saved rulesets:                                                                                                     
  active, inactive                                                                                 
...     

Кажется, есть два набора правил, которые я могу загрузить ( activeи inactive) ...

.. но где они хранятся ?

Я не могу найти их местоположение, так как активные / неактивные - довольно плохие поисковые термины, и они dpkg-query -L iptablesтоже не помогают.

Поскольку я подготавливаю свои серверы с помощью puppet/, chefбыло бы неплохо знать, есть ли место, где я могу поместить свои наборы правил и добавить простой сценарий оболочки, /etc/networking/if-pre-upчтобы загрузить их.

Тогда я мог бы опустить iptables-persistentпакет, который не настолько гибок, так как не позволяет загружать разные наборы правил.

Спасибо за вашу помощь.

Николай Фрёлих
источник

Ответы:

4

iptables хранит правила в памяти, но созданный набор правилiptables-save ruleset-name можно найти в файле

/ Вар / Библиотека / Iptables / набор правил имя

Они могут быть восстановлены путем вызова iptables-restore <ruleset-name>.

Я могу подтвердить это только для Ubuntu 12.04.03 LTS - возможно, это местоположение изменилось в более поздних версиях iptables-пакета.

Я думаю, что-то вроде /etc/iptables/rulesets.dбыло бы более логичным местом для хранения этих.

Путь сохранения настраивается в /etc/init.d/iptablesстроке 27, а затем используется для initd_save()вызова initd_counters().

libdir=/var/lib/iptables   

# ...

initd_counters () {                                                                                         
 if test "${enable_save_counters:-false}" = true; then                                                     
    echo -n " with counters"                                                                                
    $iptables_save -c > "$ruleset"                                                                          
  else                                                                                                      
    $iptables_save | sed '/^:/s@\[[0-9]\{1,\}:[0-9]\{1,\}\]@[0:0]@g' > "$ruleset"                           
  fi                                                                                                        
}        

initd_save () {                                                                                             
  rm -f $autosave                                                                                           
  ruleset="${libdir}/$@"                                                                                    
  echo -n "Saving iptables ruleset: save \"$@\""                                                            
  initd_counters                                                                                           
  echo "."                                                                                                  
}          
Николай Фрёлих
источник
#cat / etc / os-release NAME = "Ubuntu" VERSION = "12.04.4 LTS, Precise Pangolin" ID = Ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu точная (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- сохранить набор правил.1 Неизвестные аргументы найдены в командной строке Это не похоже на работу
Рондо
та же проблема здесь
unc0nnected