埠占用檢查與防火牆配置

  • 最後修改時間:2024-06-17
  • 1. 概述

    1.1 問題描述

    • 部署維運平台報錯: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 原因分析

    待部署的維運平台組件/維運項目組件容器,需要佔用一些埠。

    如果這些埠已被佔用/沒有開放,則無法成功部署,會出現以上報錯。

    1.3 解決方案

    請依次檢查以下三者:

    1)檢查該埠是否被伺服器中其他進程佔用

    • 如果埠被佔用,則需要更換一個未被佔用的埠,再檢查新埠的下兩項。

    • 如果埠未被佔用,則需要檢查該埠的下兩項。

    2)檢查伺服器防火牆是否放行埠

    • 如果伺服器防火牆未開啟,建議開啟。

    • 如果伺服器防火牆開啟,需要開放所需埠。

    • 如果埠已開放,請檢查下一項。

    3)如為雲伺服器,請檢查伺服器安全組是否放行埠

    • 雲伺服器安全組埠放行方式本文不作介紹,請聯絡你的雲伺服器廠商諮詢。

    2. 檢查埠占用情況

    本文提供多種方法檢查Linux系統中的埠是否被其他進程佔用。

    需要注意的是,執行以下命令通常需要以root使用者或具有足夠權限的使用者身分運作,以獲取完整的進程資訊。

    2.1 使用netstat命令

    命令語句

    netstat -tuln | grep <埠號>

    將 <埠號> 更換為您要檢查的具體埠號

    傳回說明

    這條命令將顯示監聽該埠的進程資訊

    如果有進程正在使用該埠,您將能夠看到相關的匯出

    如果該埠未被佔用,則無任何匯出

    範例

    2.2 使用lsof命令

    命令語

    lsof -i :<埠號>

    將 <埠號> 更換為您要檢查的具體埠號

    傳回說明

    這條命令將顯示開啟該埠的進程及其相關資訊。

    如果有進程正在使用該埠,您將能夠看到相關的匯出

    如果該埠未被佔用,則無任何匯出

    範例

    3. 檢查防火牆放行情況

    1)建議伺服器防火牆長期啟動。

    2)建議開放且只開放必要的埠,防止不必要的網路曝光。

    3.1 常用語句

    場景語句
    檢查防火牆狀態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

    3.2 範例

    本範例介紹如何開放防火牆並放行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埠

    附件列表


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