無法訪問 CentOS7服務器上應用監聽的端口


無法訪問 CentOS7服務器上應用監聽的端口

參考資料

  1. 雲主機上Centos7配置Iptables規則開啟80、3306等端口https://blog.csdn.net/qq_37960007/article/details/80374782
  2. CentOS 7 找不到 iptables 文件(需要安裝 iptables 服務)
    https://www.cnblogs.com/miracle-luna/p/13714709.html
  3. 如何在CentOS 7 的機器上配置白名單
    https://www.cnblogs.com/miracle-luna/p/13714809.html
  4. 關於mysql服務器3306端口不能遠程連接的解決
    https://blog.csdn.net/m0_37477061/article/details/83275408
  5. Linux關閉防火牆命令
    https://blog.csdn.net/qq_39399966/article/details/102660601
  6. CentOS7開啟端口(永久)
    https://blog.csdn.net/zx110503/article/details/78787483
  7. centos7 打開mysql 3306端口並 設置外部訪問
    https://www.cnblogs.com/yangxunwu1992/p/6091422.html

問題由來

我在自己的虛擬機中的CentOS7 中(MySQL 8 安裝過程)並啟動了 mysql 8 服務,並且確認了服務啟動沒有問題。
定位問題:

  1. telnet 服務器的22 端口,訪問正常
  2. netstat -ntpl |grep 3306 查看監聽端口,沒有問題
  3. telnet 服務器的3306端口,無法訪問

經過百度,發現是防火牆的問題。

防火牆開啟端口供其他訪問

1. 使用 firewalld 開啟端口

1、運行命令:

firewall-cmd --get-active-zones

運行完成之后,可以看到zone名稱,如下:
image

2、執行如下命令命令:

# --permanent 表示 永久生效
firewall-cmd --zone=public --add-port=3306/tcp --permanent

image

3、重啟防火牆,運行命令:

firewall-cmd --reload

4、查看端口號是否開啟,運行命令:

firewall-cmd --query-port=3306/tcp

5、如果firewall 已經注銷的了,運行以下命令可恢復:

systemctl unmask firewalld

image

2. 使用 iptables

在CentOS 7.x 的機器上,給指定主機和指定端口配置白名單的時候,發現機器的 /etc/sysconfig/ 目錄下沒有找到 iptables 文件。

原因是因為CentOS 7.x 默認是使用 firewalld 服務作為防火牆,我們需要禁用該服務,安裝 iptables 服務。

1、停止 firewall 服務

systemctl stop firewalld 

2、注銷 firewall 服務

systemctl mask firewalld

可以通過systemctl unmask firewalld 重新注冊 firewalld 服務
3、安裝 iptables 服務

yum install -y iptables 
yum install iptables-services

4、啟動 iptables 服務

systemctl start iptables

或者

service iptables start

5、設置 iptables 開機自啟動

systemctl enable iptables

6、查看 iptables 狀態

systemctl status iptables

或者

service iptables status

image

7、查看 iptables 文件
此時可以在 /etc/sysconfig/ 目錄下看到 iptables 文件
image

8、編輯 iptables 文件,加入防火牆規則

vi /etc/sysconfig/iptables

加入 3306 端口規則

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

image

注意: 3306 端口規則 一定不能是兩個 icmp-host-prohibited 中間,否則仍然不能訪問!

====== 錯誤示范========
之前新增的規則,在兩個 icmp-host-prohibited 中間,所以不能訪問:
image
image
====== 錯誤示范========

9、重啟 iptables

systemctl restart iptables.service

然后再查看

iptables -L -n

image

10、Telnet 服務器 3306 端口
訪問正常。

iptables 一些命令

# iptables 服務的停止命令
systemctl stop iptables
或者
service iptables stop

# iptables 服務的重啟命令
systemctl restart iptables
或者
service iptables restart


# Saving firewall rules to /etc/sysconfig/iptables
service iptables save

# 重載 iptables 文件
systemctl reload iptables
或者
service iptables reload

# 查看已配置的iptables規則:

iptables -n -L
iptables -n -L --line-numbers


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM