如何将多个 ip 导入 Ipset?

byt*_*e00 4 linux firewall ubuntu ipset

我在 Ubuntu 服务器防火墙上使用 iptables 和 ipset。我想知道是否有一个命令可以将包含 ip 列表的文件导入到 ipset。现在,为了填充 ipset,我正在使用以下命令添加每个 ip:

ipset add manual-blacklist x.x.x.x
Run Code Online (Sandbox Code Playgroud)

如果我可以使用单个命令添加多个 ip,例如导入文件等,那将非常有帮助。

在命令下

 for ip in `cat /home/paul/ips.txt`; do ipset add manual-blacklist $ip;done
Run Code Online (Sandbox Code Playgroud)

我得到这个回应

resolving to IPv4 address failed to parse 46.225.38.155
Run Code Online (Sandbox Code Playgroud)

对于 ips.txt 中的每个 ip

我不知道如何应用它。

ibr*_*him 11

您可以使用 ipset save/restore 命令。

ipset save manual-blacklist
Run Code Online (Sandbox Code Playgroud)

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

示例输出:

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
Run Code Online (Sandbox Code Playgroud)

并使用以下命令恢复它。

ipset restore -! < ips.txt
Run Code Online (Sandbox Code Playgroud)

这里我们使用 -!忽略主要是因为重复的错误。

  • 必须注意的是,在添加大量记录时,与 add 相比,restore 的工作速度非常快。在我的 PC 上,`add` 10000 行需要 17 秒,`restore` 只需要 0.05 秒 (2认同)