阿里云主机怎么开放端口?

HCRM技术_小炮 云主机 2026-05-17 36 0

阿里云主机怎么开放端口?手把手教你搞定,别再被“连接不上”折磨了

你有没有遇到过这样的情况:好不容易在阿里云买了一台云服务器,兴致勃勃地装好了网站、数据库或者某个应用,结果发现从外网根本连不上?网页打不开,远程连接失败,数据库报错……折腾了半天,最后发现——哦,原来是端口没开。

别笑,这是绝大多数云服务器新手都会踩的坑,阿里云主机的端口开放,和你在自己电脑上直接搞开发完全是两码事,因为阿里云在服务器外面加了一层“安全组”防火墙,默认情况下,几乎所有的入站端口都是关闭的,你只有主动把需要的端口“放行”,外网才能访问到你的服务。

今天这篇文章,我就把阿里云主机开放端口的完整流程拆开揉碎了讲给你听,不管你用的是Linux(CentOS、Ubuntu)还是Windows,不管你是开80端口跑网站、开3306连数据库,还是开3389远程桌面,看完这一篇,你都能自己搞定。

第一步:搞清楚“开放端口”到底是在开什么

在动手之前,我们先理清一个概念:阿里云主机的端口开放,其实包含两层意思。

第一层,是云平台层面的“安全组”规则,安全组可以理解为阿里云数据中心门口的保安,所有进出的网络流量都要经过它的检查,默认情况下,保安只允许你通过SSH(22端口)或者远程桌面(3389端口)连入服务器,其他端口一律拦截,你要做的,就是告诉保安:“我要开放xxx端口,让外面的人能访问。”

第二层,是服务器操作系统内部的防火墙,即便阿里云的安全组放行了,如果服务器系统自己的防火墙(比如Linux的iptables、firewalld,Windows的防火墙)还拦着,流量依然进不来,你需要在系统内部也把对应的端口打开。

绝大多数教程只告诉你改安全组,忽略了系统防火墙,结果你折腾半天还是连不上,我们两个都要做,才能保证万无一失。

第二步:登录阿里云控制台,配置安全组规则

用你的账号登录阿里云官网,进入“云服务器ECS”管理控制台,在左侧菜单中找到“网络与安全”下面的“安全组”,点击进入。

你会看到当前实例所绑定的安全组,如果你没有专门创建过,通常有一个默认的安全组,点击这个安全组的“配置规则”按钮,然后选择“入方向”选项卡,这里显示的就是所有允许进入服务器的流量规则。

默认情况下,你看到的可能只有一条规则:允许所有IP(0.0.0.0/0)通过SSH(22端口)连接,我们手动添加新规则。

点击“手动添加”或者“添加规则”,会弹出配置弹窗,你需要填写的核心信息有以下几项:

授权策略:选择“允许”

协议类型:根据你的服务选择,比如HTTP选TCP,HTTPS选TCP,Ping选ICMP,大部分应用场景都是TCP。

端口范围:填写你要开放的端口,注意格式是“起始端口/结束端口”,比如只开放单个80端口,就填“80/80”,如果想开放一个范围,比如用于FTP的被动模式,可以填“20000/25000”。

优先级:一般保持默认1即可,数字越小优先级越高。

授权对象:这里填允许访问的IP地址或CIDR网段,如果你希望所有人都能访问(比如公网网站),就填“0.0.0.0/0”,如果只想让特定IP(比如你自己公司的固定公网IP)访问,就填那个IP加上掩码,123.123.123.123/32”,出于安全考虑,数据库端口(3306、5432等)一定要限制IP范围,不要开给全世界。

描述:随便写个备注,开放80端口给网站”,方便以后管理。

填好之后点击“保存”,规则几乎是秒级生效的,但别急,这一步做完只是完成了云平台层面的放行,系统防火墙可能还在挡着。

第三步:根据操作系统,开放系统防火墙

情况一:你的服务器是Linux(CentOS 7及以上,或Alibaba Cloud Linux)

大多数阿里云Linux实例默认使用的是firewalld服务,操作很简单。

先用SSH登录服务器,执行以下命令查看当前防火墙状态:

systemctl status firewalld

如果显示“active (running)”,说明防火墙在运行,接下来我们要永久开放某个端口,比如开放80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

这条命令中的--permanent表示永久生效,不加的话重启后会失效,然后重新加载防火墙配置:

firewall-cmd --reload

验证一下端口是否已经开放:

firewall-cmd --zone=public --list-ports

你会看到类似“80/tcp”的列表,说明成功了。

如果你用的是CentOS 6或者一些旧版本系统,它们用的是iptables,命令稍有不同,不过现在阿里云默认系统基本都支持firewalld,iptables的情况我就不展开了,如果你真的遇到,可以用以下方式快速放行:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save

情况二:你的服务器是Windows Server

Windows的防火墙配置同样需要你手动放开端口,登录远程桌面后,打开“控制面板” → “系统和安全” → “Windows Defender防火墙”,点击左侧的“高级设置”,在弹出的“高级安全Windows Defender防火墙”窗口中,找到“入站规则”。

在右侧操作栏点击“新建规则”,选择“端口”,然后下一步,选择“TCP”(或者UDP),在“特定本地端口”里输入你要开放的端口号,比如80,下一步,选择“允许连接”,下一步,勾选所有配置文件(域、专用、公用),最后给规则起个名字,开放80端口”,点击完成。

这样就搞定了,Windows防火墙规则也是立即生效的,不需要重启。

小技巧:如果你不确定系统防火墙是否影响,可以临时关闭防火墙测试一下(但生产环境不建议长期关闭),Linux下用systemctl stop firewalld,Windows下在服务里禁用,如果关闭后能连上,说明之前是防火墙的问题,再按上述步骤把规则加上再开启防火墙即可。

第四步:验证端口是否真的开放了

配置都做完后,怎么确认端口已经开放成功?最直接的方法,是你用另一台电脑或者手机,尝试访问这个端口。

验证方法一:浏览器访问(针对HTTP/HTTPS)

如果你开放的是80端口,直接在浏览器里输入http://你的服务器公网IP,如果能看到默认的Nginx欢迎页或者你部署的网站页面,说明端口开放成功了,如果显示“无法访问此网站”或连接超时,说明还有问题。

验证方法二:使用telnet命令

在任何一台有网络连接的电脑上,打开命令行(Windows的cmd或PowerShell,Mac/Linux的终端),执行:

telnet 你的公网IP 端口号

telnet 123.123.123.123 80

如果出现一个空白界面(或者光标闪烁),没有报错,说明连接成功,如果显示“无法打开到主机的连接”或“连接失败”,说明端口还没通。

注意:Windows 10/11默认可能没有安装telnet客户端,你可以通过“控制面板” → “程序和功能” → “启用或关闭Windows功能” → 勾选“Telnet客户端”来安装,或者用更简单的Test-NetConnection命令(仅PowerShell):

Test-NetConnection -ComputerName 你的公网IP -Port 端口号

会显示TcpTestSucceeded是否True。

验证方法三:在线端口扫描工具

如果你懒得在本地装命令,可以使用一些在线网站,站长工具”的端口扫描功能,输入你的服务器IP和端口,也能快速检测。

常见问题与避坑指南

Q1:安全组规则加了,系统防火墙也加了,但还是连不上?

首先检查一下你的服务本身有没有启动,比如你开了80端口,但Nginx或Apache还没装或者没启动,浏览器访问自然会失败,用netstat -anp | grep 80(Linux)或者netstat -ano | findstr 80(Windows)看看端口是否在监听,如果服务都没跑,端口开了也没用。

Q2:我开放了所有端口(0-65535),怎么还是连不上?

非常不建议这样做!开放的端口越多,服务器被攻击的风险越大,如果还是连不上,检查你的服务是否绑定了正确的IP地址,很多应用默认只监听127.0.0.1(本地回环地址),导致外网无法访问,你需要修改配置让服务监听0.0.0.0(所有网络接口),例如Nginx的配置文件中,listen 80;默认就是0.0.0.0,但某些应用如MySQL默认只监听127.0.0.1,需要改为0.0.0.0或者具体的私网IP。

Q3:我的服务器有多个私有IP,该开放哪个?

阿里云ECS实例通常有一个主私网IP,安全组规则是基于这个私网IP的,你不需要关心私网IP,只要安全组允许了端口,不论你用哪个私网IP(比如内网其他机器访问),都可以,外网访问时使用的是公网IP,阿里云会自动把公网流量映射到主私网IP上。

Q4:我想限制只让某个IP访问,但发现填了IP还是所有人能连?

检查你填写的授权对象格式是否正确,比如只允许192.168.1.1这个IP,应该写“192.168.1.1/32”,而不是“192.168.1.1”,安全组规则的优先级:如果有两条规则,一条允许所有IP,一条限制某个IP,那么实际生效的是优先级高的(数字小的),所以建议你删掉不必要的“0.0.0.0/0”规则,只保留你想要的限制规则。

Q5:为什么我开放了3306端口,但远程连接MySQL还是失败?

MySQL默认只允许本地连接,你需要登录到MySQL,修改user表中的host字段,把对应的用户从'localhost'改为'%',然后刷新权限,MySQL的配置文件(my.cnf或my.ini)中,bind-address这一行要么注释掉,要么改为0.0.0.0,做完这些之后,再配合安全组和系统防火墙放行3306,才能远程连接。

一张图记住流程

阿里云主机开放端口,本质上就是三步走:

1、云平台安全组:登录控制台,添加入方向规则,指定协议、端口和授权IP。

2、系统防火墙:登录服务器,根据操作系统(firewalld、iptables、Windows防火墙)开放对应端口。

3、服务自身:确保你的应用程序已经启动,并且监听在正确的IP和端口上。

每一步都不能少,很多新手只做了第一步,结果发现还是连不上,就开始怀疑人生,现在你知道了,问题很可能出在第二步或第三步。

最后提醒一句:端口开放是一把双刃剑,为了方便而把所有端口暴露在公网上,等于把家门钥匙挂在门外,尽量只开放必要的端口,并且对敏感服务(如数据库、SSH)限制来源IP,安全组规则要定期审视,把不再使用的端口及时关闭,这样,你才能在享受云服务器便利的同时,守住安全的底线。

好了,现在就去打开你的阿里云控制台,亲手试试吧,相信我,第一次成功开放端口、看到自己的服务被外网访问到的那一刻,你会觉得所有折腾都值了。

文章摘自:https://idc.huochengrm.cn/zj/25711.html

评论