-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
tcpdump指定源ip和目的ip(tcp指定源地址)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于tcpdump指定源ip和目的ip的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、怎么在虛擬機用tcpdump抓宿主機的包?
tcpdump是于網(wǎng)卡上進行抓包,所以只能抓到本地網(wǎng)卡上的數(shù)據(jù)包
可以指定目標(biāo)IP是宿主機的IP 也就虛擬機和宿主機之間的數(shù)據(jù)包
如果是要抓宿主機網(wǎng)卡的上包是做不到的,除非宿主機開了ssh Telnet等遠程手段,于虛擬機上在遠程回主機 在抓包
二、關(guān)于linux tcpdump命令
用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者的定義對網(wǎng)絡(luò)上的數(shù)據(jù)包進行截獲的包分析工具。 tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來提供分析。它支持針對網(wǎng)絡(luò)層、協(xié)議、主機、網(wǎng)絡(luò)或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。
實用命令實例
默認啟動
tcpdump
普通情況下,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡(luò)接口上所有流過的數(shù)據(jù)包。
監(jiān)視指定網(wǎng)絡(luò)接口的數(shù)據(jù)包
tcpdump -i eth1
如果不指定網(wǎng)卡,默認tcpdump只會監(jiān)視第一個網(wǎng)絡(luò)接口,一般是eth0,下面的例子都沒有指定網(wǎng)絡(luò)接口?!?/p>
監(jiān)視指定主機的數(shù)據(jù)包
打印所有進入或離開sundown的數(shù)據(jù)包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發(fā)出的所有的數(shù)據(jù)包
tcpdump host 210.27.48.1
打印helios 與 hot 或者與 ace 之間通信的數(shù)據(jù)包
tcpdump host helios and \( hot or ace \)
截獲主機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 \)
打印ace與任何其他主機之間通信的IP 數(shù)據(jù)包, 但不包括與helios之間的數(shù)據(jù)包.
tcpdump ip host ace and not helios
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機hostname發(fā)送的所有數(shù)據(jù)
tcpdump -i eth0 src host hostname
監(jiān)視所有送到主機hostname的數(shù)據(jù)包
tcpdump -i eth0 dst host hostname
監(jiān)視指定主機和端口的數(shù)據(jù)包
如果想要獲取主機210.27.48.1接收或發(fā)出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
對本機的udp 123 端口進行監(jiān)視 123 為ntp的服務(wù)端口
tcpdump udp port 123
監(jiān)視指定網(wǎng)絡(luò)的數(shù)據(jù)包
打印本地主機與Berkeley網(wǎng)絡(luò)上的主機之間的所有通信數(shù)據(jù)包(nt: ucb-ether, 此處可理解為'Berkeley網(wǎng)絡(luò)'的網(wǎng)絡(luò)地址,此表達式最原始的含義可表達為: 打印網(wǎng)絡(luò)地址為ucb-ether的所有數(shù)據(jù)包)
tcpdump net ucb-ether
打印所有通過網(wǎng)關(guān)snup的ftp數(shù)據(jù)包(注意, 表達式被單引號括起來了, 這可以防止shell對其中的括號進行錯誤解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
打印所有源地址或目標(biāo)地址是本地主機的IP數(shù)據(jù)包
(如果本地網(wǎng)絡(luò)通過網(wǎng)關(guān)連到了另一網(wǎng)絡(luò), 則另一網(wǎng)絡(luò)并不能算作本地網(wǎng)絡(luò).(nt: 此句翻譯曲折,需補充).localnet 實際使用時要真正替換成本地網(wǎng)絡(luò)的名字)
tcpdump ip and not net localnet
三、20TCP IP 網(wǎng)絡(luò)協(xié)議基礎(chǔ)入門--IP網(wǎng)際協(xié)議
IP 數(shù)據(jù)報:IP 協(xié)議位于網(wǎng)絡(luò)層,它是 TCP/IP 協(xié)議族中最為核心的協(xié)議,所有的 TCP、UDP、ICMP 及 IGMP 數(shù)據(jù)都以 IP 數(shù)據(jù)報格式傳輸。IP 協(xié)議提供的是不可靠、無連接的數(shù)據(jù)報傳送服務(wù)。
我們已經(jīng)知道了 IP 協(xié)議提供的數(shù)據(jù)傳送服務(wù)是不可靠和無連接的,具體表現(xiàn)如下:
不可靠(unreliable):IP 協(xié)議不能保證數(shù)據(jù)報能成功地到達目的地,它僅提供傳輸服務(wù)。當(dāng)發(fā)生某種錯誤時,IP 協(xié)議會丟棄該數(shù)據(jù)報。傳輸?shù)目煽啃匀缮蠈訁f(xié)議來提供。
無連接(connectionless):IP 協(xié)議對每個數(shù)據(jù)報的處理是相互獨立的。這也說明,IP 數(shù)據(jù)報可以不按發(fā)送順序接收。如果發(fā)送方向接收方發(fā)送了兩個連續(xù)的數(shù)據(jù)報(先是 A,然后是 B),每個數(shù)據(jù)報可以選擇不同的路線,因此 B 可能在 A 到達之前先到達。
我們先看一下 IP 數(shù)據(jù)報的格式,其中沒有一個字段是多余的,學(xué)習(xí) IP 協(xié)議就應(yīng)從學(xué)習(xí)它的報文字段意義和作用開始。
如上圖所示,普通的 IP 數(shù)據(jù)報的報頭長度 20 字節(jié)(除非有選項字段),各個部分的作用:
版本號:4 位,用于標(biāo)明 IP 版本號,0100 表示 IPv4,0110 表示 IPv6。目前常見的是 IPv4。
首部長度:4 位,表示 IP 報頭長度,包括選項字段。
服務(wù)類型(TOS):分別有:最小時延、最大吞吐量、最高可靠性、最小花費 4 種服務(wù),如下圖所示。4 個標(biāo)識位只能有一個被置為 1。
總長度:16 位,報頭長度加上數(shù)據(jù)部分長度,便是數(shù)據(jù)報的總長度。IP 數(shù)據(jù)報最長可達 65535 字節(jié)。
標(biāo)識:16 位,接收方根據(jù)分片中的標(biāo)識字段相不相同來判斷這些分片是不是同一個數(shù)據(jù)報的分片,從而進行分片的重組。通常每發(fā)送一份報文它的值就會加 1。
標(biāo)志:3 位,用于標(biāo)識數(shù)據(jù)報是否分片。其中的第 2 位是不分段(DF)位。當(dāng) DF 位被設(shè)置為 1 時,則不對數(shù)據(jù)報進行分段處理;第 3 位是分段(MF)位,除了最后一個分段的 MF 位被設(shè)置為 0 外,其他的分段的 MF 位均設(shè)置為 1。
偏移:13 位,在接收方進行數(shù)據(jù)報重組時用來標(biāo)識分片的順序。
生存時間(TTL):8 位,用于設(shè)置數(shù)據(jù)報可以經(jīng)過的最多的路由器個數(shù)。TTL 的初始值由源主機設(shè)置(通常為 32 或 64),每經(jīng)過一個處理它的路由器,TTL 值減 1。如果一個數(shù)據(jù)報的 TTL 值被減至 0,它將被丟棄。
協(xié)議:8 位,用來標(biāo)識是哪個協(xié)議向 IP 傳送數(shù)據(jù)。ICMP 為 1,IGMP 為 2,TCP 為 6,UDP 為 17,GRE 為 47,ESP 為 50。
首部校驗和:根據(jù) IP 首部計算的校驗和碼。
源 IP 和目的 IP :數(shù)據(jù)報頭還會包含該數(shù)據(jù)報的發(fā)送方 IP 和接收方 IP。
選項:是數(shù)據(jù)報中的一個可變長、可選的信息,不常用,多用于安全、軍事等領(lǐng)域。
了解了上面的理論知識過后,我們可以使用 tcpdump 這個抓包工具來實際看一下。
-n :顯示 IP 地址而非域名地址
-t :不顯示時間戳
-x :以十六進制顯示包內(nèi)內(nèi)容
-c :tcpdump 將在接受到幾個數(shù)據(jù)包后退出
首先看到開頭的 192.168.42.3.3001 > 172.16.2.250.44632 代表的是源 ip 為 192.168.42.3,端口 3001,目的 ip 為 172.16.2.250,端口 44632。
然后看到 0x0000 那行:
協(xié)議版本: 0x4 表示的是協(xié)議版本為 IPv4;
首部長度: 0x5,5*4=20,表示 IP 報頭長度為 20 字節(jié)。一個字節(jié)通常等于 8 位,所以這里可以知道 IP 報頭為 4500 到 2a02;
TOS 服務(wù)類型:0x00,意味著是一般服務(wù);
總長度:0x0136,換算下來為 310 字節(jié);
標(biāo)識:0x172a;
3bit 標(biāo)志 + 13bit 片偏移:0x4000;
生存時間:0x40,值為 64;
協(xié)議:0x06,代表 TCP 協(xié)議;
首部校驗和:0x88e2。
為了便于尋址以及層次化構(gòu)造網(wǎng)絡(luò),每個 IP 地址可被看作是分為兩部分,即網(wǎng)絡(luò)號和主機號。同一個區(qū)域的所有主機有相同的網(wǎng)絡(luò)號(即 IP 地址的前半部分相同),區(qū)域內(nèi)的每個主機(包括路由器)都有一個主機號與其對應(yīng)。
IP 地址被分為 A、B、C、D、E 五類:
A 類給大型網(wǎng)絡(luò)或政府機構(gòu)等;
B 類分配給中型網(wǎng)絡(luò)、跨國企業(yè)等;
C 類分配給小型網(wǎng)絡(luò);
D 類用于多播;
E 類用于實驗。
各類可容納的地址數(shù)目不同,其中我們最常見的為 A、B、C 這三類。
IP 地址用 32 位二進制數(shù)字表示的時候,A、B、C 類 IP 的網(wǎng)絡(luò)號長度分別為 8 位、16 位、24 位:
A 類地址:
A 類地址網(wǎng)絡(luò)號范圍:1.0.0.0---127.0.0.0;
A 類 IP 地址范圍:1.0.0.0---127.255.255.255;
A 類 IP 的私有地址范圍:10.0.0.0---10.255.255.255 (所謂的私有地址就是在互聯(lián)網(wǎng)上不使用,而被用在局域網(wǎng)絡(luò)中的地址);
127.X.X.X 是保留地址,用做循環(huán)測試用的;
因為主機號有 24 位,所以一個 A 類網(wǎng)絡(luò)號可以容納 2^24-2=16777214 個主機號。
B 類地址:
B 類地址網(wǎng)絡(luò)號范圍:128.0.0.0---191.255.0.0;
B 類 IP 地址范圍:128.0.0.0---191.255.255.255;
B 類 IP 的私有地址范圍:172.16.0.0---172.31.255.255;
169.254.X.X 是保留地址;191.255.255.255 是廣播地址;
因為主機號有 16 位,所以一個 B 類網(wǎng)絡(luò)號可以容納 2^16-2=65534 個主機號。
C 類地址:
C 類地址網(wǎng)絡(luò)號范圍:192.0.0.0---223.255.255.0;
C 類 IP 地址范圍:192.0.0.0---223.255.255.255;
C 類 IP 的私有地址范圍:192.168.0.0---192.168.255.255;
因為主機號有 8 位,所以一個 C 類網(wǎng)絡(luò)號可以容納 2^8-2=254 個主機號。
下面使用 ifconfig 命令來查看本機 ip:
思考:這是一個幾類 ip 地址?
C 類
IP 地址如果只使用 ABCDE 類來劃分,會造成大量的浪費:一個有 500 臺主機的網(wǎng)絡(luò),無法使用 C 類地址。但如果使用一個 B 類地址,6 萬多個主機地址只有 500 個被使用,造成 IP 地址的大量浪費。
因此,可以在 ABC 類網(wǎng)絡(luò)的基礎(chǔ)上,進一步劃分子網(wǎng):占用主機號的前幾個位,用于表示子網(wǎng)號。
這樣 IP 地址就可看作 IP = 網(wǎng)絡(luò)號 + 子網(wǎng)號 + 主機號。
子網(wǎng)號的位數(shù)沒有硬性規(guī)定,于是我們用子網(wǎng)掩碼來確定一個 IP 地址中哪幾位是主機號,具體使用方法如圖:
子網(wǎng)掩碼中的 1 標(biāo)識了 IP 地址中相應(yīng)的網(wǎng)絡(luò)號和子網(wǎng)號,0 標(biāo)識了主機號。將 IP 地址和子網(wǎng)掩碼進行邏輯與運算,結(jié)果就能區(qū)分網(wǎng)絡(luò)號和子網(wǎng)號。
使用 ifconfig 命令也可以查看到子網(wǎng)掩碼:
如果發(fā)送方與接收方直接相連(點對點)或都在一個共享網(wǎng)絡(luò)上(以太網(wǎng)),那么 IP 數(shù)據(jù)報就能直接送達。
而大多數(shù)情況則是發(fā)送方與接收方通過若干個路由器(router)連接,那么數(shù)據(jù)報就需要經(jīng)過若干個路由器的轉(zhuǎn)發(fā)才能送達,它是怎么選擇一個合適的路徑來"送貨"的呢?
IP 層在內(nèi)存中有一個路由表(輸入命令 route -n 可以查看路由表),當(dāng)收到一份數(shù)據(jù)報并進行發(fā)送時,都要對該表進行搜索:
搜索路由表,如果能找到和目的 IP 地址完全一致的主機,則將 IP 數(shù)據(jù)報發(fā)向該主機;
搜索路由表,如果匹配主機失敗,則匹配同子網(wǎng)的路由器(這需要子網(wǎng)掩碼的協(xié)助)。如果找到路由器,則將該 IP 數(shù)據(jù)報發(fā)向該路由器;
搜索路由表,如果匹配同子網(wǎng)路由器失敗,則匹配同網(wǎng)絡(luò)號路由器,如果找到路由器,則將該 IP 數(shù)據(jù)報發(fā)向該路由器;
如果以上都失敗了,就搜索默認路由,如果默認路由存在,則發(fā)報;
如果都失敗了,就丟掉這個包;
接收到數(shù)據(jù)報的路由器再按照它自己的路由表繼續(xù)轉(zhuǎn)發(fā),直到數(shù)據(jù)報被轉(zhuǎn)發(fā)到目的主機;
如果在轉(zhuǎn)發(fā)過程中,IP 數(shù)據(jù)報的 TTL(生命周期)已經(jīng)被減為 0,則該 IP 數(shù)據(jù)報就被拋棄。
實驗環(huán)境中可以使用 route -n 查看路由表:
另外我們可以使用 traceroute 來追蹤路由過程。首先需要安裝一下:
接下來使用 traceroute 追蹤本機到 www.shiyanlou.com 的路由:
還有一些其他選項,比如:
設(shè)置跳數(shù)為 8
探測包個數(shù)設(shè)為 4
顯示 IP 地址,不查主機名
當(dāng)你用 ifconfig 查看 IP 地址時,有時你會發(fā)現(xiàn)自己的 IP 地址是這樣的———192.168.X.X 或 172.16.X.X。這是 C 類網(wǎng)和 B 類網(wǎng)的私有地址,就是俗稱的內(nèi)網(wǎng) IP。這是因為你的路由器采用了 NAT 技術(shù)。
NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是 1994 年提出的。當(dāng)在專用網(wǎng)內(nèi)部的一些主機本來已經(jīng)分配到了內(nèi)網(wǎng) IP 地址,但現(xiàn)在又想和因特網(wǎng)上的主機通信時,NAT 技術(shù)將其內(nèi)網(wǎng) IP 地址轉(zhuǎn)換成全球 IP 地址,然后與因特網(wǎng)連接,也就是說,內(nèi)網(wǎng)的數(shù)臺主機使用了同一個全球 IP 地址在上網(wǎng)。
NAT 技術(shù)實現(xiàn)了寬帶共享,而且有助于緩解 IP 地址空間枯竭的問題。
使用 ifconfig eth0 查看內(nèi)網(wǎng) ip:
我們現(xiàn)在使用的 IPv4 協(xié)議版本從理論上講,可以編址 1600 萬個網(wǎng)絡(luò)、40 億臺主機。但采用 A、B、C 三類編址方式后,可用的網(wǎng)絡(luò)地址和主機地址的數(shù)目大打折扣,以至 IP 地址已于 2011 年 2 月 3 日分配完畢。
其中北美占有 3/4,約 30 億個,而人口最多的亞洲只有不到 4 億個,中國截止 2010 年 6 月 IPv4 地址數(shù)量達到 2.5 億,落后于 4.2 億網(wǎng)民的需求。地址不足,嚴重地制約了中國及其他國家互聯(lián)網(wǎng)的應(yīng)用和發(fā)展。
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,計算機網(wǎng)絡(luò)將進入人們的日常生活,可能身邊的每一樣?xùn)|西都需要連入全球因特網(wǎng),在這樣的環(huán)境下,IPv6 應(yīng)運而生。
IPv6 的地址長度是 128 位,通常將這 128 位的地址按每 16 位劃分為一個段,將每個段轉(zhuǎn)換成十六進制數(shù)字,并用冒號隔開,比如:2000:0000:0000:0000:0001:2345:6789:abcd 就是一個 IPv6 地址。
單從數(shù)量級上來說,IPv6 所擁有的地址容量是 IPv4 的約 8×10^28 倍,達到 2^128(算上全零的)個。這不但解決了網(wǎng)絡(luò)地址資源數(shù)量的問題,同時也為除電腦外的設(shè)備連入互聯(lián)網(wǎng)在數(shù)量限制上掃清了障礙。
隨著 IPv4 不足,支持 IPv6 的網(wǎng)絡(luò)迅速增長,現(xiàn)在全球已經(jīng)有 5% 的網(wǎng)絡(luò)使用 IPv6。
查看 IP 路由表。
子網(wǎng)劃分:現(xiàn)有兩個 C 類網(wǎng),202.203.204.0 和 202.203.224.0,分別把它們平均分成 4 個和 8 個子網(wǎng),寫出每個子網(wǎng)的起始、終結(jié) IP 和子網(wǎng)掩碼。
四、tcpdump是什么意思.干什么用的.哪里有詳細的資料,
TCPDUMP簡介
在傳統(tǒng)的網(wǎng)絡(luò)分析和測試技術(shù)中,嗅探器(sniffer)是最常見,也是最重要的技術(shù)之一。sniffer工具首先是為網(wǎng)絡(luò)管理員和網(wǎng)絡(luò)程序員進行網(wǎng)絡(luò)分析而設(shè)計的。對于網(wǎng)絡(luò)管理人員來說,使用嗅探器可以隨時掌握網(wǎng)絡(luò)的實際情況,在網(wǎng)絡(luò)性能急劇下降的時候,可以通過sniffer工具來分析原因,找出造成網(wǎng)絡(luò)阻塞的來源。對于網(wǎng)絡(luò)程序員來說,通過sniffer工具來調(diào)試程序。
用過windows平臺上的sniffer工具(例如,netxray和sniffer pro軟件)的朋友可能都知道,在共享式的局域網(wǎng)中,采用sniffer工具簡直可以對網(wǎng)絡(luò)中的所有流量一覽無余!Sniffer工具實際上就是一個網(wǎng)絡(luò)上的抓包工具,同時還可以對抓到的包進行分析。由于在共享式的網(wǎng)絡(luò)中,信息包是會廣播到網(wǎng)絡(luò)中所有主機的網(wǎng)絡(luò)接口,只不過在沒有使用sniffer工具之前,主機的網(wǎng)絡(luò)設(shè)備會判斷該信息包是否應(yīng)該接收,這樣它就會拋棄不應(yīng)該接收的信息包,sniffer工具卻使主機的網(wǎng)絡(luò)設(shè)備接收所有到達的信息包,這樣就達到了網(wǎng)絡(luò)監(jiān)聽的效果。
Linux作為網(wǎng)絡(luò)服務(wù)器,特別是作為路由器和網(wǎng)關(guān)時,數(shù)據(jù)的采集和分析是必不可少的。所以,今天我們就來看看Linux中強大的網(wǎng)絡(luò)數(shù)據(jù)采集分析工具——TcpDump。
用簡單的話來定義tcpdump,就是:dump the traffice on a network,根據(jù)使用者的定義對網(wǎng)絡(luò)上的數(shù)據(jù)包進行截獲的包分析工具。
作為互聯(lián)網(wǎng)上經(jīng)典的的系統(tǒng)管理員必備工具,tcpdump以其強大的功能,靈活的截取策略,成為每個高級的系統(tǒng)管理員分析網(wǎng)絡(luò),排查問題等所必備的東東之一。
顧名思義,TcpDump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來提供分析。它支持針對網(wǎng)絡(luò)層、協(xié)議、主機、網(wǎng)絡(luò)或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。
tcpdump提供了源代碼,公開了接口,因此具備很強的可擴展性,對于網(wǎng)絡(luò)維護和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系統(tǒng)中,由于它需要將網(wǎng)絡(luò)界面設(shè)置為混雜模式,普通用戶不能正常執(zhí)行,但具備root權(quán)限的用戶可以直接執(zhí)行它來獲取網(wǎng)絡(luò)上的信息。因此系統(tǒng)中存在網(wǎng)絡(luò)分析工具主要不是對本機安全的威脅,而是對網(wǎng)絡(luò)上的其他計算機的安全存在威脅。
普通情況下,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡(luò)界面上所有流過的數(shù)據(jù)包。
-----------------------
bash-2.02# tcpdump
tcpdump: listening on eth0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
0000 0000 0080 0000 1007 cf08 0900 0000
0e80 0000 902b 4695 0980 8701 0014 0002
000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
ffff 0060 0004 ffff ffff ffff ffff ffff
0452 ffff ffff 0000 e85b 6d85 4008 0002
0640 4d41 5354 4552 5f57 4542 0000 0000
0000 00
^C
------------------------
首先我們注意一下,從上面的輸出結(jié)果上可以看出來,基本上tcpdump總的的輸出格式為:系統(tǒng)時間 來源主機.端口 > 目標(biāo)主機.端口 數(shù)據(jù)包參數(shù)
TcpDump的參數(shù)化支持
tcpdump支持相當(dāng)多的不同參數(shù),如使用-i參數(shù)指定tcpdump監(jiān)聽的網(wǎng)絡(luò)界面,這在計算機具有多個網(wǎng)絡(luò)界面時非常有用,使用-c參數(shù)指定要監(jiān)聽的數(shù)據(jù)包數(shù)量,使用-w參數(shù)指定將監(jiān)聽到的數(shù)據(jù)包寫入文件中保存,等等。
然而更復(fù)雜的tcpdump參數(shù)是用于過濾目的,這是因為網(wǎng)絡(luò)中流量很大,如果不加分辨將所有的數(shù)據(jù)包都截留下來,數(shù)據(jù)量太大,反而不容易發(fā)現(xiàn)需要的數(shù)據(jù)包。使用這些參數(shù)定義的過濾規(guī)則可以截留特定的數(shù)據(jù)包,以縮小目標(biāo),才能更好的分析網(wǎng)絡(luò)中存在的問題。tcpdump使用參數(shù)指定要監(jiān)視數(shù)據(jù)包的類型、地址、端口等,根據(jù)具體的網(wǎng)絡(luò)問題,充分利用這些過濾規(guī)則就能達到迅速定位故障的目的。請使用man tcpdump查看這些過濾規(guī)則的具體用法。
顯然為了安全起見,不用作網(wǎng)絡(luò)管理用途的計算機上不應(yīng)該運行這一類的網(wǎng)絡(luò)分析軟件,為了屏蔽它們,可以屏蔽內(nèi)核中的bpfilter偽設(shè)備。一般情況下網(wǎng)絡(luò)硬件和TCP/IP堆棧不支持接收或發(fā)送與本計算機無關(guān)的數(shù)據(jù)包,為了接收這些數(shù)據(jù)包,就必須使用網(wǎng)卡的混雜模式,并繞過標(biāo)準的TCP/IP堆棧才行。在FreeBSD下,這就需要內(nèi)核支持偽設(shè)備bpfilter。因此,在內(nèi)核中取消bpfilter支持,就能屏蔽tcpdump之類的網(wǎng)絡(luò)分析工具。
并且當(dāng)網(wǎng)卡被設(shè)置為混雜模式時,系統(tǒng)會在控制臺和日志文件中留下記錄,提醒管理員留意這臺系統(tǒng)是否被用作攻擊同網(wǎng)絡(luò)的其他計算機的跳板。
May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled
雖然網(wǎng)絡(luò)分析工具能將網(wǎng)絡(luò)中傳送的數(shù)據(jù)記錄下來,但是網(wǎng)絡(luò)中的數(shù)據(jù)流量相當(dāng)大,如何對這些數(shù)據(jù)進行分析、分類統(tǒng)計、發(fā)現(xiàn)并報告錯誤卻是更關(guān)鍵的問題。網(wǎng)絡(luò)中的數(shù)據(jù)包屬于不同的協(xié)議,而不同協(xié)議數(shù)據(jù)包的格式也不同。因此對捕獲的數(shù)據(jù)進行解碼,將包中的信息盡可能的展示出來,對于協(xié)議分析工具來講更為重要。昂貴的商業(yè)分析工具的優(yōu)勢就在于它們能支持很多種類的應(yīng)用層協(xié)議,而不僅僅只支持tcp、udp等低層協(xié)議。
從上面tcpdump的輸出可以看出,tcpdump對截獲的數(shù)據(jù)并沒有進行徹底解碼,數(shù)據(jù)包內(nèi)的大部分內(nèi)容是使用十六進制的形式直接打印輸出的。顯然這不利于分析網(wǎng)絡(luò)故障,通常的解決辦法是先使用帶-w參數(shù)的tcpdump 截獲數(shù)據(jù)并保存到文件中,然后再使用其他程序進行解碼分析。當(dāng)然也應(yīng)該定義過濾規(guī)則,以避免捕獲的數(shù)據(jù)包填滿整個硬盤。
TCP功能
數(shù)據(jù)過濾
不帶任何參數(shù)的TcpDump將搜索系統(tǒng)中所有的網(wǎng)絡(luò)接口,并顯示它截獲的所有數(shù)據(jù),這些數(shù)據(jù)對我們不一定全都需要,而且數(shù)據(jù)太多不利于分析。所以,我們應(yīng)當(dāng)先想好需要哪些數(shù)據(jù),TcpDump提供以下參數(shù)供我們選擇數(shù)據(jù):
-b 在數(shù)據(jù)-鏈路層上選擇協(xié)議,包括ip、arp、rarp、ipx都是這一層的。
例如:tcpdump -b arp 將只顯示網(wǎng)絡(luò)中的arp即地址轉(zhuǎn)換協(xié)議信息。
-i 選擇過濾的網(wǎng)絡(luò)接口,如果是作為路由器至少有兩個網(wǎng)絡(luò)接口,通過這個選項,就可以只過濾指定的接口上通過的數(shù)據(jù)。例如:
tcpdump -i eth0 只顯示通過eth0接口上的所有報頭。
src、dst、port、host、net、ether、gateway這幾個選項又分別包含src、dst 、port、host、net、ehost等附加選項。他們用來分辨數(shù)據(jù)包的來源和去向,src host 192.168.0.1指定源主機IP地址是192.168.0.1,dst net 192.168.0.0/24指定目標(biāo)是網(wǎng)絡(luò)192.168.0.0。以此類推,host是與其指定主機相關(guān)無論它是源還是目的,net是與其指定網(wǎng)絡(luò)相關(guān)的,ether后面跟的不是IP地址而是物理地址,而gateway則用于網(wǎng)關(guān)主機。可能有點復(fù)雜,看下面例子就知道了:
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
過濾的是源主機為192.168.0.1與目的網(wǎng)絡(luò)為192.168.0.0的報頭。
tcpdump ether src 00:50:04:BA:9B and dst……
過濾源主機物理地址為XXX的報頭(為什么ether src后面沒有host或者net?物理地址當(dāng)然不可能有網(wǎng)絡(luò)嘍)。
Tcpdump src host 192.168.0.1 and dst port not telnet
過濾源主機192.168.0.1和目的端口不是telnet的報頭。
ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數(shù)的位置,用來過濾數(shù)據(jù)報的類型。
例如:
tcpdump ip src……
只過濾數(shù)據(jù)-鏈路層上的IP報頭。
tcpdump udp and src host 192.168.0.1
只過濾源主機192.168.0.1的所有udp報頭。
數(shù)據(jù)顯示/輸入輸出
TcpDump提供了足夠的參數(shù)來讓我們選擇如何處理得到的數(shù)據(jù),如下所示:
-l 可以將數(shù)據(jù)重定向。
如tcpdump -l >tcpcap.txt將得到的數(shù)據(jù)存入tcpcap.txt文件中。
-n 不進行IP地址到主機名的轉(zhuǎn)換。
如果不使用這一項,當(dāng)系統(tǒng)中存在某一主機的主機名時,TcpDump會把IP地址轉(zhuǎn)換為主機名顯示,就像這樣:eth0 < ntc9.1165> router.domain.net.telnet,使用-n后變成了:eth0 < 192.168.0.9.1165 > 192.168.0.1.telnet。
-nn 不進行端口名稱的轉(zhuǎn)換。
上面這條信息使用-nn后就變成了:eth0 < ntc9.1165 > router.domain.net.23。
-N 不打印出默認的域名。
還是這條信息-N 后就是:eth0 < ntc9.1165 > router.telnet。
-O 不進行匹配代碼的優(yōu)化。
-t 不打印UNIX時間戳,也就是不顯示時間。
-tt 打印原始的、未格式化過的時間。
-v 詳細的輸出,也就比普通的多了個TTL和服務(wù)類型。
TCPDUMP的安裝
在linux下tcpdump的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程序的形式安裝。
1. rpm包的形式安裝
#rpm -ivh tcpdump-3_4a5.rpm
這樣tcpdump就順利地安裝到你的linux系統(tǒng)中。怎么樣,很簡單吧。
2. 源程序的安裝
#tar xvfz tcpdump-3_4a5.tar.Z
rpm的包可以使用如下命令安裝:
#rpm -ivh tcpdump-3_4a5.src.rpm
這樣就把tcpdump的源代碼解壓到/usr/src/redhat/SOURCES目錄下.
第二步 做好編譯源程序前的準備活動
在編譯源程序之前,最好已經(jīng)確定庫文件libpcap已經(jīng)安裝完畢,這個庫文件是tcpdump軟件所需的庫文件 。同樣,你同時還要有一個標(biāo)準的c語言編譯器。在linux下標(biāo)準的c 語言編譯器一般是gcc。 在tcpdump的源程序目錄中。有一個文件是Makefile.in,configure命令就是從Makefile.in文件中自動產(chǎn)生Makefile文件。在Makefile.in文件中,可以根據(jù)系統(tǒng)的配置來修改BINDEST 和 MANDEST 這兩個宏定義,缺省值是
BINDEST = @sbindir@
MANDEST = @mandir@
第一個宏值表明安裝tcpdump的二進制文件的路徑名,第二個表明tcpdump的man 幫助頁的路徑名,你可以修改它們來滿足系統(tǒng)的需求。
第三步 編譯源程序
使用源程序目錄中的configure腳本,它從系統(tǒng)中讀出各種所需的屬性。并且根據(jù)Makefile.in文件自動生成Makefile文件,以便編譯使用.make 命令則根據(jù)Makefile文件中的規(guī)則編譯tcpdump的源程序。使用make install命令安裝編譯好的tcpdump的二進制文件。
總結(jié)一下就是:
# tar xvfz tcpdump-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
關(guān)于tcpdump更詳細的信息,請查看Man tcpdump。
以上就是關(guān)于tcpdump指定源ip和目的ip相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
ChatGPT概念繼續(xù)大漲(chatcoin末來價格預(yù)測)