Linux

為什麼這個 IPTables 命令會創建 4 個條目?

  • August 10, 2014

當我執行這個 IPTables 命令時: iptables -A INPUT -p tcp -m tcp --dport 9080 -s localhost -d localhost -j ACCEPT

iptables -L顯示:

ACCEPT     tcp  --  localhost            localhost            tcp dpt:9080
ACCEPT     tcp  --  localhost            localhost            tcp dpt:9080
ACCEPT     tcp  --  localhost            localhost            tcp dpt:9080
ACCEPT     tcp  --  localhost            localhost            tcp dpt:9080

為什麼是四次?我的意思是,它做了我想要的,但為什麼它需要顯示四次?

編輯: 在我這邊(多次)輸入的所有命令都是:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -d 192.99.169.167/32 -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

iptables -A INPUT -s localhost -d localhost -p tcp -m tcp –dport 9080 -j ACCEPT

iptables -A INPUT -s localhost -d localhost -p tcp -m tcp –dport 9081 -j ACCEPT

iptables -A INPUT -j DROP
iptables -P INPUT DROP

它不應該,除非有錯誤。但是,iptables -A它不是冪等的,如果您多次執行它(或iptables -A針對現有或載入的配置執行冗餘命令),它將再次添加該規則,無論它是否與決定性規則完全相同。

可能發生的另一件事是解析度為 name 提供了多個結果localhost。這是非常罕見的,因為最佳實踐要求不要在 iptables 命令中使用名稱。您可以檢查您的/etc/hosts文件以確定這一點,或者您可以使用它iptables -nL來顯示 IP 是什麼。在這種情況下,是的,它確實需要為您的請求添加多個規則(因為在這種特殊情況下,它會在插入時解析並副檔名稱),並且您可能應該明確指定127.0.0.1這是否是您想要的。

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