Ubuntu

為什麼這 3 條規則會在 iptables 中對我造成問題?(送出行錯誤)

  • May 20, 2011

我正在嘗試將我的規則從一台伺服器導出到另一台伺服器,但由於某種原因,它們在一台伺服器上失敗了。一台伺服器是 Xen,另一台是 OpenVZ(這台引起了麻煩)。它們都在執行 Ubuntu(儘管版本不同,分別為 8.04 和 10.10)以及不同版本的 iptables(分別為 1.3.8 和 1.4.4)。

我很好地導出了我的規則,但是當我執行它們時,我在 COMMIT 行上遇到錯誤。所以我將規則中的每一行一一註釋掉,發現這三行是罪魁禍首:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

這些行有什麼問題?它們在我看來很好,並且在我的 Xen 伺服器上執行良好……

這是原始規則文件的內容:

*filter


#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT


#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT


# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT


# Allows Tomcat, sms, and newrelic
-A INPUT -p tcp --dport 8080 -j ACCEPT
#-A INPUT -p tcp --dport 8009 -j ACCEPT


#  Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT


# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT


# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7


# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

更新:

好的,所以看起來這三個之間唯一的共同點是選項“-m”,沒有一個有效的規則有這個選項……什麼給了?

這些錯誤可能與您需要在執行某些選項之前載入相關核心模組有關。根據發行版的不同,其中一些是預設載入的,如果使用某些選項,其他的可能會自動載入。在您的情況下,您可能需要使用 modprobe 手動載入一些。

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

為了使用狀態條件,您需要載入 ip_conntrack 模組。

-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT

同樣的問題在這裡

-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

不知道為什麼這個會導致問題。

我建議非常仔細地閱讀該特定發行版上 iptables 的手冊頁,然後檢查載入了哪些核心模組,並可能在批處理文件的頂部添加一些行以載入所需的核心模組。

這是我們的一個公共網關的相關輸出,它使用類似的 iptables 規則。

#> lsmod | grep ip
iptable_mangle         11392  0 
ipt_recent             16672  2 
ipt_LOG                13828  4 
iptable_nat            13840  0 
nf_nat                 25496  2 nf_nat_ftp,iptable_nat
ipv6                  287784  65 sit
dm_multipath           23704  0 

引用自:https://serverfault.com/questions/271305