腾讯云服务器的腾讯网关端口,说白了就是云服安全组和系统防火墙两道锁。你只开一道,器网关另一道没动,端口打开端口照样不通。腾讯我见过太多人改完安全组就以为完事了,云服结果 telnet 半天连不上,器网关最后发现 iptables 里还拦着。端口打开
先讲安全组。腾讯登录腾讯云控制台,云服进云服务器实例列表,器网关点进你要操作的端口打开那台机器。左侧菜单找“安全组”,腾讯点进去会看到当前绑定的云服规则。入站规则里一般默认只开了 22 和 3389,器网关其他端口全封。你要开哪个端口,就加一条入站规则:协议选 TCP,端口写具体数字比如 8080,来源填 0.0.0.0/0 表示允许所有 IP 访问。生产环境别这么干,最好指定自己的办公 IP。出站规则默认全通,一般不用动。
安全组改完立刻生效,不用重启。但这时候你去连,大概率还是连不上。因为服务器操作系统里还有一层防火墙。以 CentOS 7 为例,默认用的是 firewalld。执行 firewall-cmd --list-ports 看看当前开了哪些端口。如果没有你要的,就加:firewall-cmd --zone=public --add-port=8080/tcp --permanent,然后 firewall-cmd --reload 重载。注意 --permanent 这个参数,不加的话重启就没了。
Ubuntu 系统通常用 ufw。查看状态 ufw status,如果显示 inactive,说明防火墙没开,那就不用管了。如果开着,直接 ufw allow 8080/tcp 就完事。有些老系统或者手动装过 iptables 的,规则写在 /etc/sysconfig/iptables 里,改完要 service iptables restart。这个坑最深,因为 iptables 规则默认是拒绝所有,你加一条 ACCEPT 之前得先确认有没有其他规则冲突。
还有一种情况:你端口开了,防火墙也放了,但服务本身没监听在 0.0.0.0 上。比如 Node.js 默认监听 127.0.0.1,外部根本访问不到。这时候要改应用配置,让它绑定 0.0.0.0。用 netstat -tlnp | grep 8080 看监听地址,如果显示 127.0.0.1:8080 而不是 0.0.0.0:8080,那就是应用配置问题,跟网关和防火墙无关。
腾讯云还有种情况是用了负载均衡或者 NAT 网关。流量先到 LB,再到后端服务器。这时候安全组要同时检查 LB 所在的安全组和后端服务器的安全组。我遇到过有人在后端服务器安全组开了端口,但 LB 的安全组没开,流量在 LB 那一层就被丢了。查这个问题要看 LB 的监听器配置,跟云服务器安全组是两码事。
最后说个快速排查顺序:先用 telnet 公网IP 端口 从外部测,不通就查安全组;安全组没问题就登服务器用 ss -tlnp 看服务监听状态;监听正常但外部不通,查系统防火墙;防火墙也放行了还不通,检查是不是走了 LB 或 NAT,以及路由表有没有问题。这一套下来基本能定位到具体哪一层卡住了。
端口开放这事没有一键搞定的说法,云平台和操作系统各管各的。养成习惯:改完安全组顺手查一下系统防火墙,能省很多来回折腾的时间。