是否擾亂 hash:net,連接埠支援 0.0.0.0/0

是否擾亂 hash:net,連接埠支援 0.0.0.0/0

有沒有辦法將 0.0.0.0/0 加入 ipset 類型 hash:net,port 中?它似乎只支援 1-32 的前綴長度,但如果我希望 ipset 雜湊中的條目支援給定連接埠上的所有 ip 流量該怎麼辦?例如

ipset create testset hash:net,port
ipset add testset 0.0.0.0,22
iptables -I INPUT 1 -m set --match-set testset src, src -j ACCEPT
iptables -I INPUT 2 -j LOG --log-prefix "** FIREWALL **"

不會做任何事。 SSH 流量將到達防火牆並產生日誌。 0.0.0.0/0 不被接受為有效的CIDR 表示法,儘管他們似乎在修訂版2 中將其添加到hash:net,iface 中。於它自己的iptables 規則。但是,我特別想將連接埠儲存在哈希中,因為某些連接埠可能關心 src ip 位址,而其他連接埠則不會,而且我不想為 0.0.0.0/0 維護單獨的集合。

答案1

正確的語法是使用 0.0.0.0/0,因為 0.0.0.0 預設為 0.0.0.0/32。可惜您發現這不受支援:

# ipset add testset 0.0.0.0/0,22
ipset v7.3: The value of the CIDR parameter of the IP address is invalid

你可以做的就是在覆蓋路由時使用 OpenVPN 中使用的相同技巧:將 0.0.0.0/0 分成兩半:0.0.0.0/1 和 128.0.0.0/1:

ipset add testset 0.0.0.0/1,22
ipset add testset 128.0.0.0/1,22

筆記:

通常,對於運行當地的ssh 伺服器,iptables參數大概應該是這樣的:

iptables -I INPUT 1 -m set --match-set testset src,dst -j ACCEPT

既然我們在輸入鏈條,意義接收,src,dst表示檢查遠端(來源)IP 和本地(目標)端口,而src,src表示檢查遠端(來源)IP 和遠端(來源)端口。唯一的用途是允許來自遠端 ssh 伺服器的回覆流量,但這通常已經在-m conntrack --ctstate ESTABLISHED其他地方處理過。

相關內容