檢測Linux伺服器埠是否開通

Federico發表於2017-08-29

 

  現如今雲伺服器已經是大勢所趨,國內比較著名的雲伺服器廠商有阿里、騰訊,國外有aws,儘管有的公司目前為止還是使用的物理機,但是無論你是使用的雲伺服器還是物理機,在執行服務時都必不可少的需要監聽到指定的埠,而且已經有很多的服務需要監聽的埠需要可以通過公網訪問,如果想要保證服務正常必須確定埠可以正常訪問,例如nginx服務呦,預設的80埠如果在安全組沒有開通的話,是一定不能訪問的呦。

 

  接下來,我們就來學習下都有那些命令可以用來確定伺服器的埠是否已經成功開通吧。

一、nc命令

  nc命令也經常被用於代替nmap進行埠掃描,當然這只是nc命令功能的冰山一角。

(1)、使用nc命令檢查指定伺服器的指定埠是否被監聽

選項:

-w:超時秒數設定等待連線的時間

-z:使用0輸入/輸出模式,只在掃描通訊埠時使用

-v:顯示指令執行過程

以上測試結果為,已經被監聽的80埠使用nc測試後返回succeeded,而未被監聽的埠81返回failed

 

如果要掃描一個範圍內的埠,語法如下:

 

(2)、測試指定埠是否可以正常通訊

  更多時候我們都不是為了測試一個埠是否已經被監聽,這大多是黑客要做的事情,我們更多的關心的是一個埠是否正常通訊,例如我們公司使用的音視訊服務,音視訊服務只要包含兩項服務,一項用於撥通音視訊另一項用於打通埠隧道,讓使用音視訊服務的客戶可以直接連線,採用這種方式的好處是使用者之間可以更快的連線因為不必通過伺服器進行轉發,不會影響使用者體驗,這就要求我們在部署音視訊服務之前先檢查指定埠是否可用,用到的方法如下:

伺服器端:

nc -l port

客戶端:

nc ip port

  伺服器端使用nc命令監聽在1234埠上,客戶端同樣使用nc命令向伺服器端傳送資料,檢視伺服器端有沒有正常接收到資料。

示例:

客戶端

服務端

註釋:公網ip不方便透露呦。這樣我們就已經接收到了來自客戶端的資料資訊,那麼如何監聽在udp相應埠呢?下面就來介紹下哈

nc命令預設情況下是檢測/監聽tcp協議的,如果我們需要處理udp協議的話,請按照以下操作:

伺服器端:

nc -u -l port

客戶端:

nc -u ip port

示例:

客戶端

服務端

選項

-l:類似於長連線,一直監聽在指定port不會斷開,可以傳送資料資訊

-u:指定使用udp協議,nc命令預設情況下是使用tcp協議的

 

加量環節:

能夠實現此功能的其他命令介紹

  當然能夠實現上述功能的不光只有nc命令了,我們也可以使用tcpdump命令,下面介紹下tcpdump抓包命令的冰山一角。

伺服器端:

tcpdump port 1234

客戶端:

nc -u ip port 

示例:

客戶端

服務端

不好意思呦,公司的公網ip也不方便透露呦,沒錯使用tcpdump抓包時會抓取到傳送資訊到伺服器的公網ip地址呦,不過其實這個地址沒有伺服器的公網ip地址重要。

(3)、使用nc命令進行檔案傳輸

  剛知道這個命令的時候我也嚇一跳,沒想到這個命令可以這麼強大,真的是以後遇到文字檔案剩的用scp命令了,接下來就來見識下吧。

客戶端:

nc ip port > test.txt

服務端:

cat test.txt | nc ip port

注意喲,我們是要將本地檔案上傳至伺服器呦。

我這裡就在本地隨便找幾行資料了,上述所有操作都是先執行伺服器端操作,然後執行客戶端操作

伺服器端

要先建立空檔案,在執行客戶端操作

 

 

 

這個命令有點妙,客戶端執行完成後,服務端自動結束nc命令。快去看看伺服器端的檔案吧。

 

 

 

出現了,這就是我們想要的。而且有一個現象就是,執行此命令是當客戶端斷開或執行完成後,服務端也會立即退出,如果不需要退出的話,需要以下引數哦。

選項

-k:控制伺服器端不會因為客戶端的退出而退出

-n:指定使用ip地址

 我好像也就掌握這麼多襖,你們都學會了嗎?

 

相關文章