今天浩道跟大家分享linux網絡運維中常見的命令,掌握好這些命令,在排查故障時將會游刃有余!
tcpdump和ethereal可以用來獲取和分析網絡通訊活動,他們都是使用libpcap庫來捕獲網絡封包的。
在混雜模式下他們可以監控網絡適配器的所有通訊活動并捕獲網卡所接收的所有幀。
要想設置網絡接口為混雜模式并執行這些命令來捕獲所有的網絡封包,需要具有超級用戶的權限。
你可以使用這些工具來探究網絡相關問題。你可以發現TCP/IP重發、窗口大小的縮放、名字解析的問題、網絡配置錯誤等。
注意這些工具只能監控網絡適配器所接收到的幀,并不能監控到整個網絡的通訊情況。
參數介紹:
-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-wresult.cap
03、抓取所有的經過eth0網卡的網絡包,并存到 result.cap 文件中。
tcpdump-ieth0-wresult.cap
04、抓取源地址是192.168.1.100的包,并將結果保存到 result.cap 文件中。
tcpdumpsrchost192.168.1.100-wresult.cap
05、抓取地址包含是192.168.1.100的包,并將結果保存到 result.cap 文件中。
tcpdumphost192.168.1.100-wresult.cap
06、抓取目的地址包含是192.168.1.100的包,并將結果保存到 result.cap 文件中。
tcpdumpdesthost192.168.1.100-wresult.cap
07、抓取主機地址為192.168.1.100的數據包
tcpdump-ieth0-vnnhost192.168.1.100
08、抓取包含192.168.1.0/24網段的數據包
tcpdump-ieth0-vnnnet192.168.1.0/24
09、抓取網卡eth0上所有包含端口22的數據包
tcpdump-ieth0-vnnport22
10、抓取指定協議格式的數據包,協議格式可以是「udp,icmp,arp,ip」中的任何一種,例如以下命令:
tcpdumpudp-ieth0-vnn
11、抓取經過eth0網卡的源ip是192.168.1.100數據包,src參數表示源。
tcpdump-ieth0-vnnsrchost192.168.1.100
12、抓取經過eth0網卡目的ip是192.168.1.100數據包,dst參數表示目的。
tcpdump-ieth0-vnndsthost192.168.1.100
13、抓取源端口是22的數據包
tcpdump-ieth0-vnnsrcport22
14、抓取源ip是192.168.1.100且目的ip端口是22的數據包
tcpdump-ieth0-vnnsrchost192.168.1.100anddstport22
15、抓取源ip是192.168.1.100或者包含端口是22的數據包
tcpdump-ieth0-vnnsrchost192.168.1.100orport22
16、抓取源ip是192.168.1.100且端口不是22的數據包
tcpdump-ieth0-vnnsrchost192.168.1.100andnotport22
17、抓取源ip是192.168.1.100且目的端口是22,或源ip是192.168.1.102且目的端口是80的數據包。
tcpdump-ieth0-vnn(srchost192.168.1.100anddstport22)or(srchost192.168.1.102anddstport80)
18、把抓取的數據包記錄存到/tmp/result文件中,當抓取100個數據包后就退出程序。
tcpdump–ieth0-vnn-w/tmp/result-c100
19、從/tmp/result記錄中讀取tcp協議的數據包
tcpdump-ieth0tcp-vnn-r/tmp/result
20、想要截獲所有192.168.1.100的主機收到的和發出的所有的數據包:
tcpdumphost192.168.1.100
21、如果想要獲取主機192.168.1.100除了和主機192.168.1.101之外所有主機通信的ip包,使用命令:
tcpdumpiphost192.168.1.100and!192.168.1.101
22、如果想要獲取主機192.168.1.100接收或發出的 telnet 包,使用如下命令:
tcpdumptcpport23host192.168.1.100
#查看http請求的header
tcpdump-s1024-l-A-nhost192.168.9.56
tcpdump-s1024-l-Asrc192.168.9.56ordst192.168.9.56
sudotcpdump-A-s1492dstport80
#本地網絡中IP地址為192.168.0.5的主機現在與外界通信的情況
sudotcpdump-ieth0srchost192.168.0.5
#查看網卡eth0的http請求的tcp包
tcpdump-ieth0porthttp
tcpdump-ieth0porthttporportsmtporportimaporportpop3-l-A|egrep-i'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass|user'
#查看tcp,upd,icmp非ssh的包
tcpdump-n-vtcporudporicmpandnotport22
#查看http請求的request包
sudotcpdump-ieth0port80-w-
#過濾http響應的gethost頭信息
sudotcpdump-ien1-n-s0-w-|grep-a-o-E"GET/.*|Host:.*"
#DNS查詢請求響應包
sudotcpdump-ien0'udpport53'
#nmap-sP指定使用Pingecho進行掃描/24查看目的網絡有多少主機處于運行狀態
nmap-sP192.168.0.1
nmap-sP192.168.0.0/24
nmap-Owww.baidu.com
#Netstat主要用于Linux/Unix主機察看自身的網絡狀況,如開啟的端口、在為哪些用戶服務以及服務的狀態
netstat-a
netstat-nlp
#netcat掃描機器開放的端口
nc-z-v-n172.31.100.721-25
#netcat 命令會連接開放端口21并且打印運行在這個端口上服務的banner信息。
nc-v172.31.100.721
#輸出網絡的路由表
route
#顯示結果包括服務器已經運行了多長時間,有多少登陸用戶和對服務器性能的總體評估(load average)。
uptime
#監控eth1的網卡的流量
iftop-ieth1
#以位元組(bytes即字節)為單位顯示流量(預設是位元bits):
iftop-B
#直接顯示IP,不進行DNS反解:
iftop-n
#直接顯示連接埠編號,不顯示服務名稱:
iftop-N
#顯示某個網段進出封包流量
iftop-F192.168.1.0/24or192.168.1.0/255.255.255.0
#網絡流量實時監控工具之nload,查看網卡eth0的流量
nload-neth0
#查看各個網卡的流量
nload-h
#IPTraf是一個網絡監控工具,功能比nload更強大,可以監控所有的流量,IP流量,按協議分的流量,還可以設置過濾器
iptraf
#查看網絡接口當前配置與接口命名:
ifconfig
#打開(up)或關閉(down)適配器
ifconfig<網絡名>
#為適配器分配IP地址:
ifconfig<網絡名>
#為適配器分配第二個IP地址:
ifconfig<網絡名:實例數>
#顯示某個網絡適配器的驅動信息,適用于查詢軟件兼容性的情況:
ethtool-ieth0
#顯示網絡數據:
ethtool-S
#設置適配器連接速度(Mbps)
ethtoolspeed<10|100|1000>
#iwconfig 查基本的Wi-Fi網絡設置,如SSID、channel和加密等細節。此外還可以修改一些高級設置,包括接收敏感度,RTS/CTS,碎片,以及重試數
#顯示當前無線設置,包括接口名稱:
iwconfig
#設置ESSID(擴展服務設置識別器)或網絡名:
iwconfig<接口名>essid<網絡名>
#wget
wget-S--spiderhttp://osswin.sourceforge.net/2>&1|grepMod
#查看mac地址
cat/sys/class/net/*/address
#查看eth0的ip
ifconfigeth0|awk'/inetaddr/{split($2,A,":");printA[2]}'
#curl查看頁面對應的domailname
curl-shttp://en.m.wikipedia.org/wiki/List_of_Internet_top-level_domains|sed-n'/<trvalign="top">/{s/<[^>]*>//g;p}'
#talnet
telnetlocalhost6666
#查看所有的網絡接口
awk'{print$1}'/proc/net/dev|grep:|sed"s/:.*//g"
#查看DNSserver版本好
nslookup-q=txt-class=CHAOSversion.bindNS.PHX5.NEARLYFREESPEECH.NET
審核編輯 :李倩
-
適配器
+關注
關注
8文章
1932瀏覽量
67918 -
Linux
+關注
關注
87文章
11229瀏覽量
208928 -
網絡通訊
+關注
關注
0文章
74瀏覽量
11249
原文標題:掌握這些linux網絡排查命令,故障排查不求人!
文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論