温馨提示×

如何测试Debian iptables

小樊
58
2026-08-25 14:28:56
栏目: 智能运维

在 Debian 系统上测试 iptables 是否正常工作,通常可以从 规则是否生效、网络是否按预期被控制、以及连通性验证 三个方面来做。下面给你一套常用、实用的测试方法(从基础到进阶)。


一、确认 iptables 已安装并运行

1. 检查是否安装

iptables --version

如果没有安装:

sudo apt update
sudo apt install iptables

2. 查看当前规则

sudo iptables -L -n -v
  • -L:列出规则
  • -n:不做 DNS 解析(更快)
  • -v:显示详细信息(包计数)

二、基础功能测试(最常见)

示例:测试是否阻止某个端口

1. 添加一个拒绝规则(例如阻止 80 端口)

sudo iptables -A INPUT -p tcp --dport 80 -j DROP

2. 查看规则是否生效

sudo iptables -L INPUT -n -v

你应该能看到类似:

DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

3. 测试端口是否真的被阻止

在另一台机器上执行:

curl http://<服务器IP>

telnet <服务器IP> 80

✅ 如果连接失败,说明 iptables 生效。


三、测试规则计数(非常实用)

iptables 会统计匹配到的包数量。

sudo iptables -L INPUT -n -v

观察 pktsbytes 是否增加:

  • 有流量 → 规则被命中
  • 一直为 0 → 规则未匹配(可能端口/协议不对)

四、测试允许规则(白名单测试)

允许 SSH(22 端口)

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

然后测试 SSH 是否能连接:

ssh user@<服务器IP>

五、测试默认策略(非常关键)

设置默认拒绝 INPUT

sudo iptables -P INPUT DROP

⚠️ 注意:这会立刻断开所有连接(包括 SSH)

建议先允许 SSH:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -P INPUT DROP

测试:

  • SSH 是否还能连
  • 其他端口是否无法访问

六、测试 NAT(如果你在用)

查看 NAT 表

sudo iptables -t nat -L -n -v

示例:测试 SNAT / MASQUERADE

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

测试:

  • 内网机器是否能通过本机上网
  • tcpdump 看源地址是否变化

七、用 ping 测试 icmp 规则

禁止 ping

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

测试:

ping <服务器IP>

✅ ping 不通说明规则生效。


八、防止规则丢失(Debian 特有)

Debian 默认 重启后 iptables 规则会丢失

保存规则

sudo iptables-save > /etc/iptables/rules.v4

安装持久化工具

sudo apt install iptables-persistent

开机自动加载:

sudo netfilter-persistent save
sudo netfilter-persistent reload

九、调试技巧(高级)

1. 使用 LOG 规则

sudo iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "IPTABLES-DROP: "

查看日志:

sudo dmesg | grep IPTABLES
# 或
sudo tail -f /var/log/kern.log

2. 使用 tcpdump 验证

sudo tcpdump -i eth0 port 80

十、快速测试清单(推荐)

✅ 能加规则
✅ 能看到规则
✅ 包计数在增长
✅ 端口/ping 行为符合预期
✅ 重启后规则是否还在


如果你愿意,可以告诉我:

  • Debian 版本(10 / 11 / 12)
  • 本机防火墙 还是 网关/NAT
  • 想测试 端口 / 转发 / 限速 / 防攻击

我可以给你一套 完全贴合你场景的 iptables 测试方案

0