ip訪問linux機器顯示被拒絕

背景
在瀏覽器輸入ip地址訪問我的linux機器 (CentOS 7)
顯示被拒絕,第一次猜想就是網路防火牆的問題,但是解決了半天就是不好使。特此記錄下(耐心看哈)。
解決過程
第一種情況:如果是阿里雲的機器
1.確認例項所在安全組裡已經新增如下安全組規則:

2.檢視 nginx 服務是否已經開啟:執行命令 systemctl status nginx
。如果返回以下結果,說明 nginx 已經啟動。如果未開啟,執行命令 systemctl start nginx
。
3.檢視埠在例項中是否正常被監聽:執行命令 netstat -an | grep 80
。如果返回以下結果,表明 TCP 80 埠正在被正常監聽
tcp00 0.0.0.0:800.0.0.0:*LISTEN
- 檢視網路防火牆是否放行 TCP 80 埠:執行命令
firewall-cmd --add-port=80/tcp --permanent
。返回結果為 success 即表示已經放行 TCP 80 埠。
好了現在用 http://IP地址
訪問下試試。如果還不行請繼續看下面的情況
第二種情況:常規機器
重複第一種的 2、3、4
步驟,若果還不行就有可能沒有把80埠新增到 zone
中
伺服器上可能會有多張網絡卡,每張網絡卡可能有多個網口。firewalld 最細可以控制每個網口的進出流量。所以配置前需要知道要控制的網口的名字,用 ifconfig
命令獲取
一般買來的雲伺服器,只有一張網絡卡一個網口,這種情況下ifconfig會列出兩個網口,比如這裡是 eth0
和 lo
。 lo
是本地迴路,是用於除錯的,不是真正的網口。
如果發現機器上除了 lo
網口,還是有多個網口,說明伺服器上有多張網絡卡或多個網口。這時候要自己判斷開操作哪個網口。
知道了要操作哪個網口。還需要了解下下 firewalld
中 zone
的概念。
關於 zone
簡單介紹下概念: firewalld
將伺服器網路環境劃分為幾個 zone
,一般是9個,如下:
# firewall-cmd --get-zones block dmz drop external home internal public trusted work
一個網口必須處在某一個 zone
之內, zone
有一套流量進出的規則,網口的進出流量就得遵循這套規則。如果把網口從一個 zone
移動到另一個 zone
後,該網口的流量進出規則就會改變。
關於 zone
的詳細概念請看後續整理的文章 linux防火牆管理Firewall
- 先確保防火牆是執行著的:
# firewall-cmd --state running
如果是running則表示已開啟,如果未開啟的話則需要開啟
# service firewalld start Redirecting to /bin/systemctl startfirewalld.service
2.給 public
這個 zone
新增規則:允許80埠的流量通過
#firewall-cmd --zone=public --add-port=80/tcp--permanent success
permanent
表示永久生效,否則機器重啟則會失效。設定完後我們 reload
下來讓它生效。
#firewall-cmd --reload success
然後檢視下是生效
#firewall-cmd --zone=public --query-port=80/tcp yes
好了,訪問下 http://IP地址
是否生效。
總結
這種狀況一般都是網路防火牆的安全策略,首先需要排查是否防火牆進行了埠的放行,然後看下埠是否被新增到相應的網口所在的 zone
中。