温馨提示×

ubuntu iptables怎么禁外网

小樊
61
2026-10-06 21:29:51
栏目: 智能运维

在 Ubuntu 上用 iptables 禁止“外网”(即只允许内网/本地,拒绝公网访问),通常思路是:默认拒绝转发和出站,只放行本地和私有网段。

下面按常见场景说明。


一、只禁止服务器主动访问外网(出站外网)

适合:服务器可以被访问,但不能主动连外网。

# 清空原有规则(谨慎)
iptables -F
iptables -X

# 默认策略
iptables -P INPUT ACCEPT
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# 允许回环
iptables -A OUTPUT -o lo -j ACCEPT

# 允许内网(示例 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12)
iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -d 172.16.0.0/12 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/16 -j ACCEPT

# 允许 DNS(如内网 DNS)
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

这样服务器不能访问公网 IP,但能访问内网。


二、禁止外网访问本机(入站外网)

适合:只允许内网连,公网不能连。

iptables -P INPUT DROP

# 允许本地
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许内网
iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -s 172.16.0.0/12 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT

三、完全断外网(最严格)

服务器只能自己玩:

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

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

四、Ubuntu 持久化(很重要)

iptables 重启会丢,需要保存:

Ubuntu 18.04+

apt install iptables-persistent
netfilter-persistent save

或手动:

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

五、注意事项

  • 如果是 云服务器,安全组也要配合
  • 误封 SSH 会断连,建议先开会话再操作
  • 新 Ubuntu 可能用 nftables,可用:
    update-alternatives --config iptables
    

如果你能说清楚:

  • 是 禁入站还是出站
  • 是否有 内网 IP 段
  • 是否是 Docker / 云服务器

我可以给你更精确的规则。

0 踩