環境: CentOS 7 套件: Firewalld 、 tomcat
環境介紹:
(1) 伺服器連外接皆透過防火牆設備
防火牆一律禁止內部伺服器對外有存取行為。
除非有提出特殊使用需求,才允與放行。
(2) Web 與 API伺服器為同網段設備。
(3) 伺服器有對外部特定伺服器開啟TCP-8080之連線。
(4) Web 端有開啟Firewalld功能,僅讓外部連接他的TCP-443
(5) API 端有開啟Firewalld功能,僅讓外部連接他的TCP-8080,
原因:
來源/目的需求 8080
今天發生的事件為 :
【工程師A】反映 因為需要從 網站(WEB)串接API(TCP-8080) ,
希望【工程師B】協助開啟WEB端的TCP-8080讓雙方互通!!!
問題: 今天如果下圖的WEB要連接API的TCP-8080,WEB端是否要開啟TCP-8080讓雙方互通呢?
示意圖如下
處理方式 :
API 上面可以看到TCP-8080的服務正在運作。
Web上面可以看到TCP-443的服務正在運作。
兩者雖然連接到外部受阻,但是連接到相互的服務一樣是可以的。
(因為兩者連接時,僅透過Switch在傳輸,不會連接到外部的Firewall)
所以我們可以排除Firewall阻擋他連線的問題。
再來我們看到本機的服務,因為他原本就有提供連線的服務。
且當下沒有故障或者服務異常的問題。
透過雙方互相使用telnet測試後,確認服務無異常。
現在我們要來探討連接API的部分,很多人會想他有回傳值,我是不是要特別開甚麼讓他連接?
你可以仔細想一下,你在瀏覽網站的時候,網站不會給你回傳值嗎??
你有特別去開啟自己本機端的甚麼服務嗎?
今天【工程師A】的問題是因為WEB要連接API的TCP-8080服務,這一端沒有問題。
但他卻說了,因為有回傳值問題,希望在WEB端也開啟TCP-8080讓他回傳!!
WEB端沒有TCP-8080服務,開啟了這個服務根本是多餘的~
因為根本不是從這個TCP-8080回來啊!!!
這可以從Wireshark擷取封包看看。
可以看到他怎麼去就怎麼回來。
因需要測試的環境是Linux文件介面,他沒辦法直接使用瀏覽器開啟API頁面測試。
瀏覽器測試是這樣。
此時可以使用curl連接測試。
#curl http://【API主機 IP位址】:8080
如果可以看到下圖,表示有回傳值,但內容是HTML格式,所以直接找關鍵字。
後記:
寫這篇內容主要是提供給不是很了解網路運作的人有初步的了解使用。
(本篇完)