nftables IP地址黑名单功能
使用 nftables
将 IP 地址添加到黑名单中是一种高效且现代的方式,因为 nftables
是 iptables
的继任者,提供了更强大的功能和更高效的过滤IP报文。
以下是使用 nftables
将 IP 地址添加到黑名单的步骤:
1. 安装 nftables
(如果尚未安装)
在大多数 Linux 发行版中,nftables
已经预装。如果没有,可以使用以下命令安装:
Debian/Ubuntu:
bash sudo apt update sudo apt install nftables
CentOS/RHEL:
bash sudo yum install nftables
Fedora:
bash sudo dnf install nftables
确保 nftables
服务已启用并启动:
bash
sudo systemctl enable nftables
sudo systemctl start nftables
2. 创建 IP 地址黑名单文件
创建一个文本文件(如 blocked_ips.txt
),每行一个 IP 地址。例如:
192.168.1.100
10.0.0.1
172.16.0.5
3. 编写 nftables
规则
使用 nftables
的 set
功能来管理黑名单 IP 地址。
1. 创建一个 nftables
配置文件(如 /etc/nftables.conf
):
bash
sudo nano /etc/nftables.conf
2. 添加以下内容:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
set blocked_ips {
type ipv4_addr
flags interval
elements = {
8.8.8.8,
9.9.9.9
}
}
chain input {
type filter hook input priority 0; policy accept;
ip saddr @blocked_ips drop
}
}
3. 保存并退出编辑器。
4. 加载 nftables
规则
使用以下命令加载配置文件:
bash
sudo nft -f /etc/nftables.conf
5. 动态添加 IP 地址到黑名单
如果你需要动态添加 IP 地址到黑名单,可以使用 nft
命令直接操作 set
。
1. 添加单个 IP 地址:
bash
sudo nft add element inet filter blocked_ips { 192.168.1.101 }
2. 删除单个 IP 地址:
bash
sudo nft delete element inet filter blocked_ips { 192.168.1.101 }
3. 查看当前黑名单:
bash
sudo nft list set inet filter blocked_ips
6. 使用脚本批量添加 IP 地址
如果你有一个 IP 地址列表文件(如 blocked_ips.txt
),可以使用脚本批量添加。
1. 编写脚本(如 add_blocked_ips.sh
):
```bash
!/bin/bash
BLOCKEDIPS="/path/to/blockedips.txt"
while read -r ip; do sudo nft add element inet filter blockedips { "$ip" } done < "$BLOCKEDIPS" ```
2. 给脚本执行权限并运行:
bash
chmod +x add_blocked_ips.sh
sudo ./add_blocked_ips.sh
7. 持久化规则
为了确保规则在重启后仍然有效,将规则保存到默认配置文件:
bash
sudo nft list ruleset > /etc/nftables.conf
8. 验证规则
使用以下命令查看当前 nftables
规则:
bash
sudo nft list ruleset
确保黑名单 IP 地址在 blocked_ips
集合中,并且规则已生效。
总结
通过 nftables
,你可以高效地管理 IP 地址黑名单。使用 set
功能可以轻松添加、删除和查看黑名单 IP 地址,同时保持规则的简洁性和可维护性。