網絡通信故障排查命令
5.1 ifconfig 命令
ifconfig 命令是查看當前系統的網卡和IP地址信息的常用命令。包含ifconfig命令的安裝包。
yum install net-tools
查看:
-s
查看精簡列表:
-a
顯示所有的網卡信息:
激活或者禁用網卡:
ifconfig 網卡名 up
ifconfig 網卡名 down
解綁或者綁定網卡:
# 將指定的IP地址綁定到某一個網卡
ifconfig 網卡名 add IP地址
# 從某一個網卡上解綁指定的IP地址
ifconfig 網卡名 del IP地址
5.2 ping 命令
ping命令用於偵測本機到目標主機的網絡通暢度:
使用格式:
ping ip 地址
也可使用域名格式:
ping 域名
5.3 telnet 命令
5.3.1 telnet安裝:
yum install telnet
5.3.2 使用
- 檢測指定的IP地址和端口號的監聽服務是否存在
- telnet ip 地址 端口
- 訪問web服務器(支持HTTP協議)
- telnet 域名 端口
- 訪問郵箱系統(支持SMTP協議 )
5.4 netstat命令
netstat用於查看網絡連接狀態,常見的命令選項如下:
選項 | 說明 |
---|---|
-a | 表示所有選項,不使用該選項時,netstat默認不顯示LISTEN相關選項 |
-t | 表示僅顯示tcp相關選項 |
-u | 僅顯示udp相關選項 |
-n | 不顯示別名,將能顯示數字的全部轉換為數字 |
-l | 僅列出處於監聽(listen)狀態的服務 |
-p | 顯示建立相關鏈接的程序名 |
-r | 顯示路由信息、路由表 |
-e | 顯示擴展信息,列如uid等 |
-s | 按各個協議進行統計(重要) |
-c | 每隔一個固定的時間執行該netstat命令 |
詳細介紹:https://linux.cn/article-2434-1.html
5.5 lsof命令
lsof(list opened filedesciptor,列出已經打開的文件描述符)命令是Linux的擴展命令
5.5.1 lsof命令的基本用法
-
安裝
yum install lsof
5.5.2 lsof命令恢復被刪除的文件
注意使用lsof命令恢復文件時需要注意:如果想成功恢復文件,則使用文件的進程必須處於存活狀態,如果進程已退出或者殺死,就無法用這種方式恢復;使用這種方式恢復的文件后,再次用lsof命令查看時,該文件仍然時delete狀態,雖然能夠手工恢復,但是進程將不會再使用這個恢復的文件。
5.6 nc命令
nc(netcat)命令,用於再排查網絡故障時使用。
常見用途:
- 模擬服務器程序。使用-l 選項(單詞listen的首字母)在某一個IP地址和端口上開啟一個監聽服務,以便讓其他客戶端連接。
- 模擬一個客戶端程序。使用nc命令模擬一個客戶端程序時,直接寫上IP地址(或者域名,nc命令可以自動解析域名)和端口號即可。
- 客戶端:
- 服務器
- 客戶端:
- nc命令不禁可以發送消息還能發送文件:
-
服務端:
nc -l IP地址 端口號 > 接收的文件名
-
客戶端:
nc IP地址 端口號 > 發送的文件名
詳細介紹:https://www.cnblogs.com/machangwei-8/p/10355248.html
-
5.7 tcpdump 命令
tcpdump 是Linux系統下的一個強大的命令,可以將網絡中傳送的數據包完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
- 語法:
tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ -Q|-P in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ expression ]
- 參數介紹:
- -A 以ASCII格式打印出所有分組,並將鏈路層的頭最小化。
- -c 在收到指定的數量的分組后,tcpdump就會停止。
- -C 在將一個原始分組寫入文件之前,檢查文件當前的大小是否超過了參數file_size中指定的大小。如果超過了指定大小,則關閉當前文件,然后在打開一個新的文件。參數 file_size
的單位是兆字節(是1,000,000字節,而不是1,048,576字節)。 - -d 將匹配信息包的代碼以人們能夠理解的匯編格式給出。
- -dd 將匹配信息包的代碼以c語言程序段的格式給出。
- -ddd 將匹配信息包的代碼以十進制的形式給出。
- -D 打印出系統中所有可以用tcpdump截包的網絡接口。
- -e 在輸出行打印出數據鏈路層的頭部信息。
- -E 用spi@ipaddr algo:secret解密那些以addr作為地址,並且包含了安全參數索引值spi的IPsec ESP分組。
- -f 將外部的Internet地址以數字的形式打印出來。
- -F 從指定的文件中讀取表達式,忽略命令行中給出的表達式。
- -i 指定監聽的網絡接口。
- -l 使標准輸出變為緩沖行形式。
- -L 列出網絡接口的已知數據鏈路。
- -m 從文件module中導入SMI MIB模塊定義。該參數可以被使用多次,以導入多個MIB模塊。
- -M 如果tcp報文中存在TCP-MD5選項,則需要用secret作為共享的驗證碼用於驗證TCP-MD5選選項摘要(詳情可參考RFC 2385)。
- -n 不把網絡地址轉換成名字。
- -N 不輸出主機名中的域名部分。例如,link.linux265.com 只輸出link。
- -t 在輸出的每一行不打印時間戳。
- -O 不運行分組分組匹配(packet-matching)代碼優化程序。
- -P 不將網絡接口設置成混雜模式。
- -q 快速輸出。只輸出較少的協議信息。
- -r 從指定的文件中讀取包(這些包一般通過-w選項產生)。
- -S 將tcp的序列號以絕對值形式輸出,而不是相對值。
- -s 從每個分組中讀取最開始的snaplen個字節,而不是默認的68個字節。
- -T 將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc遠程過程調用)和snmp(簡單網絡管理協議;)。
- -t 不在每一行中輸出時間戳。
- -tt 在每一行中輸出非格式化的時間戳。
- -ttt 輸出本行和前面一行之間的時間差。
- -tttt 在每一行中輸出由date處理的默認格式的時間戳。
- -u 輸出未解碼的NFS句柄。
- -v 輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息
- -vv 輸出詳細的報文信息。
- -w 直接將分組寫入文件中,而不是不分析並打印出來。
- -x 以16進制數形式顯示每一個報文 (去掉鏈路層報頭) . 可以顯示較小的完整報文, 否則只顯示snaplen個字節.
- -xx 以16進制數形式顯示每一個報文(包含鏈路層包頭)。
- -X 以16進制和ASCII碼形式顯示每個報文(去掉鏈路層報頭)。
- -XX 以16進制和ASCII嗎形式顯示每個報文(包含鏈路層報頭)。
- -y 設置tcpdump 捕獲數據鏈路層協議類型
- -Z 使tcpdump 放棄自己的超級權限(如果以root用戶啟動tcpdump, tcpdump將會有超級用戶權限), 並把當前tcpdump的用戶ID設置為user, 組ID設置為user首要所屬組的ID
-
使用實例:
01、抓取所有網絡包,並在terminal中顯示抓取的結果,將包以十六進制的形式顯示。tcpdump
02、抓取所有的網絡包,並存到 result.cap 文件中。
tcpdump -w result.cap
03、抓取所有的經過eth0網卡的網絡包,並存到result.cap 文件中。
tcpdump -i eth0 -w result.cap
04、抓取源地址是192.168.1.100的包,並將結果保存到 result.cap 文件中。
tcpdump src host 192.168.1.100 -w result.cap
05、抓取地址包含是192.168.1.100的包,並將結果保存到 result.cap 文件中。
tcpdump host 192.168.1.100 -w result.cap
06、抓取目的地址包含是192.168.1.100的包,並將結果保存到 result.cap 文件中。
tcpdump dest host 192.168.1.100 -w result.cap
07、抓取主機地址為 192.168.1.100 的數據包
tcpdump -i eth0 -vnn host 192.168.1.100
08、抓取包含192.168.1.0/24網段的數據包
tcpdump -i eth0 -vnn net 192.168.1.0/24
09、抓取網卡eth0上所有包含端口22的數據包
tcpdump -i eth0 -vnn port 22
10、抓取指定協議格式的數據包,協議格式可以是「udp,icmp,arp,ip」中的任何一種,例如以下命令:
tcpdump udp -i eth0 -vnn
11、抓取經過 eth0 網卡的源 ip 是 192.168.1.100 數據包,src參數表示源。
tcpdump -i eth0 -vnn src host 192.168.1.100
12、抓取經過 eth0 網卡目的 ip 是 192.168.1.100 數據包,dst參數表示目的。
tcpdump -i eth0 -vnn dst host 192.168.1.100
13、抓取源端口是22的數據包
tcpdump -i eth0 -vnn src port 22