轻量应用服务器防火墙和云安全组:端口不通到底该查哪一层

轻量应用服务器防火墙和云安全组:端口不通到底该查哪一层

正文

「端口我在防火墙里放行了,为什么还是连不上?」——这是我接排障电话时出现频率最高的一句话,十有八九是对方只改了轻量应用服务器防火墙,却漏了背后那一层云安全组,或者正好反过来。轻量应用服务器防火墙从来不是孤立存在的一道门,它和云安全组是串联关系,任何一层没放行,流量都到不了你的服务。下面我按一线排障的真实顺序,把两层规则谁在前、端口不通怎么查、SSH 被锁怎么救、常用端口怎么放,一次讲透。

谁在前:轻量防火墙与云安全组的层级差异

先把模型立起来,后面的排查才不会乱。一次公网请求要进到你的业务进程,通常要穿过四道关卡,顺序不能颠倒:

第一层是 VPC 网络层,也就是云安全组。安全组是绑定在网络接口上的虚拟防火墙,作用于云服务器 CVM(行业里常叫 ECS)以及加入 VPC 的实例,规则按入站、出站两个方向,用协议、端口、源地址、策略(允许或拒绝)来描述。它最关键的特性是有状态:只要你放行了入站,同一条连接返回的流量会被自动放行,不用再配出站。

第二层才是实例层的轻量应用服务器防火墙。Lighthouse 的这套防火墙设计得更"傻瓜",在控制台防火墙页签里,按应用类型(SSH、HTTP、HTTPS、Ping)或自定义端口加规则,来源填 0.0.0.0/0 就是对全网开放。对单机建站、个人博客、测试环境来说,这套够用了。

这里就是最大的认知误区:轻量应用服务器防火墙和云安全组不是二选一,而是先后串联。 当你的轻量实例接入 VPC、需要和同账号的 CVM 走内网互通,或实例本身处于被安全组覆盖的网络环境时,流量会先被安全组筛一遍,再被轻量防火墙筛一遍,两层都放行才通,缺一不可。这也是为什么"我在防火墙加了 8080 却还是打不开"——因为上一层的安全组没放行。

再补两个容易忽略的默认行为。云安全组的入站规则通常是白名单逻辑:没有显式放行的端口默认拒绝,所以"什么都没配"等于"全都进不来";而出站方向一般默认全部放行,这也是为什么很多实例能正常下载软件、却从外面连不进来。轻量防火墙则通常自带几条放行常见端口的默认规则,比如 22、80、443、ICMP,新手往往正是靠这几条默认规则把站点跑起来,等自己删改时又忘了它们的存在。理解了"默认拒绝、显式放行"这个前提,排查时你就能明白:通,一定是有某层规则放行了;不通,一定是某一层缺少对应规则。

第三层是系统内防火墙,也就是实例里的 iptables、firewalld 或 ufw。云平台的两层规则放行的是"到网卡"的流量,而系统防火墙会再挡一道。云镜像默认多为关闭或宽松策略,但有些第三方镜像会自带严格规则。

第四层是应用监听本身。如果服务只监听了 127.0.0.1 而不是 0.0.0.0,那前三层全开也没用,这一层用 ss -lntp 一看便知。

四层的关系可以这样记:安全组和轻量防火墙决定"包能不能到这台机器的网卡",系统防火墙决定"能不能进到操作系统",应用监听决定"有没有人在门口接"。端口不通,本质是这四层里至少有一层没放行。

端口连通性排查顺序:从最内层往外收敛

真实排障我不建议从外往里猜,而是先确认"服务在不在",再一层层往外查,这样最快定位。顺序如下:

第一步,确认实例状态和地址。看控制台上实例是否"运行中",公网 IP 有没有变(轻量重启后 IP 一般不变,但换机、退订重购会变)。顺便确认你连的是公网 IP 还是内网 IP——用内网 IP 从公网访问,本来就不通。

第二步,确认应用有没有在听。登进系统执行 ss -lntp | grep 端口号,如果什么都没输出,说明服务根本没起来或没监听对端口;如果显示的是 127.0.0.1:端口,说明只监听了本地。这一步能把"防火墙问题"和"服务问题"直接分开。

第三步,查系统防火墙。CentOS 系看 firewall-cmd --list-all,Debian 系看 ufw status,老系统直接 iptables -L -n --line-numbers。看到 DROP、REJECT 就要警觉,规则顺序也要看,因为 iptables 是从上往下匹配。

第四步,查轻量防火墙。进控制台防火墙页签,确认目标端口或对应应用类型有没有放行,来源有没有被你收窄成某个固定 IP。这一步是最容易发现"规则被误删"的地方。

第五步,查云安全组。如果实例在 VPC 里或与其他云资源互通,查看绑定的安全组入站规则,确认协议、端口、来源三要素都对得上。安全组支持引用另一个安全组、也支持网段,别配成只放行自己的办公 IP,却在手机上测。

第六步,从外部验证。用 telnet 公网IP 端口 或 nc -zv 公网IP 端口 测端口,用 curl -v http://公网IP 测 HTTP。Connection refused 通常是服务没监听或被系统防火墙拒绝,Connection timed out 多半是云安全组或轻量防火墙直接丢了包。这两个报错的差别,是判断"挡在哪一层"的关键线索。

再补一个小技巧:如果连不上、又不确定是哪一层的问题,可以先在服务器本机执行 curl -v http://127.0.0.1:端口。本机回环能通、外网不通,基本可以锁定是云平台两层规则或系统防火墙的问题;本机都不通,那就是服务本身没起来,跟防火墙没关系。另外,域名解析和 SSL 证书这些和端口连通性无关,证书没配好只会报 HTTPS 错误,不会导致整条连接超时,别把两类问题混在一起查。

把这六步走完,绝大多数端口问题都能定位。记住结论:连通性排查永远从应用层往网络层收敛,而不是反过来瞎改规则。

常用端口清单:该放哪一层、来源怎么填

下面这张清单是我日常给客户配规则时的默认参考。注意一个原则——除了必须对公网开放的服务,其余端口一律只放行你自己的固定 IP,不要图省事填 0.0.0.0/0。

端口 协议与服务 典型用途 建议放行层与来源

22 TCP / SSH 远程登录运维 轻量防火墙与安全组都放,来源限固定 IP

80 TCP / HTTP 网站明文访问 两层都放,来源 0.0.0.0/0

443 TCP / HTTPS 网站加密访问 两层都放,来源 0.0.0.0/0

3306 TCP / MySQL 数据库服务 只放内网或白名单 IP,禁止对公网

6379 TCP / Redis 缓存服务 只放内网,务必设置访问密码

3389 TCP / RDP Windows 远程桌面 尽量改端口并限制来源 IP

8080 TCP / 自定义 测试站、管理面板 按需临时放行,用完即关

这里补一句经验:我见过太多人把 3306、6379、3389 直接对 0.0.0.0/0 开放,几天后就被扫描器盯上,数据库被写勒索表、服务器被爆破登录。云安全组和轻量防火墙都能把来源精确到一个 IP 或一个网段,开放范围每多一分,被攻击的概率就多一分。

SSH 被锁了怎么补救:先回到系统,再修规则

最让人手心冒汗的场景,是改规则时手一抖把 22 端口规则删了,或者把来源改成了一个自己并不在的网段,结果 SSH 直接连不上,人在外面干着急。这种情况分两种处理。

能进系统的补救最轻松。轻量控制台提供"登录"按钮,本质是通过 VNC 管理终端连进操作系统,不依赖 22 端口。进去后先确认 ss -lntp | grep 22 服务在听,再用 firewall-cmd 或 iptables 检查系统层规则,然后回到控制台把 22 端口的防火墙规则补回来。VNC 管理终端是改网络规则前的"备用钥匙",先确认它一定能进。

如果密码也忘了,控制台支持重置实例密码,重置后从 VNC 或 SSH 重新登录,不影响系统盘数据。要是连 VNC 都无法进入(比如系统盘满了、启动阶段就崩了),还能用快照回滚到改规则之前的状态——这也是为什么我给客户做变更前,都会先给数据盘和系统盘各打一个快照。

至于"把 SSH 端口从 22 改成别的更安全",我的看法是:改端口只能躲开无脑扫描,躲不过定向扫描,真正的安全来自密钥登录、禁用密码、限制来源 IP 和登录失败锁定。想彻底避免被自己锁在外面,最稳的做法是长期保留一个不依赖公网 22 端口的登录通道,比如控制台 VNC,或者先配好密钥再动规则。还得提醒一句内网端口暴露的风险:很多人图方便,把只该内网访问的服务直接通过公网端口对外映射,比如让数据库走公网 3306。正确做法是用 VPC 内网互通或用跳板机,把该锁在内网的端口牢牢锁住,连 22 都只对固定的运维 IP 开放。我自己维护的实例,公网上是看不到 3306、6379 的,心里踏实得多。你要是拿不准规则怎么配,找熟悉腾讯云账户开通和轻量运维的服务商帮你把最小放行策略定下来,比自己反复试错安全得多。

FAQ

Q:轻量应用服务器防火墙放行了端口,云安全组还要再放一遍吗?

A:要。两层是串联的,取决于实例所处的网络环境。只要实例加入 VPC 或与其他云资源互通,安全组就会参与过滤,两层都放行才能通。

Q:为什么 telnet 报 Connection refused,而不是超时?

A:refused 通常是包已经到了主机,但对应端口没有进程监听,或被系统防火墙拒绝;timeout 多是云安全组或轻量防火墙直接把包丢了。根据报错类型能快速判断挡在哪一层。

Q:把 SSH 端口从 22 改掉,是不是就安全了?

A:只改端口作用有限,能躲开批量扫描但挡不住定向扫描。更有效的是关闭密码登录、改用密钥、限制来源 IP,并开启登录失败锁定。

Q:数据库端口能不能直接对公网开放?

A:不建议。3306、6379 这类端口一旦对 0.0.0.0/0 开放,极易被自动化脚本爆破和写入。应只放行内网或固定白名单 IP,并设置强密码。

Q:我改了防火墙后自己连不上了,必须要重置系统吗?

A:不用。先用控制台 VNC 管理终端进系统修复规则,不要急着重置或重装。只有在系统本身无法启动时,才考虑快照回滚。

结语

端口不通这件事,说到底是对"层级"的理解问题:云安全组管网络层,轻量应用服务器防火墙管实例层,系统防火墙管操作系统层,应用监听管进程层,四层串起来,缺一层都不通。下次再遇到连不上的情况,别再乱改规则,按"先看端口有没有在听,再查系统防火墙,再查轻量防火墙,最后查安全组"的顺序走一遍,绝大多数问题五分钟内能定位。给三条立刻能做的建议:第一,把 22 端口的来源从 0.0.0.0/0 收窄到你自己的固定 IP;第二,除 80、443 外,其余端口默认不对公网开放;第三,每次改网络规则前,先确认控制台 VNC 能登进去,并给重要实例留一份快照。

如果需要更深入咨询了解可以联系全球代理上TG:jinniuge 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。不懂找他们就对了

3 .0