ufw启用基础过滤规则:先放行ssh(sudo ufw allow 22/tcp),再执行sudo ufw enable,此时默认拒绝所有入站、放行出站,规则自动排序且持久化生效。

用 ufw 快速启用基础网络过滤规则
绝大多数 Ubuntu 用户不需要直接碰 iptables,ufw 就是为此设计的——它本质是 iptables 的封装层,但规则语义清晰、状态自动管理。默认安装后未启用,运行 sudo ufw status verbose 会显示 Inactive。
启用前建议先允许 SSH(否则远程操作可能断连):sudo ufw allow OpenSSH 或 sudo ufw allow 22/tcp。然后执行 sudo ufw enable,此时所有入站连接默认被拒绝,出站放行。
- 规则按添加顺序匹配,但
ufw自动把allow放在deny前面,不用手动调序 -
ufw deny from 192.168.0.5和ufw deny to any port 22效果不同:前者阻断该 IP 所有协议入站,后者只封目标端口 22 的入站请求 - 删除规则不能只写
ufw delete deny from ...,必须用sudo ufw status numbered查编号再sudo ufw delete
用 dumpcap -f 在抓包时做轻量级流量过滤
dumpcap 的 -f 参数不是防火墙,而是 BPF 层的捕获过滤器(capture filter),它在内核收包路径上就丢弃不匹配的数据包,不进用户态、不占内存、不写磁盘。这和 Wireshark 里“显示过滤器”(display filter)完全不同——后者是抓完再筛,已消耗资源。
常见误用是写成 "http" 或 "dns",BPF 不识别应用层协议名,只认底层字段。正确写法:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- HTTP 流量 →
"tcp port 80"或"tcp port 443"(HTTPS) - 某台机器进出流量 →
"host 10.0.2.15"(注意不是src host或dst host,除非你明确只要单向) - 排除广播/多播 →
"not broadcast and not multicast" - 组合条件用
and/or,括号必须用反斜杠转义:"(tcp port 80) or (udp port 53)"
绕过 ufw 直接配 iptables 的真实场景
只有三类情况值得跳过 ufw:需要 PREROUTING/POSTROUTING 链(如端口转发)、要基于连接状态做精细控制(比如只允许 ESTABLISHED+RELATED 出站)、或集成第三方工具(如 Docker 启动时自动写规则)。这时必须理解规则链顺序和默认策略。
例如,想让本机作为网关转发流量,光开 ufw 不够:sudo iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE 这条必须手动加,且需开启内核 IP 转发(echo 1 > /proc/sys/net/ipv4/ip_forward 并写入 /etc/sysctl.conf)。
-
-A INPUT是追加到 INPUT 链末尾,若前面已有DROP规则,新加的allow永远不生效 - 临时规则重启即丢,要持久化得用
iptables-save > /etc/iptables/rules.v4(Ubuntu 22.04+ 默认支持) -
ufw启用后也会写自己的iptables规则,混用时用sudo iptables -L -v -n看实际生效顺序
别忽略 Netplan 配置里的路由级过滤线索
Netplan 本身不提供过滤能力,但它定义的接口、子网、路由直接影响哪些流量能到达本机——这是最前置的“过滤”。比如配置了 routes 但漏掉 on-link: true,某些直连子网的 ARP 请求根本不会发出,自然不会有后续过滤机会。
典型陷阱:addresses: [192.168.50.10/24] 写成 /32,导致本机认为该 IP 是孤点,不响应同子网其他主机的 ARP 请求,看起来像“防火墙拦了”,其实是路由没通。
- 修改
/etc/netplan/*.yaml后必须sudo netplan apply,仅 reload NetworkManager 不生效 - 如果用了
renderer: networkd,systemd-networkd日志(journalctl -u systemd-networkd)比ip a更早暴露配置语法错误 - 多网卡环境,
metric值决定默认路由优先级,值小的胜出;若两个接口 metric 相同,内核按字母序选,不是按配置顺序










