自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

當(dāng) Linux 常規(guī)工具失效,如何利用系統(tǒng)內(nèi)置命令快速檢測(cè)端口開(kāi)放情況?

系統(tǒng) Linux
本文將首先介紹這些常見(jiàn)工具的使用方法,然后帶你探索在工具缺失時(shí)如何利用 Linux 內(nèi)置功能和其他系統(tǒng)組件來(lái)測(cè)試服務(wù)器端口。

在運(yùn)維和開(kāi)發(fā)的日常工作中,檢查遠(yuǎn)程服務(wù)器端口是否開(kāi)放是一項(xiàng)非常重要的技能。通常情況下,我們會(huì)使用像 Telnet、ss、lsof 和 netstat 這樣的經(jīng)典工具來(lái)幫助我們快速定位網(wǎng)絡(luò)問(wèn)題。不過(guò),設(shè)想一下這樣的場(chǎng)景:當(dāng)你登錄到一臺(tái)僅安裝了最基本組件的服務(wù)器時(shí),發(fā)現(xiàn)這些常用的工具都不可用,這時(shí)候你會(huì)怎么辦呢?這種情況雖然少見(jiàn)但確實(shí)可能發(fā)生,讓人一時(shí)之間可能會(huì)感到有些棘手。

本文將首先介紹這些常見(jiàn)工具的使用方法,然后帶你探索在工具缺失時(shí)如何利用 Linux 內(nèi)置功能和其他系統(tǒng)組件來(lái)測(cè)試服務(wù)器端口。

一、常見(jiàn)工具及其用法

1. Telnet

Telnet 是最早被廣泛應(yīng)用的網(wǎng)絡(luò)調(diào)試工具之一。它通過(guò)建立 TCP 連接來(lái)檢查指定端口是否開(kāi)放。例如,要測(cè)試目標(biāo)服務(wù)器 192.168.1.100 的 80 端口,可以使用如下命令:

telnet 192.168.1.100 80

如果連接成功,終端會(huì)顯示類(lèi)似Connected to 192.168.1.100的信息,否則會(huì)提示無(wú)法連接。雖然Telnet功能簡(jiǎn)單,但在很多情況下足以幫助我們迅速排查問(wèn)題。

2. ss

ss是現(xiàn)代 Linux 系統(tǒng)中取代netstat的工具,它能夠快速展示系統(tǒng)的網(wǎng)絡(luò)連接、端口使用情況等。使用如下命令,你可以列出所有監(jiān)聽(tīng)中的端口:

ss -lnt

這里,-l 表示顯示監(jiān)聽(tīng)狀態(tài)的連接,-n 以數(shù)字形式展示端口,-t 限制只顯示 TCP 連接。通過(guò)ss,我們可以直觀地了解系統(tǒng)當(dāng)前哪些端口正在被監(jiān)聽(tīng)。

root@didiplus:~# ss -nlt
State               Recv-Q              Send-Q                           Local Address:Port                            Peer Address:Port             Process              
LISTEN              0                   4096                             127.0.0.53%lo:53                                   0.0.0.0:*                                     
LISTEN              0                   511                                    0.0.0.0:443                                  0.0.0.0:*                                     
LISTEN              0                   4096                                   0.0.0.0:21115                                0.0.0.0:*                                     
LISTEN              0                   4096                                   0.0.0.0:21116                                0.0.0.0:*                                     
LISTEN              0                   4096                                   0.0.0.0:21117                                0.0.0.0:*                                     
LISTEN              0                   4096                                   0.0.0.0:21118                                0.0.0.0:*                                     
LISTEN              0                   4096                                   0.0.0.0:21119                                0.0.0.0:*                                     
LISTEN              0                   4096                                   0.0.0.0:18080                                0.0.0.0:*                                     
LISTEN              0                   128                                    0.0.0.0:5320                                 0.0.0.0:*                                     
LISTEN              0                   511                                    0.0.0.0:80                                   0.0.0.0:*

3. lsof

lsof 是一個(gè)用于列出當(dāng)前系統(tǒng)打開(kāi)文件的強(qiáng)大工具,因?yàn)樵赨nix/Linux中一切皆文件,所以它也可以用來(lái)檢查端口使用情況。例如,檢測(cè)哪個(gè)進(jìn)程占用了 80 端口:

lsof -i :80

這條命令會(huì)列出所有與端口80相關(guān)的進(jìn)程信息,幫助你快速定位端口被占用的原因。

root@didiplus:~# lsof -i :80
COMMAND       PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
openresty  220542 root   27u  IPv4 159427645      0t0  TCP *:http (LISTEN)
openresty  220543 root   27u  IPv4 159427645      0t0  TCP *:http (LISTEN)

4. netstat

netstat 是一款傳統(tǒng)而經(jīng)典的網(wǎng)絡(luò)工具,它同樣可以顯示系統(tǒng)網(wǎng)絡(luò)連接、路由表、接口狀態(tài)等。檢測(cè)服務(wù)器上所有監(jiān)聽(tīng)的端口,可以使用以下命令:

netstat -lnt

和ss類(lèi)似,-lnt 參數(shù)分別代表監(jiān)聽(tīng)、數(shù)字顯示以及僅顯示 TCP 連接。雖然 netstat 在某些新系統(tǒng)中逐漸被 ss 取代,但它仍然在很多環(huán)境中存在并發(fā)揮作用。

root@didiplus:~# netstat -pantu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:18080           0.0.0.0:*               LISTEN      217479/docker-proxy 
tcp        0      0 0.0.0.0:21115           0.0.0.0:*               LISTEN      2043987/docker-prox 
tcp        0      0 0.0.0.0:21118           0.0.0.0:*               LISTEN      2043898/docker-prox 
tcp        0      0 0.0.0.0:21119           0.0.0.0:*               LISTEN      2043880/docker-prox 
tcp        0      0 0.0.0.0:21116           0.0.0.0:*               LISTEN      2043943/docker-prox 
tcp        0      0 0.0.0.0:21117           0.0.0.0:*               LISTEN      2043919/docker-prox

二、當(dāng)這些工具都缺失時(shí),該如何探測(cè)端口?

現(xiàn)實(shí)中,有時(shí)你可能會(huì)遇到一個(gè)極端場(chǎng)景——服務(wù)器環(huán)境異常簡(jiǎn)化,甚至連上述常用工具都不存在。但Linux系統(tǒng)并不會(huì)讓你完全“手足無(wú)措”,下面介紹幾種替代方案:

1. 利用Bash內(nèi)置的/dev/tcp功能

Bash內(nèi)置了對(duì)TCP連接的支持,通過(guò)訪問(wèn)特殊的設(shè)備文件/dev/tcp,你可以直接測(cè)試遠(yuǎn)程端口。示例如下:

echo > /dev/tcp/192.168.1.100/80 && echo "端口開(kāi)放" || echo "端口關(guān)閉"

這個(gè)命令嘗試建立到目標(biāo)主機(jī)80端口的連接,成功則輸出“端口開(kāi)放”,失敗則顯示“端口關(guān)閉”。這種方法無(wú)需安裝任何額外軟件,適合快速嵌入腳本中實(shí)現(xiàn)自動(dòng)化檢測(cè)。

root@didiplus:~# echo > /dev/tcp/127.0.0.1/80 && echo "端口開(kāi)放" || echo "端口關(guān)閉"
端口開(kāi)放
root@didiplus:~# echo > /dev/tcp/127.0.0.1/180 && echo "端口開(kāi)放" || echo "端口關(guān)閉"
-bash: connect: Connection refused
-bash: /dev/tcp/127.0.0.1/180: Connection refused
端口關(guān)閉

結(jié)合 Bash 的 /dev/tcp 功能,可以寫(xiě)個(gè)循環(huán)腳本,批量掃描一系列端口。例如:

#!/bin/bash
HOST="192.168.1.100"
for PORT in {20..25}; do
    (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1 &&
    echo "端口 $PORT 開(kāi)放" ||
    echo "端口 $PORT 關(guān)閉"
done

2. 借助Python腳本

如果系統(tǒng)中安裝了Python,我們可以利用 Python 的 socket 模塊來(lái)探測(cè)端口狀態(tài)。以下一行命令可以判斷目標(biāo)主機(jī) 80 端口是否開(kāi)放:

python -c "import socket; s=socket.socket(); s.settimeout(3); print('開(kāi)放' if s.connect_ex(('192.168.1.100', 80))==0 else '關(guān)閉'); s.close()"

此方法依賴(lài) Python 內(nèi)置的網(wǎng)絡(luò)庫(kù),能快速返回端口狀態(tài),適用于批量檢測(cè)和自定義腳本開(kāi)發(fā)。

三、總結(jié)

在排查網(wǎng)絡(luò)問(wèn)題時(shí),我們常依賴(lài)Telnet、ss、lsof和netstat等工具來(lái)檢查服務(wù)器端口。當(dāng)這些工具不可用或受限時(shí),可以利用Linux自帶的功能(如Bash的/dev/tcp)和通用軟件(如Python)來(lái)解決。這不僅展現(xiàn)了技術(shù)能力,也體現(xiàn)了靈活運(yùn)用資源解決問(wèn)題的技巧。掌握這些方法后,面對(duì)網(wǎng)絡(luò)難題或安全挑戰(zhàn)時(shí)會(huì)更加得心應(yīng)手。你有過(guò)類(lèi)似經(jīng)歷嗎?歡迎分享你的解決方案!

責(zé)任編輯:趙寧寧 來(lái)源: 攻城獅成長(zhǎng)日記
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)