1、云服务商的安全组(防火墙)
2、云主机操作系统自带的防火墙
下面我将以阿里云和腾讯云为例,详细说明整个流程,并附上通用原理和排查方法。
开通云主机端口的完整流程,可以用下面这张图来清晰地理解,它涉及云平台和操作系统两层防火墙:
flowchart TD A[用户访问云主机公网IP] --> B[请求到达云平台安全组] B -- “安全组规则允许” --> C[请求到达云主机操作系统] C -- “系统防火墙规则允许” --> D[成功访问目标服务] B -- “安全组规则拒绝” --> E[访问被拒绝<br>(Connection timed out)] C -- “系统防火墙规则拒绝” --> F[访问被拒绝<br>(Connection refused)]
安全组是云服务商提供的虚拟防火墙,用于控制进出云主机的流量。这是必须配置的第一步。
1、登录云服务商管理控制台。
2、 找到你的云主机实例,并进入其安全组 配置页面。
3、添加入方向规则,要开通端口,主要就是配置“入方向”规则。
关键规则参数:
授权策略允许
协议类型根据你的服务选择(TCP, UDP, ICMP)。
端口范围
单个端口80
端口范围8000-8080
所有端口1/65535
或-1/-1
(极度不推荐,非常危险)
授权对象(源)
0.0.0.0/0
表示允许所有IPv4地址访问。(谨慎使用)
::/0
表示允许所有IPv6地址访问。
192.168.1.100/32
表示只允许特定的IP地址访问。(推荐,更安全)
你的办公网络IP/32
表示只允许你自己访问。(对于SSH、RDP等管理端口尤其推荐)
优先级数字越小,优先级越高,通常保持默认即可。
1. 阿里云
1、 登录阿里云控制台,进入弹性计算 ECS。
2、 找到你的实例,在实例详情页面,点击安全组 标签页。
3、 点击配置规则。
4、 在入方向 标签页,点击手动添加。
5、 填写规则,例如开通HTTP服务的80端口:
规则自定义TCP
端口范围80/80
授权对象0.0.0.0/0
描述HTTP服务
6、 点击保存。
2. 腾讯云
1、 登录腾讯云控制台,进入云服务器 CVM。
2、 找到你的实例,点击实例ID进入详情页。
3、 在安全组 标签页,点击关联的安全组ID。
4、 进入安全组规则页面,点击入站规则 ->添加规则。
5、 填写规则,例如开通SSH服务的22端口(仅允许你的IP):
类型自定义
来源你的IP地址/32
,例如123.123.123.123/32
协议端口TCP:22
策略允许
备注SSH管理
6、 点击完成。
即使安全组允许了流量,云主机操作系统自身的防火墙也可能阻止它,你需要根据操作系统类型进行配置。
1. Linux 系统(以 CentOS 7+ / Ubuntu 使用firewalld
为例)
检查防火墙状态:
sudo systemctl status firewalld
如果firewalld
正在运行,你需要开放对应端口:
永久开放端口(例如80端口):
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
重新加载防火墙使配置生效:
sudo firewall-cmd --reload
验证端口是否开放:
sudo firewall-cmd --list-ports
如果使用iptables
(较老系统):
开放端口 sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT 保存配置(CentOS) sudo service iptables save 或者(Ubuntu) sudo netfilter-persistent save
Windows 使用Windows Defender 防火墙。
1、 打开控制面板 ->系统和安全 ->Windows Defender 防火墙。
2、 点击高级设置。
3、 在左侧选择入站规则,然后在右侧点击新建规则...。
4、 选择端口,点击下一步。
5、 选择TCP 或UDP,并输入特定本地端口,如80
,点击下一步。
6、 选择允许连接,点击下一步。
7、 选择何时应用该规则(域、专用、公用),通常全选,点击下一步。
8、 为规则起一个名字,例如My Web Service
,点击完成。
确保你主机上运行的服务程序正在正确监听你开放的端口。
在云主机上检查端口监听状态:
Linux:
netstat -tunlp | grep :80 或者使用 ss 命令 ss -tunlp | grep :80
如果输出显示有进程在监听0.0.0.0:80
或:::80
,说明服务监听正常。
Windows:
netstat -ano | findstr :80
如果这里没有输出,说明你的Web服务器(如Nginx、Apache)或应用程序可能没有启动,或者配置成了监听其他端口。
按照下图所示的完整流程,你可以系统地开通端口并排查问题:
flowchart TD A[开始开通端口] --> B{端口已通?<br>使用 telnet 或 tcping 测试} B -- 通 --> C[成功] B -- 不通 --> D[检查云平台安全组规则] D -- 规则正确 --> E[检查系统防火墙规则] D -- “规则错误<br>或缺失” --> F[添加入站规则] E -- 规则正确 --> G[检查应用服务状态] E -- “规则错误<br>或缺失” --> H[开放对应端口] G -- “服务未运行<br>或未监听” --> I[启动服务或<br>更改监听配置] G -- 服务正常 --> J[检查网络ACL等其他设置] F & H & I --> K[重新测试] K --> B J --> B
当端口不通时,请遵循以下排查路径:
1、从外网测试端口:
telnet <你的公网IP> <端口号> # telnet 不可用,可以使用 tcping 工具(Windows/Linux均有)
2、常见错误与对应环节:
Connection timed out 通常是安全组 没有配置正确,流量在云平台层就被丢弃了,请返回第一步仔细检查。
Connection refused 通常是系统防火墙 阻止了流量,或者服务本身没有运行/没有监听该端口,请检查第二和第三步。
3、检查顺序:务必按照安全组 -> 系统防火墙 -> 服务状态 的顺序进行排查,这是最高效的方法。
按照以上步骤操作,你就能系统地开通并排查云主机的端口问题了,记住安全第一,尽量只开放必要的端口,并对管理端口(如SSH的22,RDP的3389)进行IP源限制。
文章摘自:https://idc.huochengrm.cn/zj/17048.html
评论