用 UFW IP 白名单防止邻居扫端口
你租了一台 VPS,用的是共享网段(比如 /24 或 /20)。同一网段里可能住着几十甚至几百台其他人的机器。这些"邻居"天然能访问你的 443、80 等端口,更坏的情况是——他们还能把你的 IP 当出口用来偷流量。
本文用两条 ufw insert 规则,以最小代价解决这个问题。
原理:UFW 规则的优先级
UFW 的规则按插入顺序从上到下逐条匹配,第一条命中的规则即生效,后续规则不再执行。
ufw insert N 把规则插入到第 N 位,把原来第 N 位及之后的规则往后挤。所以:
insert 1 → 排最前,最先匹配
insert 2 → 紧跟其后
我们要实现的逻辑是:
先放行自己,再拒绝整个邻居网段。

第一步:确认你的 IP 和所在网段
curl -4 ip.sb假设返回 1.2.3.45,那么你的 IP 是 1.2.3.45,所在的 /24 网段是 1.2.3.0/24。
如果你不确定 VPS 分配的子网掩码,可以查看服务商后台,或者运行:
ip addr show找到你的公网网卡,注意 inet 后面的 / 后面的数字就是掩码位数(常见是 24、20、22)。
第二步:执行这两条规则
# 规则1:最高优先,放行自己的 IP
sudo ufw insert 1 allow from 1.2.3.45
# 规则2:第二优先,拒绝整个邻居网段
sudo ufw insert 2 deny from 1.2.3.0/24将 1.2.3.45 换成你自己的公网 IP,将 1.2.3.0/24 换成你实际所在的网段。
第三步:验证规则顺序
sudo ufw status numbered正确的输出应该类似:
Status: active
To Action From
-- ------ ----
[ 1] Anywhere ALLOW IN 1.2.3.45
[ 2] Anywhere DENY IN 1.2.3.0/24
...(你原有的其他规则)规则 1 在规则 2 之前 ✅,逻辑才正确。如果顺序反了(deny 跑到第 1 位),你的 IP 也会被一起封掉,立刻断线。
第四步:测试是否生效
从另一台同网段机器(或者让人帮你用同 ISP 的机器)尝试访问你的 443 端口:
curl -v --max-time 5 https://你的IP
# 或者
nc -zv 你的IP 443正常情况下,同网段的请求会被直接 DENY,连接超时或立即 Reset,不会有任何响应。
从你自己的 IP 访问(比如本机 curl,或者你家的出口 IP)应该正常返回。
常见问题
Q:这两条规则会影响 VPS 出站流量吗?
不会。ufw insert 默认作用于 INPUT 链(入站),不影响出站(FORWARD / OUTPUT)。
Q:我现在的 ufw 没开,能直接用吗?
先确认 ufw 已启用,且已经有放行 SSH 的规则,再添加这两条,顺序很重要:
# 确保 SSH 先放行,别把自己锁外面
sudo ufw allow 22/tcp
sudo ufw enable
# 再插入这两条
sudo ufw insert 1 allow from 你的IP
sudo ufw insert 2 deny from 你的网段/24Q:网段怎么算?
IP a.b.c.d,掩码 /24 → 网段是 a.b.c.0/24,把最后一段换成 0 即可。 掩码是 /20 的话需要算一下,可以用这个工具快速换算:cidr.xyz
小结
引用:brewing834