Linux

如何將多個 ip 導入到 Ipset?

  • April 4, 2022

我在 Ubuntu 伺服器防火牆上使用 iptables 和 ipset。我想知道是否有用於將包含 ip 列表的文件導入到 ipset 的命令。為了填充 ipset,現在,我使用以下命令添加每個 ip:

ipset add manual-blacklist x.x.x.x

如果我可以使用單個命令添加多個 ip,例如導入文件等,那將非常有幫助。

聽令

for ip in `cat /home/paul/ips.txt`; do ipset add manual-blacklist $ip;done

我得到這個回應

resolving to IPv4 address failed to parse 46.225.38.155

對於 ips.txt 中的每個 ip

我不知道如何應用它。

您可以使用 ipset 保存/恢復命令。

ipset save manual-blacklist

你可以執行上面的命令,看看你需要如何創建你的保存文件。

範例輸出:

create manual-blacklist hash:net family inet hashsize 1024 maxelem 65536 
add manual-blacklist 10.0.0.1 
add manual-blacklist 10.0.0.2

並使用以下命令恢復它。

ipset restore -! < ips.txt

這裡我們使用 -! 忽略錯誤主要是因為重複。

如果您的列表變得非常大,例如 200 000 行甚至更多,並且您在伺服器中有足夠的記憶體來支持這一點,那麼執行整個 oneliner 循環非常好:

nice -n 5 bash -c "for IP in \$(cat textfile.txt); do ipset add <setname> \$IP -exist timeout <seconds>; done"

然後您的其他服務可以從 bash 升級,並且您沒有任何網路或 mysql 或 apache 或其他服務滯後,因為 bash 正在使用所有資源。

引用自:https://unix.stackexchange.com/questions/401984