網絡排錯與網絡命令的理解ping-traceroute-host(nslookup)-tcpdump獲取對方的mac

 

1.  虛擬機中NAT架構的網絡結構中, 虛擬網卡VMnet8(192.168.134.1)是鏈接宿主主機。linux

  用虛擬網段中主機(192.168.134.133),ping  VMnet8 爲何沒有響應,說明此網卡不在虛擬網段???正則表達式

  NAT虛擬網段中:shell

  (1)NAT服務器,DNS服務器的IP,  A:192.168.134.2(充當網關,要進行網絡地址轉換)windows

  (2)虛擬主機IP,          B:192.168.134.133服務器

  (3)與宿主主機通訊的虛擬網卡,  C:192.168.134.1網絡

  宿主主機IP架構

  (1)宿主主機IP:   D
less

  測試:tcp

  宿主環境測試:分佈式

  D ping C,B  成功!

  D ping A ,   失敗!

  NAT局域網測試

  B ping D, A 成功

    B ping C ,   失敗!

  


 

-------ping命令------

  Win: ping

  Linux: ping

  在網絡中Ping 是一個十分好用的TCP/IP工具。它主要的功能是用來檢測網絡的連通狀況和分析網絡速度。

  檢測兩臺主機聯通性的判斷。

  做爲一個生活在網絡上的管理員或者黑客來講,ping命令是第一個必須掌握的DOS命令,它所利用的原理是這樣的:網絡上的機器都有惟一肯定的IP地址, 咱們給目標IP地址發送一個數據包,對方就要返回一個一樣大小的數據包,根據返回的數據包咱們能夠肯定目標主機的存在,能夠初步判斷目標主機的操做系統 等。

  ping /? 例出ping 如下是PING的一些參數

  -n 定義向目標IP發送數據包的次數,默認爲3次。若是網絡速度比較慢,3次對咱們來講也浪費了很多時間,由於如今咱們的目的僅僅是判斷目標IP是否存在,那 麼就定義爲一次吧。說明一下,若是-t 參數和 -n參數一塊兒使用,ping命令就以放在後面的參數爲標準,好比「ping IP -t -n 3」,雖然使用了-t參數,但並非一直ping下去,而是隻ping 3次。另外,ping命令不必定非得ping IP,也能夠直接ping主機域名,這樣就能夠獲得主機的IP。

  -a 將地址解析爲計算機名。

 

  -n count 發送 count 指定的 ECHO 數據包數。默認值爲 4。

 

  測試網絡的設備:

1. ping本網段的網關/路由器的IP地址;

  Ping本網網關或本網IP地址,這樣的是爲了檢查硬件設備是否有問題,也能夠檢查本機與本地網絡鏈接是否正常;(在非局域網中這一步驟能夠忽略)

2. ping中心的中心交換機的IP地址;

3. ping中心的主頁服務器的域名「www.cc.shu.edu.cn」

4. Ping 本身的主機

  (1)127.0.0.1      回送地址Ping回送地址是爲了檢查本地的TCP/IP協議有沒有設置好

  (2)本身主機的IP  這樣是爲了檢查本機的IP地址是否設置有誤

5. Ping遠程IP地址,這主要是檢查本網或本機與外部的鏈接是否正常

 

 對Ping後返回信息的分析

  

1.Request timed out

(1) 對方已關機,或者網絡上根本沒有這個地址:好比在上圖中主機A中PING 192.168.0.7 ,或者主機B關機了,在主機A中PING 192.168.0.5 都會獲得超時的信息。

 一個本網段中不存在的IP,實例。

(2)對方與本身不在同一網段內,經過路由也沒法找到對方,但有時對方確實是存在的,固然不存在也是返回超時的信息。

(3)對方確實存在,但設置了ICMP數據包過濾(好比防火牆設置)。

  怎樣知道對方是存在,仍是不存在呢,能夠用帶參數 -a 的Ping命令探測對方,若是能獲得對方的NETBIOS名稱,則說明對方是存在的,是有防火牆設置,若是得不到,多半是對方不存在或關機,或不在同一網段內。

(4)錯誤設置IP地址

正常狀況下,一臺主機應該有一個網卡,一個IP地址,或多個網卡,多個IP地址(這些地址必定要處於不 同的IP子網)。但若是一臺電腦的「撥號網絡適配器」(至關於一塊軟網卡)的TCP/IP設置中,設置了一個與網卡IP地址處於同一子網的IP地址,這 樣,在IP層協議看來,這臺主機就有兩個不一樣的接口處於同一網段內。當從這臺主機Ping其餘的機器時,會存在這樣的問題:

A.主機不知道將數據包發到哪一個網絡接口,由於有兩個網絡接口都鏈接在同一網段。

B.主機不知道用哪一個地址做爲數據包的源地址。所以,從這臺主機去Ping其餘機器,IP層協議會沒法 處理,超時後,Ping 就會給出一個「超時無應答」的錯誤信息提示。但從其餘主機Ping這臺主機時,請求包從特定的網卡來,ICMP只須簡單地將目的、源地址互換,並更改一些 標誌便可,ICMP應答包能順利發出,其餘主機也就能成功Ping通這臺機器了。

2.Destination host Unreachable

(1) 對方與本身不在同一網段內,而本身又未設置默認的路由,好比上例中A機中不設定默認的路由,運行Ping 192.168.0.4就會出現「Destination host Unreachable」。

(2)或者網絡上根本沒有這個地址:好比在上圖中主機A中PING 192.168.0.7

  

(3)網線出了故障

  這裏要說明一下「destination host unreachable」和 「time out」的區別,若是所通過的路由器的路由表中具備到達目標的路由,而目標由於其餘緣由不可到達,這時候會出現「time out」,若是路由表中連到達目標的路由都沒有,那就會出現「destination host unreachable」。

3.Bad IP address

這個信息表示您可能沒有鏈接到DNS服務器,因此沒法解析這個IP地址,也多是IP地址不存在。

4. Unknown host——不知名主機

  這種出錯信息的意思是,該遠程主機的名字不能被域名服務器(DNS)轉換成IP地址

  (1)故障緣由多是域名服務器有故障

  (2)或者其名字不正確

  (3)或者網絡管理員的系統與遠程主機之間的通訊線路有故障。


-------Traceroute命令------

 Win: Tracert

 Linux: Traceroute

  Tracert(跟蹤路由)是路由跟蹤實用程序,用於肯定 IP 數據報訪問目標所採起的路徑。  

  通 過Traceroute咱們能夠知道信息從你的計算機到互聯網另外一端的主機是走的什麼路徑。固然每次數據包由某一一樣的出發點(source)到達某一同 樣的目的地(destination)走的路徑可能會不同,但基本上來講大部分時候所走的路由是相同的。

  UNIX系統中,咱們稱之爲 Traceroute,MS Windows中爲Tracert。

Tracert 工做原理

經過向目標發送不一樣 IP 生存時間 (TTL) 值的「Internet 控制消息協議 (ICMP)」迴應數據包,Tracert 診斷程序肯定到目標所採起的路由。要求路徑上的每一個路由器在轉發數據包以前至少將數據包上的 TTL 遞減 1。數據包上的 TTL 減爲 0 時,路由器應該將「ICMP 已超時」的消息發回源系統。

  Traceroute經過發送小的數據包到目的設備直到其返回,來測量其須要多長時間。一條路徑上的每一個設備Traceroute要測3次。

  輸出結果中包 括:

  (1)每次測試的時間(ms)  

  (2)設備的名稱(若有的話)

  (3)其IP地址。

windows之tracert

  tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

參數
-d
指定不對計算機名解析地址(直接返回的全是IP),不然,須要檢索是否有這個IP對應的域名,而後顯示域名+IP
-h maximum_hops
指定查找目標的跳轉的最大數目。
-jcomputer-list
指定在 computer-list 中鬆散源路由。
-w timeout
等待由 timeout 對每一個應答指定的毫秒數。
target_name
目標1. 主機域名(2. IP)。

  

說明:

(1)從返回的IP特徵能夠斷定,本次的「路由追蹤」通過了那些網段。且一共通過了20個節點到達目的IP。

(2)中間這三列,單位是ms,是表示咱們鏈接到每一個路由節點的速度  返回速度和  屢次連接反饋的平均值

(3)後面的IP,就是每一個路由(路由器)節點對應的IP

  若是在測試的時候,大量的都是*和返回超時,那就說明這個IP,在各個路由節點都有問題。

  其中帶有星號(*)的信息表示該次ICMP包返回時間超時。

(4)記錄按序列號從1開始,每一個紀錄就是一跳 ,每跳錶示一個網關

linux的traceroute

  traceroute[參數][主機]

  具體參數格式:traceroute [-dFlnrvx] [-f<存活數值>][-g<網關>...][-i<網絡界面>][-m<存活數值>][-p< 通訊端口>][-s<來源地址>][-t<服務類型>][-w<超時秒數>][主機名稱或IP地址][數據包 大小]

-d 使用Socket層級的排錯功能。

-f 設置第一個檢測數據包的存活數值TTL的大小。

-F 設置勿離斷位。

-g 設置來源路由網關,最多可設置8個。

-i 使用指定的網絡界面送出數據包。

-I 使用ICMP迴應取代UDP資料信息。

-m 設置檢測數據包的最大存活數值TTL的大小。

-n 直接使用IP地址而非主機名稱。顯示IP地址,不查主機名

-p 設置UDP傳輸協議的通訊端口。

-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。

-s 設置本地主機送出數據包的IP地址。

-t 設置檢測數據包的TOS數值。

-v 詳細顯示指令的執行過程。

-w 設置等待遠端主機回報的時間。

-x 開啓或關閉數據包的正確性檢驗。

  NAT局域網中,主機到宿主主機的鏈路。能夠看到是從NAT服務器IP中進行路由轉換除去的,可是後面通過防火牆,因此出現了***

(1)有時咱們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的狀況,可能是防火牆封掉了ICMP的返回信息,因此咱們得不到什麼相關的數據包返回數據。

(2)有時咱們在某一網關處延時比較長,有多是某臺網關比較阻塞,也多是物理設備自己的緣由。固然若是某臺DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您能夠加-n 參數來避免DNS解析,以IP格式輸出數據。

(3)若是在局域網中的不一樣網段之間,咱們能夠經過traceroute 來排查問題所在,是主機的問題仍是網關的問題。若是咱們經過遠程來訪問某臺服務器遇到問題時,咱們用到traceroute 追蹤數據包所通過的網關


-------host命令------

linux:host

Win: nslookup

  host,經常使用來分析域名的工具。能夠測試域名系統是否正常。

  目前只有linux系統中提供host命令。

1. 追蹤地址

(1)顯示域名的全部iP

  host 域名

  (1)顯示其餘的域名,(2)顯示全部有效的IP,(3)測試一個域名是不是另外一個域名的別名

  

  

(2)要顯示地址爲 202.106.121.66 的主機名

host命令是經常使用的分析域名查詢工具,能夠用來測試域名系統工做是否正常

來自: http://man.linuxde.net/host
host命令是經常使用的分析域名查詢工具,能夠用來測試域名系統工做是否正常。

來自: http://man.linuxde.net/host
host命令是經常使用的分析域名查詢工具,能夠用來測試域名系統工做是否正常。

來自: http://man.linuxde.net/host

Win之nslookup:   name Search -- ns

  Nslookup 是一個監測網絡中DNS服務器是否能正確實現域名解析的命令行工具。它在 Windows NT/2000/XP(在以後的windows系統也均可以用的,好比win7,win8等) 中都可使用,

 

測試Win環境測試域名的地址IP

  

(1)以上結果顯示,正在工做的 DNS 服務器的主機名爲 server20.hust.edu.cn,它的(DNS) IP 地址是202.114.40.242 ,而域名tencetn.com 所對應的 IP 地址爲 180.163.32.150 。域名系統正常。

  若是域名不存在,則顯示:

  

(2)若是一個正確的域名,可是不能解析,如上圖所示

  說明測試主機在目前的網絡中,根本沒有找到可使用的 DNS 服務器。此時,咱們要對整個網絡的連通性做全面的檢測,並檢查DNS服務器是否處於正常工做狀態,採用逐步排錯的方法,找出 DNS 服務不能啓動的根源。

 


 

-------tcpdump抓包命令------

 

linux:tcpdump

TCPdump抓包命令

 

  若是,ping,或者 route printe ,以及 host 沒法檢測網絡古裝,能夠經過「分析數據包」的流向。來分析網絡。

  tcpdump必須使用root的身份啓動。tcpdump是一個用於截取網絡分組,並輸出分組內容的工具。tcpdump憑藉強大的功能和靈活的截取策略,使其成爲類UNIX系統下用於網絡分析和問題排查的首選工具。 tcpdump提供了源代碼,公開了接口,所以具有很強的可擴展性,對於網絡維護和入侵者都是很是有用的工具。

  根據使用者的定義對網絡上的數據包進行截獲的包分析工具。 tcpdump能夠將網絡中傳送的數據包的「頭」徹底截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。

TCPdump命令格式

tcpdump [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ][ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ] [ -T 類型 ] [ -w 文件名 ] [ 表達式 ]

通常咱們的服務器裏邊只有一個網卡,使用tcpdump能夠直接抓取數據包,可是這樣查看太麻煩了,因此都會添加參數來進行獲取的。

(1)參數選項

-a  將 網絡地址廣播地址轉變成名字;
-d  將匹配信息包的代碼以人們可以理解的彙編格式給出;
-dd  將匹配信息包的代碼以 c語言 程序段的格式給出;
-ddd  將匹配信息包的代碼以十進制的形式給出;
-e  在輸出行打印出數據鏈路層的頭部信息;
-f  將外部的Internet地址以數字的形式打印出來;
-l  使標準輸出變爲緩衝行形式;
-n  不把網絡地址轉換成名字;
-nn  直接以IP和Port端口號顯示,不適用主機域名與服務名顯示。
-X  直接列出hex以及ASCII,顯示16進制,以及ASCII數據包的內容,這樣能夠監聽數據包的內容。
-t  在輸出的每一行不打印 時間戳
-v  輸出一個稍微詳細的信息,例如在ip包中能夠包括ttl和服務類型的信息;
-vv  輸出詳細的報文信息;
-c  在收到指定的包的數目後,tcpdump就會中止;
-F  從指定的文件中讀取表達式,忽略其它的表達式;
-i  指定監聽的網絡接口; 本主機;eth0
-r  從指定的文件中讀取包(這包通常經過-w選項產生);
-w  直接將包寫入文件中,並不分析和打印出來;
-T  將監聽到的包直接解釋爲指定的類型的 報文,常見的類型有rpc (遠程過程調用)和snmp(簡單 網絡管理協議;)
(2)表達式
  表達式是一個正則表達式,tcpdump利用它做爲過濾報文的條件,若是一個報文知足表達式的條件,則這個報文將會被捕獲。若是沒有給出任何條件,則網絡上全部的信息包將會被截獲。
  在表達式中通常以下幾種類型的關鍵字:
1. 一種是關於類型的關鍵字,主要包括host,net,port,
  以下,若是沒有指定類型,缺省的類型是host.
  •    host 210.27.48.2,指明 210.27.48.2是一臺主機
  •   net 202.0.0.0 指明202.0.0.0是一個網絡地址  
  •   port 23   指明端口號是23。
2. 第二種是肯定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,這些關鍵字指明瞭傳輸的方向。
  以下,若是沒有指明方向關鍵字,則缺省是src or dst關鍵字。
  •   src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 
  •   dst net 202.0.0.0 指明目的網絡地址是202.0.0.0
3. 第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。
  Fddi指明是在FDDI(分佈式光纖數據接口網絡)上的特定的網絡協議,實際上它是"ether"的別名,fddi和ether具備相似的源地址和目的地址,因此能夠將fddi協議包看成ether的包進行處理和分析。其餘的幾個關鍵字就是指明瞭監聽的包的協議內容。若是沒有指定任何協議,則tcpdump將會
監聽全部協議的信息包。
 
4. 除了這三種類型的關鍵字以外,其餘重要的關鍵字以下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'||';
   這些關鍵字能夠組合起來構成強大的組合條件來知足人們的須要,下面舉幾個例子來
  說明。
(1)想要截獲全部210.27.48.1 的 主機收到的發出的全部的數據包:
#tcpdump host 210.27.48.1
(2) 想要截獲 主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊,使用命令:(在命令行中適用括號時,必定要帶向轉義\
#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 若是想要獲取主機210.27.48.1除了和主機210.27.48.2以外全部主機通訊的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
(4)若是想要獲取主機210.27.48.1接收或發出的telnet包,使用以下命令:
#tcpdump tcp port 23 host 210.27.48.1
(5) 對本機的udp 123 端口進行監視 123 ntp的服務端口
tcpdump udp port 123
(6) 監視指定網絡的數據包
  打印本地主機與Berkeley網絡上的主機之間的全部通訊數據包(nt: ucb-ether, 此處可理解爲'Berkeley網絡'的網絡地址,此表達式最原始的含義可表達爲: 打印網絡地址爲ucb-ether的全部數據包)
tcpdump net ucb-ether
  打印全部經過網關snup(IP)的ftp數據包(注意, 表達式被單引號括起來了, 這能夠防止shell對其中的括號進行錯誤解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
打印全部源地址或目標地址是本地主機的IP數據包(若是本地網絡經過網關連到了另外一網絡, 則另外一網絡並不能算做本地網絡.(nt: 此句翻譯曲折,需補充).localnet 實際使用時要真正替換成本地網絡的名字)
tcpdump ip and not net localnet
(7)我截取本機(192.168.31.147)和主機114.114.114.114之間的數據

tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114

(8)截取所有進入服務器的數據可使用如下的格式

tcpdump -n -i eth0 dst 192.168.31.147

或者服務器有多個IP 可使用參數

tcpdump -n -i eth0 dst 192.168.31.147  or  192.168.31.157

(9)抓取所有進入服務器的TCP數據包使用如下的格式,你們能夠參考下

 tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157 and tcp

從本機出去的數據包

tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157

tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157 and port ! 22 and tcp

  還有更神奇的用法。當咱們使用tcpdump在Router上面監聽明文的傳輸數據時,例如FTP傳輸協議,你以爲會發生什麼問題呢?咱們先在主機端執行 「tcpdump -i lo port 21 -nn –X」,而後再以FTP登陸本機,並輸入帳號與密碼,結果你就經過Tcpdump來hack用戶名密碼:

  以下是在虛擬機NAT架構中主機的網絡分析:

  

  (1)上面:虛擬主機ping(192.168.134.133) ,宿主主機(222.20.109.61)的數據包狀況

  每一次請求,都緊跟着一個回覆報文。

  (2)下面是:虛擬主機ping www.baidu.com執行過程

  1. 宿主主機(192.168.134.133)須要請求一次本網絡中的DNS服務器(192.168.134.2),

  請求與返回報文,獲取域名www.baidu.com 的真實有效的IP,119.75.217.109

  2. 宿主主機(192.168.134.133)請求真實ip(119.75.217.109), 注意須要經過NAT服務器(192.168.134.2)轉發處理。

  133 -> 真實IP  : 這個過程過轉接到NAT服務器,數據包的內容是NAT中與133本機的鏈接信息。

  133-> NAT 02  :這個過程,就是根據上一步的返回,本機133將直接經過NAT進行網絡地址轉換 ,【後續 轉換後地質-> 真實IP,這個過程不會被監聽】

  NAT02 -> 133   : NAT轉換地址後,訪問真實iP的返回內容,轉發給本主機

  經過Seq標誌,能夠繼續 與NAT02通訊過程。重複。

  


 

-------ping ip, arp -n 獲取對方ip的mac地址------

  ping -c 4 ip;

  arp -n ;

  執行上述命令後,便可獲取對方Ip所在的網卡地址,即MAC

 

endl;

相關文章
相關標籤/搜索