你應(yīng)該知道的 22 個(gè)基本的 Linux 網(wǎng)絡(luò)命令
我們并不是每天都會(huì)談?wù)?Linux 的命令行。但正如一些讀者指出的那樣,你們也想學(xué)習(xí)一些命令行的技巧。
因此,我整理了一份基本的 Linux 網(wǎng)絡(luò)命令清單,這些命令在我的大學(xué)時(shí)代幫助了我,讓我對(duì)如何在網(wǎng)絡(luò)方面使用 Linux 有了堅(jiān)定的認(rèn)識(shí)。
這些命令將幫助你設(shè)置網(wǎng)絡(luò),以及解決你在 Linux 系統(tǒng)中可能遇到的各種網(wǎng)絡(luò)問(wèn)題。
Linux 中的基本網(wǎng)絡(luò)命令
這個(gè)匯編包括了 CLI 實(shí)用程序,它們將幫助你排除網(wǎng)絡(luò)問(wèn)題、監(jiān)控?cái)?shù)據(jù)包和連接的設(shè)備,以及更多。
在我展示這些命令的一些細(xì)節(jié)之前,讓我分享一下我今天要討論的所有命令的簡(jiǎn)要概述。
命令 | 說(shuō)明 |
? | 操縱路由來(lái)分配和配置網(wǎng)絡(luò)參數(shù) |
? | 識(shí)別數(shù)據(jù)包到達(dá)主機(jī)的路徑 |
? | 在追蹤網(wǎng)絡(luò)主機(jī)的路徑時(shí),獲取最大傳輸單元 |
? | 通常用于檢查主機(jī)和服務(wù)器之間的連接情況 |
? | 獲得有關(guān)網(wǎng)絡(luò)套接字的詳細(xì)信息 |
? | 給出所有關(guān)于 DNS 名稱(chēng)服務(wù)器的必要信息 |
? | 輸出特定域和主機(jī)的 IP 地址 |
? | 主要用于輸出和更改主機(jī)名 |
? | 在網(wǎng)絡(luò)上通過(guò)各種協(xié)議傳輸數(shù)據(jù) |
? | ? |
? | 獲取有關(guān)注冊(cè)的域名、IP 地址、名稱(chēng)服務(wù)器等信息 |
? | 檢測(cè)本地以太網(wǎng)設(shè)備的鏈接狀態(tài) |
? | 監(jiān)視與帶寬有關(guān)的統(tǒng)計(jì)信息 |
? | 數(shù)據(jù)包嗅探和分析工具,用于捕獲、分析和過(guò)濾網(wǎng)絡(luò)流量 |
? | 允許用戶(hù)配置以太網(wǎng)設(shè)備 |
? | 用于網(wǎng)絡(luò)連接的故障排除工具 |
? | 主要用于審計(jì)網(wǎng)絡(luò)安全 |
? | 開(kāi)源工具,用于監(jiān)控實(shí)時(shí)帶寬 |
? | 配置防火墻規(guī)則的 CLI 工具 |
? | 測(cè)量網(wǎng)絡(luò)性能和調(diào)整的工具 |
? | ??speedtest.net?? 的 CLI 工具,用于檢查網(wǎng)速 |
? | 主要用于監(jiān)控網(wǎng)絡(luò)流量和帶寬消耗 |
現(xiàn)在,讓我們用例子和更深入的方式討論它們。
請(qǐng)注意,并不是所有的命令都會(huì)預(yù)裝。我已經(jīng)添加了針對(duì) Debian/Ubuntu 的說(shuō)明。對(duì)于其他發(fā)行版,請(qǐng)使用你的軟件包管理器進(jìn)行安裝。
1、ip 命令
??ip?
? 命令是最基本的,但也是最重要的,你會(huì)發(fā)現(xiàn)系統(tǒng)管理員經(jīng)常使用它,其用于從操縱路由到分配和配置網(wǎng)絡(luò)參數(shù)。
雖然用例可能無(wú)窮無(wú)盡,但讓我向你展示 ??ip?
? 命令的最基本用例(尋找 IP 地址)。
ip address
同樣,你也可以使用 ??ip?
? 命令來(lái)持續(xù)監(jiān)控設(shè)備的狀態(tài),請(qǐng)使用 ??monitor?
? 參數(shù)而不是我們之前用來(lái)獲取 IP 地址的 ??address?
? 參數(shù):
ip monitor
2、traceroute
使用 ??traceroute?
? 命令,你可以確定數(shù)據(jù)包到達(dá)主機(jī)的路線(xiàn)。而且,當(dāng)你想詢(xún)問(wèn)數(shù)據(jù)包的傳輸情況和數(shù)據(jù)包所走的跳數(shù)時(shí),它可能相當(dāng)有用。
默認(rèn)情況下,你的系統(tǒng)可能沒(méi)有安裝 ??traceroute?
?,如果你使用的是 Debian 及派生的發(fā)行版(包括 Ubuntu),安裝時(shí)只需使用一個(gè)命令:
例如,追蹤到 ??google.com?? 的數(shù)據(jù)包:
traceroute google.com
默認(rèn)情況下,??traceroute?
? 會(huì)使用 IPv4,但是你可以通過(guò)使用 ??-6?
? 選項(xiàng)來(lái)改變這一行為,該選項(xiàng)將指示 ??traceroute?
? 使用 IPv6。讓我告訴你怎么做:
traceroute -6 google.com
3、tracepath
??tracepath?
? 命令用于發(fā)現(xiàn) MTU(最大傳輸單元),同時(shí)追蹤到網(wǎng)絡(luò)主機(jī)的路徑。它與我上面討論的 ??traceroute?
? 很相似,但它不需要 ??sudo?
? 權(quán)限,而且也沒(méi)有像它那么多功能。
但是,首先什么是 MTU?
MTU 就是可以在網(wǎng)絡(luò)上傳輸或接收的最大幀或數(shù)據(jù)包。
現(xiàn)在,讓我們看一下 ??google.com?? 的 ??tracepath?
? 的基本例子:
tracepath google.com
同樣,你可以使用 ??-b?
? 選項(xiàng)同時(shí)打印出 IP 地址和主機(jī)名。
tracepath -b google.com
4、ping
??ping 命令??(數(shù)據(jù)包網(wǎng)絡(luò)飛龍?zhí)皆剖諴acket Internet Groper ??) 可以說(shuō)是在排除網(wǎng)絡(luò)故障時(shí)最重要的命令之一,因?yàn)樗菣z查主機(jī)和服務(wù)器之間連接情況的最常用方法。
例如,我 ??ping?
? 谷歌:
ping google.com
這里,最后一行(??min/avg/max?
?)表示從指定的服務(wù)器獲得響應(yīng)的時(shí)間。
如果你得到一個(gè)錯(cuò)誤提示 ??bash: ping: command not found?
? (LCTT 譯注:不會(huì)吧?),你可以查看我們的指南 ??如何在 Ubuntu 上安裝 Ping??。
5、ss
??ss?
?(套接字統(tǒng)計(jì)socket statistics)命令用于詳細(xì)了解網(wǎng)絡(luò)套接字(在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)的端點(diǎn))。
要列出所有監(jiān)聽(tīng)和非監(jiān)聽(tīng)的 TCP 連接,你必須使用 ??-at?
? 選項(xiàng),如下所示:
ss -at
同樣,你可以使用 ??-au?
? 選項(xiàng)對(duì) UDP 端口進(jìn)行同樣的操作:
ss -au
6、dig
??dig 命令??(域信息龍爪手Domain Information Groper ??)用于獲取有關(guān)域名的所有必要信息。
要在基于 Ubuntu 的發(fā)行版上安裝 ??dig?
? 工具,請(qǐng)按照給出的命令進(jìn)行:
現(xiàn)在,讓我告訴你如何獲取一個(gè)特定主機(jī)的信息,在這個(gè)例子中,我將獲取 ??itsfoss.com?? 的信息:
dig itsfoss.com
7、host
??host?
? 命令主要用于獲取一個(gè)特定主機(jī)的 IP 地址,或者你可以從一個(gè)特定的 IP 地址獲取主機(jī)名。換句話(huà)說(shuō),它是一個(gè) DNS 查詢(xún)工具。
要找到主機(jī)的 IP,你只需要在 ??host?
? 命令中附加主機(jī)名。讓我告訴你怎么做:
host itsfoss.com
同樣,你可以用一個(gè) IP 地址來(lái)獲取主機(jī)名:
host 8.8.4.4
8、hostname
如果你已經(jīng)使用了一段時(shí)間的 Linux,你一定很熟悉這個(gè)命令,因?yàn)檫@主要是用來(lái) ??改變你的系統(tǒng)的主機(jī)名?? 和 NIS(網(wǎng)絡(luò)信息系統(tǒng))的主機(jī)名。
當(dāng)不使用任何選項(xiàng)時(shí),它可以得到系統(tǒng)當(dāng)前的主機(jī)名。
hostname
從包含所需主機(jī)名的文件中改變主機(jī)名是這個(gè)工具的另一個(gè)有趣的功能:
sudo hostname -F hostname.txt
9、curl
??curl?
?(客戶(hù)端 URL(Client URL))命令主要用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù),支持各種協(xié)議,包括 HTTP、FTP、IMAP 和許多其他協(xié)議。
這個(gè)工具是首選的自動(dòng)化工具,因?yàn)樗窃跊](méi)有任何人類(lèi)互動(dòng)的情況下工作的,也可以用于端點(diǎn)測(cè)試、調(diào)試和錯(cuò)誤記錄。
??curl?
? 工具沒(méi)有預(yù)裝,如果你在任何 Debian 及其派生發(fā)行版上,你只需要使用以下命令進(jìn)行安裝:
使用 ??curl?
? 命令 ??下載文件?? 非常容易,你只需在 URL 中使用 ??-O?
? 選項(xiàng),就可以開(kāi)始了。
curl -o url
在下載大文件時(shí),進(jìn)度條會(huì)很方便,你可以用 ??curl?
? 的 ??-#?
? 選項(xiàng)來(lái)顯示進(jìn)度條。
curl -# -O
10、mtr
它是 ??ping?
? 和 ??traceroute?
? 工具的組合,主要用于網(wǎng)絡(luò)診斷,并提供網(wǎng)絡(luò)響應(yīng)和連接的實(shí)時(shí)情況。
使用 ??mtr?
? 的最簡(jiǎn)單方法是用它跟上一個(gè)主機(jī)名或 IP 地址,它將給出一個(gè)實(shí)時(shí)的 ??traceroute?
? 報(bào)告。
mtr google.com
如果你想讓 ??mtr?
? 同時(shí)顯示主機(jī)名和 IP 地址,你可以把它和 ??-b?
? 選項(xiàng)配對(duì),如下圖:
mtr -b
11、whois
??whois?
? 可以幫助你找到有關(guān)注冊(cè)的域名、IP 地址、名稱(chēng)服務(wù)器等信息,因?yàn)樗?whois 目錄服務(wù)的客戶(hù)端。
這個(gè)工具可能沒(méi)有預(yù)裝在你的設(shè)備上,要在基于 Debian/Ubuntu 的發(fā)行版上安裝,你可以使用給出的命令:
一般來(lái)說(shuō),??whois?
? 命令是與給出的域名配對(duì)使用的:
whois google.com
另外,你也可以用一個(gè) IP 地址來(lái)代替域名,你會(huì)得到同樣的細(xì)節(jié)。
12、ifplugstatus
??ifplugstatus?
? 是一個(gè)最基本的,但也是最有用的工具,足以在基本水平上排除連接問(wèn)題。它用于檢測(cè)本地以太網(wǎng)的鏈接狀態(tài),其工作方式與 ??mii-diag?
?、??mii-tool?
? 和 ??ethtool?
? 類(lèi)似,支持所有三個(gè) API。
在基于 Debian/Ubuntu 的發(fā)行版上安裝,你可以按照給出的命令進(jìn)行:
這個(gè)工具沒(méi)有任何花哨的選項(xiàng),經(jīng)常不需要與任何配對(duì)選項(xiàng)而使用:
ifplugstatus
13、iftop
??iftop?
?(接口的 topInterface TOP)經(jīng)常被管理員用來(lái)監(jiān)控與帶寬有關(guān)的統(tǒng)計(jì)數(shù)據(jù),當(dāng)你遇到網(wǎng)絡(luò)問(wèn)題時(shí),也可以作為診斷工具使用。
這個(gè)工具需要手動(dòng)安裝,可以通過(guò)給出的命令在運(yùn)行 Debian/Ubuntu 的機(jī)器上輕松安裝。
當(dāng) ??iftop?
? 在沒(méi)有任何選項(xiàng)的情況下使用時(shí),它會(huì)顯示默認(rèn)接口的帶寬統(tǒng)計(jì)。
iftop
你也可以通過(guò)在設(shè)備名稱(chēng)后面加上 ??-i?
? 選項(xiàng)來(lái)指定網(wǎng)絡(luò)設(shè)備。
在我的例子中,是 ??enp1s0?
?,所以我的輸出將是如下:
sudo iftop -i enp1s0
14、tcpdump
??tcpdump?
? 是一個(gè)數(shù)據(jù)包嗅探和分析工具,用于捕獲、分析和過(guò)濾網(wǎng)絡(luò)流量。它也可以作為一個(gè)安全工具使用,因?yàn)樗鼘⒉东@的數(shù)據(jù)保存在可以 ??通過(guò) Wireshark 訪(fǎng)問(wèn)?? 的 pcap 文件中。
像許多其他工具一樣,??tcpdump?
? 沒(méi)有預(yù)裝,如果你是在Debian/Ubuntu 上,你可以按照下面的命令進(jìn)行安裝:
一旦你完成了安裝,你可以獲得當(dāng)前接口的捕獲數(shù)據(jù)包,如下所示:
sudo tcpdump
那么如何將捕獲的數(shù)據(jù)包保存在 pcap 文件中呢?讓我告訴你怎么做:
sudo tcpdump -w
要訪(fǎng)問(wèn)保存的文件,你需要使用 ??-r?
? 選項(xiàng)加上文件名。
sudo tcpdump -r filename
15、ethtool
顧名思義,??ethtool?
? 工具主要涉及管理以太網(wǎng)設(shè)備。使用這個(gè)工具,你可以調(diào)整網(wǎng)卡速度、自動(dòng)協(xié)商特性等。
但它可能沒(méi)有預(yù)裝在你的機(jī)器上,可以通過(guò)利用給出的命令安裝在 Debian/Ubuntu 機(jī)器上:
要獲取接口的詳細(xì)信息,你只需在命令后面加上設(shè)備名稱(chēng),如下所示:
sudo ethtool enp1s0
16、nmcli
作為一個(gè)簡(jiǎn)單而強(qiáng)大的網(wǎng)絡(luò)故障排除工具,它是任何系統(tǒng)管理員在排除網(wǎng)絡(luò)故障時(shí)首先使用的工具之一,也可以在腳本中使用。
你可以使用 ??nmcli?
? 命令來(lái)監(jiān)控設(shè)備的連接狀態(tài):
nmcli dev status
當(dāng)不使用任何選項(xiàng)時(shí),它將帶來(lái)你系統(tǒng)中所有現(xiàn)有設(shè)備的信息:
nmcli
17、nmap
??nmap?
? 是一個(gè)探索和審計(jì)網(wǎng)絡(luò)安全的工具。它經(jīng)常被黑客和安全愛(ài)好者使用,因?yàn)樗试S你獲得網(wǎng)絡(luò)的實(shí)時(shí)信息、連接到你的網(wǎng)絡(luò)的 IP 的詳細(xì)信息、端口掃描,以及更多。
要在基于 Debian/Ubuntu 的發(fā)行版上安裝 ??nmap?
? 工具,請(qǐng)使用給出的命令:
讓我們開(kāi)始掃描主機(jī)名:
nmap itsfoss.com
18、bmon
??bmon?
? 是一個(gè)開(kāi)源的工具,用于監(jiān)測(cè)實(shí)時(shí)帶寬和調(diào)試問(wèn)題,以更人性化的方式呈現(xiàn)統(tǒng)計(jì)數(shù)據(jù)。這個(gè)工具最好的部分是圖形顯示,甚至可以在 HTML 中得到你的輸出!
安裝非常簡(jiǎn)單,因?yàn)?nbsp;??bmon?
? 存在于流行的 Linux 發(fā)行版的默認(rèn)倉(cāng)庫(kù)中,這也包括 Debian/Ubuntu。
現(xiàn)在,你只需要啟動(dòng) ??bmon?
?,就可以用眼睛愉快地監(jiān)控帶寬了:
bmon
19、firewalld
管理防火墻可以說(shuō)是網(wǎng)絡(luò)安全的核心部分,這個(gè)工具允許你添加、配置和刪除防火墻的規(guī)則。
但是 firewalld 需要手動(dòng)安裝,如果你使用的是基于 Debian/Ubuntu 的發(fā)行版,你可以利用給出的命令進(jìn)行安裝:
例如,我將向你展示,如何為公共區(qū)域永久地打開(kāi) 80 端口:
sudo firewall-cmd --permanent --zone=public
同樣,要?jiǎng)h除最近添加的規(guī)則,你必須使用 ??-remove?
? 選項(xiàng),如下所示:
sudo firewall-cmd --zone=public --remove
20、iperf
??iperf?
? 是一個(gè)用 C 語(yǔ)言編寫(xiě)的開(kāi)源工具,允許用戶(hù)進(jìn)行網(wǎng)絡(luò)性能測(cè)量和調(diào)整。
這個(gè)工具存在于 Debian/Ubuntu 的默認(rèn)資源庫(kù)中,可以通過(guò)給出的命令安裝:
要開(kāi)始監(jiān)控網(wǎng)絡(luò),用戶(hù)必須通過(guò)給出的命令在服務(wù)器上啟動(dòng)這個(gè)客戶(hù)端:
其中,??-s?
? 選項(xiàng)表示服務(wù)器,??-u?
? 選項(xiàng)為 UDP 格式。
iperf -s -u
現(xiàn)在,你可以通過(guò)提供首選協(xié)議的 IP 地址有效載荷連接到你的服務(wù)器(使用 ??-c?
? 選項(xiàng)表示客戶(hù)端)。在這個(gè)例子中,我選擇了 UDP(使用 ??-u?
? 選項(xiàng)),有效載荷為 100:
iperf -c
21、speedtest-cli
顧名思義,這是 ??speedtest.net?? 網(wǎng)站的 CLI 工具。這個(gè)在 Apache 2.0 許可下發(fā)布的開(kāi)源工具,當(dāng)你想從 CLI 獲得一個(gè)可靠的 ??檢查網(wǎng)速?? 的來(lái)源時(shí),會(huì)有很大幫助。
安裝非常簡(jiǎn)單,如果你是在 Debian/Ubuntu 上,可以利用給出的命令輕松安裝:
一旦你完成了安裝部分,你只需要使用一行命令即可測(cè)試你的速度:
speedtest-cli
22、vnstat
??vnstat?
? 工具主要被系統(tǒng)管理員用來(lái)監(jiān)控網(wǎng)絡(luò)流量和帶寬消耗(大部分情況下),因?yàn)檫@個(gè)工具可以監(jiān)控你系統(tǒng)的網(wǎng)絡(luò)接口的流量。
和其他網(wǎng)絡(luò)工具一樣,你可以在默認(rèn)的軟件庫(kù)中找到 ??vnstat?
?,如果你在 Debian/Ubuntu 上,可以通過(guò)給出的命令進(jìn)行安裝:
你可以使用 ??vnstat?
? 命令,不需要任何選項(xiàng),它將帶來(lái)你系統(tǒng)所有可用接口的基本統(tǒng)計(jì)信息:
vnstat
對(duì)于實(shí)時(shí)監(jiān)控,你可以將 ??vnstat?
? 命令與 ??-l?
? 選項(xiàng)配對(duì)。
vnstat -l
一個(gè)長(zhǎng)長(zhǎng)的清單,對(duì)嗎?
這個(gè)匯編連冰山一角都算不上,只是分享了每個(gè)命令的目的和基本例子,因?yàn)樵黾痈嗟拿顣?huì)使這個(gè)清單變得更長(zhǎng)。
流行的但 ??已廢棄的 Linux 命令??,如 ??ipconfig?
?,已被故意排除在這個(gè)列表之外。
如果你很好奇,你可以學(xué)習(xí) ??如何最大限度地利用手冊(cè)頁(yè)??,這將教會(huì)你如何使用任何實(shí)用程序的最大潛力。