Di mana aturan iptables disimpan di Ubuntu 12.04?

8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

Di mana aturan iptables disimpan saat memohon iptables-save <ruleset-name>?

Penjelasan :

Menurut jawaban ini, cara dasar menyimpan aturan iptables sangat menarik

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

dan setelah itu memuat / mengembalikan aturan ini /etc/network/interfacesseperti:

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

... atau memasukkan ini ke dalam skrip shell /etc/network/if-pre-up.d.


Ini dapat disederhanakan dengan menginstal iptables-persistentpaket.

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

Mengikuti beberapa tutorial saya mencoba memanggil service iptables status(perintah yang tidak ada / tidak dikenal untuk iptablesversi / paket yang sudah diinstal sebelumnya dengan 12.04) dan menemukan output yang menarik ini:

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

Tampaknya ada dua aturan yang dapat saya muat ( activedan inactive) ...

.. tapi di mana ini disimpan ?

Saya tidak dapat menemukan lokasi mereka sebagai aktif / tidak aktif adalah istilah pencarian yang sangat buruk dan dpkg-query -L iptablestidak membantu.

Karena saya menyediakan server saya dengan puppet/ chefakan lebih baik untuk mengetahui apakah ada beberapa tempat saya dapat meletakkan aturan saya dan menambahkan skrip shell sederhana /etc/networking/if-pre-upuntuk memuat ini.

Lalu saya bisa mengabaikan iptables-persistentpaket yang tidak fleksibel karena tidak memungkinkan memuat aturan yang berbeda.

Terima kasih atas bantuan Anda.

Nicolai Fröhlich
sumber

Jawaban:

4

iptables menyimpan aturan dalam memori tetapi aturan yang dibuat oleh iptables-save ruleset-namedapat ditemukan dalam file

/ var / lib / iptables / ruleset-name

Ini dapat dipulihkan dengan memohon iptables-restore <ruleset-name>.

Saya hanya dapat mengkonfirmasi ini untuk Ubuntu 12.04.03 LTS - mungkin lokasi ini telah berubah di versi selanjutnya dari paket iptables.

Saya pikir sesuatu seperti /etc/iptables/rulesets.dakan menjadi tempat yang lebih logis untuk menyimpan ini.

Save-path dikonfigurasikan /etc/init.d/iptablespada baris 27 dan kemudian digunakan oleh initd_save()yang memanggil 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 "."                                                                                                  
}          
Nicolai Fröhlich
sumber
#cat / etc / os-release NAME = "Ubuntu" VERSION = "12.04.4 LTS, Precise Pangolin" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Tepat Ubuntu (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- save ruleset.1 Argumen tidak dikenal yang ditemukan di commandline Ini sepertinya tidak berfungsi
Rondo
masalah yang sama di sini
unc0nected