解決 Linux 中的網絡問題

解決 Linux 中的網絡問題

在本文中,我們將解釋如何使用 tcpdump 命令解決 Linux 中的網絡問題。

tcpdump 是一個靈活、強大的命令行數據包分析器;和 libpcap,一個用於網絡流量捕獲的可移植 C/C++ 庫。tcpdump 是一個強大且多功能的工具,包括許多選項和過濾器,可用於各種情況。由於它是一個命令行工具,因此非常適合在沒有 GUI 的遠程服務器或設備中運行,以收集可以稍後分析的數據。它也可以在後台啟動或使用 cron 等工具作為預定作業啟動。

讓我們開始安裝過程。

1.安裝tcpdump

如果您的系統上尚未安裝 tcpdump,您可以使用以下命令進行安裝:

對於基於 CentOS 或 Red Hat Enterprise Linux 的系統:

# dnf install tcpdump -y

對於基於 Ubuntu 的系統:

# apt-get install tcpdump -y

2. 驗證安裝

要驗證安裝,請使用以下命令:

# which tcpdump

輸出:

/usr/sbin/tcpdump

使用 tcpdump 捕獲數據包

在捕獲數據包之前,使用以下命令檢查網絡接口:

# tcpdump -D

它將顯示所有可用的網絡接口。

現在,讓我們開始使用以下命令捕獲一些數據包:

# tcpdump --interface any

Tcpdump 繼續捕獲數據包,直到它收到中斷信號。您可以按 Ctrl+C 中斷捕獲。要限制捕獲的數據包數量並停止 tcpdump,請使用 -c(用於計數)選項:

# tcpdump -i any -c 10

禁用名稱解析

排除網絡問題,使用IP地址和端口號通常更容易;通過使用選項 -n 和端口解析與 -nn 禁用名稱解析:

# tcpdump -i any -c5 -nn

上面的命令將捕獲輸出,現在顯示 IP 地址和端口號。

過濾數據包

tcpdump 最強大的功能之一是它能夠使用各種參數過濾捕獲的數據包,例如源和目標 IP 地址、端口、協議等。讓我們看一些最常見的。

要僅捕獲 ICMP 數據包,請使用以下命令:

# tcpdump -i any -c10 icmp

使用主機過濾器將捕獲限制為僅與特定主機相關的數據包:

# tcpdump -i any -c5 -nn host 192.168.0.12

上面的命令將只捕獲和顯示進出主機 192.168.0.12 的數據包。

要根據所需的服務或端口過濾數據包,請使用端口過濾器。例如,使用以下命令捕獲與 Web (HTTP) 服務相關的數據包:

# tcpdump -i any -c10 -nn port 80

根據源或目標 IP 地址或主機名過濾數據包。例如,從主機 192.168.0.12 捕獲數據包:

# tcpdump -i any -c10 -nn src 192.168.0.12

將捕獲保存到文件中

要將數據包保存到文件而不是在屏幕上顯示,請使用選項 -w(用於寫入):

# tcpdump -i any -c10 -nn -w webserver.pcap port 80

例如,上面的命令將允許在夜間以批處理模式捕獲數據包,並在早上驗證結果。當有太多數據包需要分析時,它也有幫助,因為實時捕獲可能發生得太快。

更多示例命令

打印涉及非本地主機的每個 TCP 會話的開始和結束數據包(SYN 和 FIN 數據包)。

# tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

打印設置了標誌 RST 和 ACK 的 TCP 數據包。(即只選擇flags字段中的RST和ACK標誌,如果結果是“RST和ACK都設置”,則匹配)

# tcpdump 'tcp[tcpflags] & (tcp-rst|tcp-ack) == (tcp-rst|tcp-ack)'

打印所有進出端口 80 的 IPv4 HTTP 數據包,即僅打印包含數據的數據包,而不是,例如,SYN 和 FIN 數據包以及僅 ACK 數據包。(IPv6 留給讀者作為練習。)

# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<2)) -="" ((tcp[12]&0xf0)="">>2)) != 0)'

要打印通過網關 snup 發送的長度超過 576 字節的 IP 數據包:

# tcpdump 'gateway snup and ip[2:2] > 576'

要打印不是通過以太網廣播或多播發送的 IP 廣播或多播數據包:

# tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

要打印所有不是回顯請求/回复的 ICMP 數據包(即,不是 ping 數據包):

# tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

使用以下命令檢查手冊頁:

# man tcpdump

在本文中,我們已經看到瞭如何使用 tcpump 命令在 Linux 中解決網絡問題。

獲得高性能雙 E5 系列專用服務器和便宜的 KVM VPS。


如何在 CentOS 7 上安裝和配置 CSF(ConfigServer 安全和防火牆)

如何在 CentOS 7 上安裝和配置 CSF(ConfigServer 安全和防火牆)

ConfigServer Security & Firewall(簡稱csf)是一種狀態包檢測(SPI)防火牆。學習在 CentOS 7 上安裝和配置 CSF

如何在 CentOS 上安裝 R1​​Soft 備份代理

如何在 CentOS 上安裝 R1​​Soft 備份代理

學習在 CentOS 上安裝 R1​​Soft Backup Agent 並對其進行配置。R1Soft 服務器備份管理器為服務提供商提供了一個靈活的、服務器友好的解決方案。

如何修改 CloudLinux LVE 限制

如何修改 CloudLinux LVE 限制

在本文中,我們解釋瞭如何修改 CloudLinux LVE 限制。所以,讓我們開始吧。可以使用 LVE Manager 更改 CloudLinux LVE 限制。

如何更改端口的 SSH Linux 服務器

如何更改端口的 SSH Linux 服務器

要更改 Linux 服務器的 SSH 端口,您需要通過 SSH 登錄服務器並修改 SSH 配置文件。

如何在 CentOS 上安裝 Centova Cast

如何在 CentOS 上安裝 Centova Cast

Centova Cast 是領先的互聯網廣播流管理平台,為流媒體託管提供商提供廣泛的洞察力和控制。 Centova Cast

如何在您的郵件服務器上設置郵件中繼

如何在您的郵件服務器上設置郵件中繼

您可以使用以下電子郵件中繼設置來解決電子郵件發送問題。

如何在 Ubuntu 18.04 中安裝 Apache、MariaDB、PHP 和 phpMyAdmin

如何在 Ubuntu 18.04 中安裝 Apache、MariaDB、PHP 和 phpMyAdmin

我們將學習在 Ubuntu 18.04 服務器中安裝 Apache MariaDB PHP 和 PHPMyAdmin。Apache、MySQL/MariaDB 和 PHP 由包組成。它被稱為燈

學習 Linux 中的基本用戶管理

學習 Linux 中的基本用戶管理

您想在 Linux 中添加、修改或刪除用戶嗎?這是適合您的完美文章。

學習 Linux 中的基本組管理

學習 Linux 中的基本組管理

了解有關 Linux 中組管理的更多信息。如何在Linux中添加組,修改組和刪除組,添加成員。創建一個新組,使用 groupadd 命令。

學習在 CentOS 7 上安裝 Fail2ban

學習在 CentOS 7 上安裝 Fail2ban

Fail2ban 對於保護 SSH 連接非常有用。現在您應該可以在 centos7 上安裝和配置 fail2ban,為服務器添加額外的安全層