1. 虛擬機中NAT架構的網絡結構中, 虛擬網卡VMnet8(192.168.134.1)是連接宿主主機。
用虛擬網段中主機(192.168.134.133),ping VMnet8 為什么沒有響應,說明此網卡不在虛擬網段???
NAT虛擬網段中:
(1)NAT服務器,DNS服務器的IP, A:192.168.134.2(充當網關,要進行網絡地址轉換)
(2)虛擬主機IP, B:192.168.134.133
(3)與宿主主機通信的虛擬網卡, C:192.168.134.1
宿主主機IP
(1)宿主主機IP: D
測試:
宿主環境測試:
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。
通過向目標發送不同 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 的主機名
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)參數選項
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出;-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;