历史版本6 :端口占用检查与防火墙配置 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

概述编辑

问题描述

  • 部署运维平台报错:connection refused

报错语句:ERROR: 2022/05/18 17:33:07 finedb connect error:dial tcp 192.168.1.24:3306: connect: connection refused

  • 部署运维项目报错:Server IP try to bind ports failed!

报错语句:Server IP try to bind ports 9114,9100,9200,9080,9070 failed!

原因分析

待部署的运维平台组件/运维项目组件容器,需要占用一些端口。

如果这些端口已被占用/没有开放,则无法成功部署,会出现以上报错。

解决方案

请依次检查以下三者:

1)检查该端口是否被服务器中其他进程占用

  • 如果端口被占用,则需要更换一个未被占用的端口,再检查新端口的下两项。

  • 如果端口未被占用,则需要检查该端口的下两项。

2)检查服务器防火墙是否放行端口

  • 如果服务器防火墙未开启,建议开启。

  • 如果服务器防火墙开启,需要开放所需端口。

  • 如果端口已开放,请检查下一项。

3)如为云服务器,请检查服务器安全组是否放行端口

  • 云服务器安全组端口放行方式本文不作介绍,请联系你的云服务器厂商咨询。

检查端口占用情况编辑

本文提供多种方法检查Linux系统中的端口是否被其他进程占用。

需要注意的是,执行以下命令通常需要以root用户或具有足够权限的用户身份运行,以获取完整的进程信息。

使用netstat命令

命令语句

netstat -tuln | grep <端口号>

将 <端口号> 替换为您要检查的具体端口号

返回说明

这条命令将显示监听该端口的进程信息

如果有进程正在使用该端口,您将能够看到相关的输出

如果该端口未被占用,则无任何输出

示例

使用lsof命令

命令语

lsof -i :<端口号>

将 <端口号> 替换为您要检查的具体端口号

返回说明

这条命令将显示打开该端口的进程及其相关信息。

如果有进程正在使用该端口,您将能够看到相关的输出

如果该端口未被占用,则无任何输出

示例

检查防火墙放行情况编辑

1)建议服务器防火墙长期启用。

2)建议开放且只开放必要的端口,防止不必要的网络暴露。

常用语句

场景语句
检查防火墙状态systemctl status firewalld
启动防火墙systemctl start firewalld
关闭防火墙systemctl stop firewalld
防火墙开机启动
systemctl enable firewalld
防火墙开机禁用systemctl disable firewalld
查看所有放行端口firewall-cmd --zone=public --list-ports
查看指定端口是否放行firewall-cmd --zone=public --query-port=<端口>/<协议>
放行指定端口firewall-cmd --zone=public --add-port=<端口>/<协议> --permanent
取消放行指定端口firewall-cmd --zone=public --remove-port=<端口>/<协议> --permanent
更新防火墙规则firewall-cmd --reload

示例

本示例介绍如何开放防火墙并放行8080端口。

1)启动防火墙

  • 检查防火墙状态:systemctl status firewalld。返回值为「not running」,说明未启动防火墙

  • 启动防火墙:systemctl start firewalld

  • 再次检查防火墙状态:systemctl status firewalld。返回值为「running」,说明已启动防火墙

2)开放8080端口

  • 检查端口是否放行:firewall-cmd --zone=public --query-port=8080/tcp。返回值为「no」,说明未放行8080端口

  • 开放端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent。返回值为「success」,说明已放行8080端口

  • 更新防火墙规则:firewall-cmd --reload。返回值为「success」,说明已更新规则

  • 再次检查端口是否放行:firewall-cmd --zone=public --query-port=8080/tcp。返回值为「yes」,说明已放行8080端口

注意事项:重启firewalld之后需要重启Docker编辑

问题描述:

部署运维平台/运维项目后,在对应服务器上会自动部署 Docker。

Docker 在启动时会自动修改 iptables 规则,确保容器间的网络通信、端口映射等功能能够正常工作。

当 firewalld 重启时,可能会刷新或覆盖这些 iptables 规则,导致 Docker 原先设置的规则失效,造成容器无法正常访问网络或服务端口映射失败。

解决方法:

重启 firewalld 后,请重启 Docker 服务。

重启 Docker 服务后,Docker 会重新加载并设置所需的 iptables 规则,确保网络功能恢复正常。

该操作会导致运维平台/运维项目不可用,请在非工作时段进行。

该操作需要掌握基础docker知识,如无法完成,请联系帆软技术支持协助。技术支持联系方式:「服务>在线支持」