在 Debian 上用 iptables 设置规则,一般流程是:安装 iptables → 写规则 → 保存规则 → 设置开机生效。下面按常见实用场景说明。
sudo apt update
sudo apt install iptables
查看版本:
iptables -V
表(table):
filter(默认,防火墙)
nat(端口映射、共享上网)
链(chain):
INPUT 进入本机的数据包
OUTPUT 本机发出的数据包
FORWARD 转发的数据包
示例:
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
含义:
-A INPUT:追加到 INPUT 链-p tcp:TCP 协议--dport 22:目标端口 22-j ACCEPT:允许iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
⚠️ 顺序很重要:先允许,再 DROP
iptables -L -n --line-numbers
iptables -D INPUT 3
iptables -F
iptables -X
Debian 默认 重启会丢规则
sudo apt install iptables-persistent
保存规则:
sudo netfilter-persistent save
开机自动加载 ✅
保存:
iptables-save > /etc/iptables.rules
恢复:
iptables-restore < /etc/iptables.rules
echo 1 > /proc/sys/net/ipv4/ip_forward
永久生效:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 8080 \
-j DNAT --to-destination 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
✅ 用 nftables(Debian 新版本默认)
✅ 或至少用 ufw(更简单)
apt install ufw
ufw allow 22
ufw enable
如果你愿意,可以告诉我:
我可以直接帮你写一套完整可复制的规则。