在腾讯云 CVM 上限制特定 IP 访问,优先建议在控制台配置安全组,其次才是实例内部开启 UFW 防火墙,两者配合使用能提供更细粒度的控制,但务必先放行 SSH 端口以防失联。
先说结论:安全组是网络边界的第一道防线,UFW 是系统内部的补充,配置顺序错误会导致无法远程连接。
- 先判断:确认是否需要主机层防火墙,多数场景安全组已足够。
- 优先做:在 UFW 启用前,务必先执行允许 SSH 连接的规则。
- 再验证:开启防火墙后,立即新开一个终端窗口测试 SSH 连接是否存活。
命令速用版
如果你已确认需要操作 UFW,以下是限制特定 IP 的核心命令,请在确保 SSH 安全的前提下执行:
ufw allow 22/tcp ufw deny from 192.168.1.1 ufw enable
为什么会这样
腾讯云 CVM 的网络流量会先经过云平台的安全组,再进入操作系统内部。安全组属于分布式防火墙,性能损耗更低且配置生效快;UFW 则是基于 iptables/nftables 的主机防火墙。如果在 UFW 中误封了当前登录 IP 且未预留放行规则,会导致连接立即中断,且无法通过控制台 VNC 以外的方式恢复。
分步处理
1. 检查安全组规则
登录腾讯云控制台,进入云服务器实例详情页,查看“安全组”配置。确保入站规则中已放行 TCP 22 端口(SSH)或你使用的远程管理端口。如果这里没开,内部防火墙配置再好也无法连接。
2. 安装并检查 UFW 状态
Ubuntu/Debian 系统通常预装 UFW,CentOS 默认使用 firewalld。确认安装:ufw version
查看当前状态:ufw status
3. 设置默认策略与白名单
建议先设置默认拒绝入站,但必须先添加允许规则。ufw default deny incomingufw allow 22/tcp
注意:如果你修改了 SSH 端口,请对应修改端口号。
4. 封禁特定 IP
针对需要限制的 IP 执行:ufw deny from 1.2.3.4
如果是封禁整个网段:ufw deny from 1.2.3.0/24
5. 启用防火墙
确认规则无误后启用:ufw enable
系统会提示可能导致 SSH 中断,确认已放行 22 端口后输入 y。
怎么验证是否生效
1. 查看状态
执行 ufw status verbose,确认 Status 为 active,且能看到具体的 deny/allow 规则列表。
2. 外部测试
找一台未被封禁的机器测试 SSH 连接是否正常。再尝试用被封禁 IP 的机器发起连接(如 telnet 或 ping),观察是否超时或被拒绝。
3. 日志检查
UFW 日志通常位于 /var/log/ufw.log 或 /var/log/syslog,可查看是否有被阻挡的记录。
常见坑
1. 把自己关在门外
最常见错误是启用 UFW 前忘记 allow 22 端口。一旦启用,当前 SSH 会话可能不会立即断开,但重连会失败。务必保留一个已登录的会话窗口用于应急。
2. 安全组与 UFW 冲突
如果安全组拒绝了某个 IP,UFW 根本收不到这个包,日志里也不会有记录。排查问题时需同时检查控制台安全组。
3. IPv6 问题
默认情况下 UFW 可能只配置了 IPv4 规则。如果服务器启用了 IPv6,需确保 /etc/default/ufw 中 IPV6=yes,否则 IPv6 流量可能不受控。