iptables--保存與恢復規則

iptables--保存與恢復規則

1.概述

iptables 提供了兩個很有用的工具用來處理大規則集: iptables-save 和iptables-restore,它們把規則存入一個與標準腳本代碼只有細微查別的特殊格式的文件中,或從中恢復規則。

2.優點

使用 iptables-save 和 iptables-restore 的一個最重要的原因是,它們能在相當程度上提高裝載、保存規則的速度。使用腳本更改規則的問題是,改動每個規則都要調運命令 iptables,而每一次調用 iptables,它首先要把 Netfilter 內核空間中的整個規則集都提取出來,然後再插入或附加,或做其他的改動,最後,再把新的規則集從它的內存空間插入到內核空間中。這會花費很多時間。
爲了解決這個問題,可以使用命令 iptables-save 和 restore 。 iptables-save用來把規則集保存到一個特殊格式的文本文件裏,而 iptables-restore 是用來把這個文件重新裝入內核空間的。這兩個命令最好的地方在於一次調用就可以裝載和保存規則集,而不象腳本中每個規則都要調用一次 iptables。iptables-save 運行一次就可以把整個規則集從內核裏提取出來,並保存到文件裏,而 iptables-restore 每次裝入一個規則表。換句話說,對於一個很大的規則集,如果用腳本來設置,那這些規則就會反反覆覆地被卸載、安裝很多次,而我們現在可以把整個規則集一次就保存下來,安裝時則是一次一個表,這可是節省了大量的時間。

3.缺點

iptables-restore 的主要不足是不能用來做複雜的規則集。例如,我們想在計算機啓動時獲取連接的動態分配的 IP 地址,然後用在腳本里。這一點,用 iptables-restore 來實現,或多或少是不可能的。另外還有一個不足地方是功能不夠齊全。因爲使用的人不是太多,所以發現這個問題的人也不多,還有就是一些 match和target 被引用時考慮不細緻,這可能會出現我們預期之外的行爲。

4.使用方法

iptables-save 用來把當前的規則存入一個文件裏以備 iptables-restore 使用。

iptables-save [-c] [-t table ]

參數-c 的作用是保存包和字節計數器的值。這可以使我們在重啓防火牆後不丟失對包和字節的統計。帶-c 參數的 iptables-save 命令使重啓防火牆而不中斷統計記數程序成爲可能。這個參數默認是不使用的。
參數-t 指定要保存的表,默認是保存所有的表。
輸出格式解釋:
#後面的是註釋。表都以*開始,例如*mangle。每個表都包含鏈和規則,鏈的詳細說明是: [:]。例如,鏈的名字是PREROUTING,策略是 ACCEPT,然後是包記數器和字節計數器,這兩個計數器和iptables -L -v 輸出中用到的計數器一樣。每個表的描述都以關鍵字 COMMIT 結束,它說明在這一點,就要把規則裝入內核了。
保存配置可使用重定向:

iptables-save -c > /etc/iptables-save

這就會把規則集保存到/etc/iptables-save 中,而且還有計數器。

iptables-restore 用來裝載由 iptables-save 保存的規則集。只能從標準輸入接受輸入,而不能從文件接受。

iptables-restore [-c] [-n]

參數-c 要求裝入包和字節計數器。如果你用 iptables-save 保存了計數器,現在想重新裝入,就必須用這個參數。
參數-n 告訴 iptables-restore 不要覆蓋已有的表或表內的規則。默認情況是清除所有已存的規則。

這樣規則集應該正確地裝入內核並正常工作了。

溫馨提示:
以上文章描述如有不清晰之處,歡迎在評論區評論,如有時間,會第一時間回覆,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章