温馨提示×

Debian怎么配置iptables

小樊
45
2026-07-15 09:08:41
栏目: 智能运维

下面给你一个Debian 下配置 iptables 的完整入门指南,从基础到常用规则,再到开机自动生效,适合服务器和桌面环境。


一、确认系统环境

1. 查看 Debian 版本

cat /etc/debian_version

2. 确认 iptables 是否已安装

iptables -V

如果没有安装:

sudo apt update
sudo apt install iptables

Debian 10+ 默认可能使用 nftables,但 iptables 命令仍然可用(作为兼容层)。


二、iptables 基本概念(快速理解)

iptables 有三张常用表:

用途
filter 过滤数据包(最常用)
nat 网络地址转换(NAT)
mangle 修改数据包

最常用的是 filter 表,默认三条链:

  • INPUT:进入本机的数据包
  • OUTPUT:本机发出的数据包
  • FORWARD:转发的数据包

三、基础规则配置示例

1. 查看当前规则

sudo iptables -L -n -v

2. 设置默认策略(强烈建议)

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

含义:

  • 入站:默认拒绝
  • 转发:默认拒绝
  • 出站:默认允许

3. 允许本地回环(必须)

sudo iptables -A INPUT -i lo -j ACCEPT

4. 允许已建立的和相关的连接

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

5. 允许 SSH(非常重要)

⚠️ 配置前一定要确认这条,否则可能断连

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

如果是非 22 端口:

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

6. 允许 HTTP / HTTPS

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

7. 允许 Ping(可选)

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

四、防止常见攻击(可选但推荐)

防止 SYN Flood

sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

防止 Ping Flood

sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

五、删除 / 插入规则

删除某条规则(按编号)

sudo iptables -L --line-numbers
sudo iptables -D INPUT 3

清空所有规则(慎用)

sudo iptables -F
sudo iptables -X

六、让 iptables 开机自动生效(非常重要)

Debian 不会自动保存 iptables,重启会丢失。

方法一:使用 iptables-persistent(推荐)

安装

sudo apt install iptables-persistent

保存规则

sudo netfilter-persistent save

重新加载

sudo netfilter-persistent reload

规则保存在:

/etc/iptables/rules.v4
/etc/iptables/rules.v6

方法二:手动保存 / 恢复(不推荐)

iptables-save > /etc/iptables.rules
iptables-restore < /etc/iptables.rules

七、IPv6(ip6tables)

如果你启用了 IPv6,也要配置:

sudo ip6tables -P INPUT DROP
sudo ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

八、常见完整示例(Web 服务器)

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

COMMIT

九、调试技巧

查看命中计数:

iptables -L -v -n

查看日志(如果配置了):

dmesg

十、建议

✅ 新手建议先用 ufw(Debian 也支持):

sudo apt install ufw
sudo ufw enable

但如果你需要精细控制,iptables 是标准方案


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

  • Debian 版本
  • 是服务器还是桌面
  • 是否需要 NAT / 端口转发 / Docker

我可以帮你直接写一套适合你环境的 iptables 规则

0