這是一個很重要的話題,不僅對 Linux 管理員而言,對於我們大家而言也非常有幫助。我的意思是說對於工作在 IT 基礎設施行業的使用者來說,了解這個話題也是非常有用的。他們需要在執行下一步操作前,檢查 Linux 伺服器上某個埠是否開啟。
假如這個埠沒有被開啟,則他們會直接找 Linux 管理員去開啟它。如果這個埠已經開啟了,則我們需要和應用團隊來商量下一步要做的事。
在本篇文章中,我們將向你展示如何檢查某個埠是否開啟的 3 種方法。
這個目標可以使用下面的 Linux 命令來達成:
nc
:netcat 是一個簡單的 Unix 工具,它使用 TCP 或 UDP 協定去讀寫網路連線間的資料。nmap
:(“Network Mapper”)是一個用於網路探索和安全審計的開源工具,被設計用來快速地掃描大規模網路。telnet
:被用來互動地通過 TELNET 協定與另一台主機通訊。nc
即 netcat
。netcat
是一個簡單的 Unix 工具,它使用 TCP 或 UDP 協定去讀寫網路連線間的資料。
它被設計成為一個可信賴的後端工具,可被直接使用或者簡單地被其他程式或指令碼呼叫。
與此同時,它也是一個富含功能的網路偵錯和探索工具,因為它可以建立你所需的幾乎所有型別的連線,並且還擁有幾個內建的有趣功能。
netcat
有三類功能模式,它們分別為連線模式、監聽模式和隧道模式。
nc
(netcat
)命令的一般語法:
$ nc [-options] [HostName or IP] [PortNumber]
在下面的例子中,我們將檢查遠端 Linux 系統中的 22 埠是否開啟。
假如埠是開啟的,你將獲得類似下面的輸出。
# nc -zvw3 192.168.1.8 22Connection to 192.168.1.8 22 port [tcp/ssh] succeeded!
命令詳解:
nc
:即執行的命令主體;z
:零 I/O 模式(被用來掃描);v
:顯式地輸出;w3
:設定超時時間為 3 秒;192.168.1.8
:目標系統的 IP 地址;22
:需要驗證的埠。當檢測到埠沒有開啟,你將獲得如下輸出:
# nc -zvw3 192.168.1.95 22nc: connect to 192.168.1.95 port 22 (tcp) failed: Connection refused
nmap
(“Network Mapper”)是一個用於網路探索和安全審計的開源工具,被設計用來快速地掃描大規模網路,儘管對於單個主機它也同樣能夠正常工作。
nmap
以一種新穎的方式,使用裸 IP 包來決定網路中的主機是否可達,這些主機正提供什麼服務(應用名和版本號),它們執行的作業系統(系統的版本),它們正在使用的是什麼包過濾軟體或者防火牆,以及其他額外的特性。
儘管 nmap
通常被用於安全審計,許多系統和網路管理員發現在一些日常任務(例如羅列網路資產、管理服務升級的計劃、監視主機或者服務是否正常執行)中,它也同樣十分有用。
nmap
的一般語法:
$ nmap [-options] [HostName or IP] [-p] [PortNumber]
假如埠是開啟的,你將獲得如下的輸出:
# nmap 192.168.1.8 -p 22Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 03:37 IST Nmap scan report for 192.168.1.8 Host is up (0.00031s latency).PORT STATE SERVICE22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 13.06 seconds
假如埠沒有開啟,你將得到類似下面的結果:
# nmap 192.168.1.8 -p 80Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 04:30 ISTNmap scan report for 192.168.1.8Host is up (0.00036s latency).PORT STATE SERVICE80/tcp closed httpNmap done: 1 IP address (1 host up) scanned in 13.07 seconds
telnet
命令被用來互動地通過 TELNET 協定與另一台主機通訊。
telnet
命令的一般語法:
$ telnet [HostName or IP] [PortNumber]
假如探測成功,你將看到類似下面的輸出:
$ telnet 192.168.1.9 22Trying 192.168.1.9...Connected to 192.168.1.9.Escape character is '^]'.SSH-2.0-OpenSSH_5.3^]Connection closed by foreign host.
假如探測失敗,你將看到類似下面的輸出:
$ telnet 192.168.1.9 80Trying 192.168.1.9...telnet: Unable to connect to remote host: Connection refused
當前,我們只找到上面 3 種方法來檢視遠端 Linux 系統中某個埠是否開啟,假如你發現了其他方法可以達到相同的目的,請在下面的評論框中告知我們。