温馨提示×

ubuntu iptables如何设置白名单

小樊
33
2026-09-16 02:07:43
栏目: 智能运维

在 Ubuntu 上使用 iptables 设置白名单(只允许特定 IP/网段访问,其余拒绝),一般按下面的思路来做:先允许可信 IP,再拒绝其他所有流量


一、基本白名单思路(推荐)

1. 清空现有规则(谨慎操作)

iptables -F
iptables -X

2. 设置默认策略为 DROP(关键)

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

⚠️ 如果是远程服务器,一定要先允许自己的 IP,否则会断连


3. 允许本地回环

iptables -A INPUT -i lo -j ACCEPT

4. 允许已建立连接(非常重要)

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

5. 添加白名单 IP(示例)

# 允许单个 IP
iptables -A INPUT -s 1.2.3.4 -j ACCEPT

# 允许一个网段
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

6. 可选:只允许特定端口(如 SSH)

iptables -A INPUT -s 1.2.3.4 -p tcp --dport 22 -j ACCEPT

7. 最后拒绝其他(默认已 DROP,可不写)

iptables -A INPUT -j DROP

二、查看与保存规则

查看规则

iptables -L -n -v

保存规则(Ubuntu)

# Ubuntu 18.04+
apt install iptables-persistent
netfilter-persistent save

或手动:

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

三、只限制某个端口的白名单(不影响其他服务)

iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

四、常见错误提醒

❌ 先 DROP 再允许自己 IP(会断网)
❌ 忘了 ESTABLISHED 规则(访问异常)
❌ 没保存规则(重启失效)


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

  • 服务器还是本地机
  • 要限制 所有端口还是某个端口(如 22 / 80)
  • IPv4 还是 IPv6

我可以给你一份可直接用的完整规则脚本

0