Linux
如何將多個 ip 導入到 Ipset?
我在 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 正在使用所有資源。