在Ubuntu 12.04上,iptables的规则集存储在哪里?


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

...或将它们放入shell脚本中/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                                                                                 
...     

我似乎可以加载(activeinactive)两个规则集...

..但是这些存放在哪里

我找不到他们的位置,因为有效/无效是非常糟糕的搜索字词,dpkg-query -L iptables也无济于事。

当我为服务器配置puppet/ chef时,很高兴知道在哪里可以放置规则集并添加一个简单的Shell脚本/etc/networking/if-pre-up来加载它们。

然后,我可以忽略iptables-persistent不灵活的程序包,因为它不允许加载不同的规则集。

谢谢你的帮助。

Answers:


4

iptables将规则存储在内存中,但是创建的规则集iptables-save ruleset-name可以在文件中找到

/ var / lib / iptables /规则集名称

这些可以通过调用恢复iptables-restore <ruleset-name>

我只能在Ubuntu 12.04.03 LTS上确认这一点-也许此位置在iptables-package的更高版本中已更改。

我认为/etc/iptables/rulesets.d,将这些存储在一个更合乎逻辑的地方。

/etc/init.d/iptables在第27行中配置了save-path ,随后由initd_save()invokes使用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,精确的穿山甲” ID = ubuntu ID_LIKE = debian PRETTY_NAME =“ Ubuntu精确(12.04.4 LTS)” VERSION_ID =“ 12.04”#iptables-保存ruleset.1在命令行上找到未知参数这似乎不起作用
Rondo

此处
存在
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.