簡體   English   中英

無法將規則添加到iptables,什么也沒有提交

[英]Can't add rules to iptables, nothing gets committed

根據document:rules ,執行以下操作應在iptables規則列表中添加一個簡單規則:

rule = iptc.Rule()
rule.src = "127.0.0.1"
rule.protocol = "udp"
rule.target = rule.create_target("ACCEPT")
match = rule.create_match("comment")
match.comment = "this is a test comment"
chain = iptc.Chain(iptc.Table(iptc.Table.FILTER), "INPUT")
chain.insert_rule(rule)

但是,運行此示例將導致絕對零新規則。
我正在通過以下方法進行驗證:

iptables -L --line-number

在提交錯誤問題之前,我想知道是否有人遇到過這種問題,如果遇到這種情況,那么您如何解決它。

為了安全起見,我以root用戶身份運行所有內容,還嘗試通過運行文檔同一部分中的另一個示例代碼來驗證規則:

table = iptc.Table(iptc.Table.FILTER)
for chain in table.chains:
    print ("=======================")
    print ("Chain ", chain.name)
    for rule in chain.rules:
        print ("Rule", "proto:", rule.protocol, "src:", rule.src, "dst:", \
                      rule.dst, "in:", rule.in_interface, "out:", rule.out_interface,)
        print ("Matches:")
        for match in rule.matches:
            print (match.name)
        print ("Target:"),
        print (rule.target.name)
print ("=======================")

(稍作修改即可與Python3配合使用)。

這是為了確保自動提交沒有問題,但是結果仍然相同。 我還要指出的是,它確實可以工作一小段時間,iptables大約增加了3個功能。 可能需要做一個systemctl restart iptables ,但我想在可能的情況下-在執行經典的“ Windows技巧”來重新啟動東西之前,先弄清楚為什么會出錯。 (日記/ systemd中都沒有提及有關iptables的任何內容)

看到@larsks無法重現我進一步挖掘的問題。 似乎已經執行了系統更新(很抱歉,經典錯誤)。

這將導致加載的內核版本與iptables的內核模塊有所不同,使用iptables命令可以解決此問題,因此您可以添加一些規則。

但是,無法使用lib python-iptables。
實際的差異超出了我的范圍,我挖了一點,但找不到導致問題的位置。

在這種情況下,重新啟動計算機是解決該問題的唯一方法(據我所知)。 這樣可以使加載的內核模塊和安裝的工具與它們針對的版本相匹配。

(另一種解決方案是保留舊的iptables命令和庫,這意味着將它們備份並將庫指向備份的版本,直到可以重新引導為止)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM