有沒有一種方法可以在不使用shell腳本的情況下以編程方式查詢iptables?我沒有使用shell腳本來運行iptables命令和grep輸出的自由。是否有使用GNU C的本地(API)級別訪問iptables?至少我想查詢iptables的默認策略。如何以編程方式訪問iptables?
我希望能使用/ proc文件系統,但我不認爲它implemented yet.
有沒有一種方法可以在不使用shell腳本的情況下以編程方式查詢iptables?我沒有使用shell腳本來運行iptables命令和grep輸出的自由。是否有使用GNU C的本地(API)級別訪問iptables?至少我想查詢iptables的默認策略。如何以編程方式訪問iptables?
我希望能使用/ proc文件系統,但我不認爲它implemented yet.
所以它看起來沒有任何辦法,它已被Netfilter組織承認。
看到如此問題,How can I programmatically manage iptables rules on the fly?
正如我在評論說,通過ltrace
-ing iptables -L
,我富爾德,有一個iptables-dev
包在我的Debian/Sid與libipq和相關的庫。你可能會想使用它。
我會用下PROC-fileystem的/ proc /淨/ 看一看http://www.netfilter.org/documentation/FAQ/netfilter-faq-3.html#ss3.9,尋找PROC(在不同的問題)
嗯,他爲什麼shouln't看看iptables來獲得的來源一個主意?我不明白爲什麼要使用strace來判斷源代碼是否包含所需的代碼。
您可以用iptables
庫接口稱爲libiptc
。
那怎麼我創建了我的Perl接口iptables
:CPAN IPTables::libiptc
但libiptc
庫只給你一個API基本鏈結構。 訪問和解析個人規則是有點複雜,因爲它取決於個人目標/匹配模塊的共享庫的dyn-loading
。
我在我的CPAN module的做法是,我曾與do_command()
從iptables.c
鏈接,這樣做規則變化。
你需要知道的另一件事是:
單個iptables
呼叫,請執行以下操作:
libiptc
解析它因此,一個沉重的過程,如果你只是每次都做一個單獨的更改。 但是你也可以使用它來獲得優勢,並且一次執行許多更改,並且通過/爲內核顯示爲單個原子更改。
請注意,命令:'iptables-restore'使用智能方法在將更改提交到內核之前進行許多更改。 – NetOptimizer 2012-10-01 19:01:30
這種問題的常見答案是嘗試「strace」或「ltrace」命令,例如, 'strace iptables -L' – 2011-12-22 11:24:03
可能重複的[我怎樣才能以編程方式管理iptables規則?](http://stackoverflow.com/questions/109553/how-can-i-programmatically-manage-iptables-rules-在運行中) – 2015-03-06 23:24:43