在 Debian 上用 iptables 设置白名单,核心思路是:
默认拒绝所有流量,只允许指定 IP/端口/协议通过。下面按常见场景给你完整示例。
1.2.3.4 和 5.6.7.8 访问本机# 1. 允许回环
iptables -A INPUT -i lo -j ACCEPT
# 2. 允许已建立连接(必须)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 3. 白名单 IP
iptables -A INPUT -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -s 5.6.7.8 -j ACCEPT
# 4. 其他一律拒绝
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
✅ 这样只有白名单 IP 能访问你
✅ 你访问外面不受影响
iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 5.6.7.8 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
⚠️ 注意顺序:允许在前,拒绝在后
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 \
-s 1.2.3.4 -j ACCEPT
iptables -P INPUT DROP
sleep 300
iptables -P INPUT ACCEPT
apt install iptables-persistent
netfilter-persistent save
iptables-save > /etc/iptables/rules.v4
iptables -L -n --line-number
iptables -F
iptables -X
iptables -P INPUT ACCEPT
❌ 没加 ESTABLISHED,RELATED → 自己被踢
❌ 默认 DROP 放最前面 → 所有连接断开
❌ 忘了保存规则 → 重启失效
你可以直接告诉我:
我可以给你一份 可直接复制执行的完整脚本。