ufw:面向新手的简化管理

ufw(Uncomplicated Firewall)是对 iptables/nftables 的简化封装,适合快速配置基础规则。

sudo apt install ufw

# 默认策略:拒绝入站,允许出站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 放行必要端口
sudo ufw allow 22022/tcp   # SSH(对应自定义端口)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 限制某端口的来源 IP 段
sudo ufw allow from 192.168.1.0/24 to any port 8000

sudo ufw enable
sudo ufw status verbose

nftables:更细粒度的现代方案

nftables 是 iptables 的继任者,语法更统一,规则集也更易维护。

sudo apt install nftables
# /etc/nftables.conf
table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;

    ct state established,related accept
    iif lo accept

    tcp dport 22022 accept
    tcp dport { 80, 443 } accept

    # 限制单 IP 新建连接速率,缓解简单的连接洪泛
    tcp dport 22022 ct state new limit rate 10/minute accept
  }

  chain forward {
    type filter hook forward priority 0; policy drop;
  }

  chain output {
    type filter hook output priority 0; policy accept;
  }
}
sudo nft -f /etc/nftables.conf
sudo systemctl enable --now nftables

场景示例:仅内网可访问的 AI 推理服务

将 vLLM 等服务监听在内网接口,或通过防火墙限制外部访问:

sudo ufw allow from 10.0.0.0/8 to any port 8000
sudo ufw deny 8000

规则顺序在 ufw 中很重要,更具体的规则应放在通用拒绝规则之前生效。

验证规则是否生效

sudo ufw status numbered
sudo nft list ruleset

小结

对于单机小型部署,ufw 已经足够;如果需要更复杂的流量整形、NAT 或多接口策略,建议直接使用 nftables 原生语法以获得更好的可维护性。