埠占用檢查與防火牆配置

  • 最後修改時間:2025-06-04
  • 概述

    問題描述

    • 部署維運平台報錯: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知識,如無法完成,請聯絡帆軟技術支援協助。技術支援聯絡方式:「服務>線上支援」


    附件列表


    主題: 擴展閱讀
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽