ipset 如何添加從 x 到 y 的 IP 範圍
我需要將此 81.212.0.0/14 ip 範圍添加到 ipset。但它的計算並不低於/16。我想從 81.212.0.0 添加到 81.215.255.255 IP 地址。除了/14,還有其他方法嗎?
我試圖允許來自特定 IP 範圍的連接。
我嘗試了什麼:
ipset -A 允許iplist 81.212.0.0/14
我所期望的:
這應該允許 81.212.0.0 - 81.215.255.255 之間的連接 PS:除此之外,所有其他規則都可以正常工作。
我認為問題是 81.212.0.0/14 的 IP 數量大於 65535,也許是 idk。
我認為問題是 81.212.0.0/14 的 IP 數量大於 65535,也許是 idk。
你在這裡可能完全正確。如果您使用的 IPset 類型為
hash
,則它可以儲存的元素的最大數量,可maxelem
在創建 IPset 時由參數設置…,預設值為maxelem
65536。如果您使用類型為 的雜湊,則為bitmap
65536 個地址是地圖的最大尺寸。但是你用 IPset 做什麼呢?如果您只是針對整個 /14 段進行匹配,則基於散列的 IPset 將比簡單的基於網路地址和遮罩的匹配效率低得多。
但是,如果您只是設置一個初始集併計劃以後有選擇地從中刪除特定的 IP 地址,那麼使用 IPset 是有意義的。
即便如此,如果預計被淘汰的 IP 數量相對較少,則可能明智的做法是顛倒您所做的任何事情的意義,並使用基於遮罩的匹配作為一般規則,並將基於 IPset 的匹配作為例外。
就像是:
iptables -N maybeAllow81_212 iptables -A maybeAllow81_212 -m set --match-set denyiplist_81_212 src -j DROP iptables -A maybeAllow81_212 -j ACCEPT iptables -A INPUT -s 81.212.0.0/14 -j maybeAllow81_212
這樣,任何不是來自 81.212.0.0/14 的流量都可以在主 INPUT 鏈中處理,基本上只需要兩條彙編指令:一條 32 位與和一條 32 位比較。你不可能比這更快。
來自該段內的任何流量都會被轉移到
maybeAllow81_212
子鏈,該子鏈將進行雜湊匹配(使用倒置的,希望更小的集合來匹配!),然後允許與集合不匹配的每個人通過。