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