首先确认iptables服务是否正常运行及规则加载情况。Debian系统下,可使用以下命令:
sudo /etc/init.d/iptables status
:查看iptables服务状态(部分系统可能需替换为systemctl status iptables
);iptables -L -n -v
:列出当前所有规则(-n
显示数字格式IP/端口,-v
显示详细信息,如数据包计数);iptables -h
:查看iptables帮助信息(确认命令语法是否正确);iptables -V
:查看iptables版本(确保安装正确)。sudo systemctl start iptables
)或启用开机自启(sudo systemctl enable iptables
)。规则错误是常见故障原因,需重点排查以下几点:
DROP
所有流量),后面规则无法生效。使用iptables -L -n --line-number
查看规则编号,通过iptables -D INPUT <编号>
删除错误规则,或用iptables -I INPUT <位置> <规则>
调整顺序(如将放行SSH的规则放在前面);-p
指定协议、--dport
指定端口、-j
指定动作)。例如,放行SSH的正确规则为iptables -A INPUT -p tcp --dport 22 -j ACCEPT
;filter
表(过滤数据包),若需配置NAT(端口转发、地址转换),需切换至nat
表(如iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
);INPUT
(进入本机)、OUTPUT
(本机发出)、FORWARD
(转发流量),确保规则应用于正确链。系统日志会记录iptables拦截或错误信息,是排查故障的关键依据:
tail -f /var/log/syslog
实时查看最新日志(含iptables拦截记录,如DROP
动作);dmesg | grep iptables
查看内核层iptables相关日志(如规则加载失败);journalctl -u iptables
(若systemd管理)查看iptables服务详细日志。通过工具测试网络连通性,确认规则是否符合预期:
ping <目标IP>
测试网络是否可达(若被拦截,需放行ICMP或调整规则);telnet <目标IP> <端口>
或nc -zv <目标IP> <端口>
测试端口是否开放(如nc -zv example.com 80
);tcpdump -i eth0 port 22
抓取指定端口(如SSH)的数据包,查看是否被iptables拦截(如DROP
动作)。Debian系统重启后,默认会丢失iptables规则,需确保规则持久化:
iptables-save > /etc/iptables/rules.v4
(或/etc/iptables/rules
)保存当前规则;iptables-persistent
包(sudo apt-get install iptables-persistent
),安装时会提示是否保存当前规则,选择“是”即可;或手动创建自启动脚本(/etc/network/if-pre-up.d/iptables
),内容如下:#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
赋予执行权限(sudo chmod +x /etc/network/if-pre-up.d/iptables
)。iptables -A INPUT -p tcp --dport 22 -j ACCEPT
,并允许已建立的连接iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
;echo 1 > /proc/sys/net/ipv4/ip_forward
)及DNAT规则(如iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
);iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 5/s -j ACCEPT
),记录超限请求(iptables -A INPUT -p icmp -j LOG --log-prefix "ICMP_Attack: "
),丢弃过量请求(iptables -A INPUT -p icmp -j DROP
)。通过以上步骤,可系统排查Debian iptables故障。操作前建议备份当前规则(iptables-save > ~/iptables_backup.v4
),避免误操作导致网络中断。