檢測Linux服務器端口是否開通
現如今雲服務器已經是大勢所趨,國內比較著名的雲服務器廠商有阿裏、騰訊,國外有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地址
我好像也就掌握這麽多襖,你們都學會了嗎?
檢測Linux服務器端口是否開通