在 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
iptables 重启会丢,需要保存:
apt install iptables-persistent
netfilter-persistent save
或手动:
iptables-save > /etc/iptables/rules.v4
update-alternatives --config iptables
如果你能说清楚:
我可以给你更精确的规则。