當前位置:首頁 » 幣種行情 » ethmac地址長度

ethmac地址長度

發布時間: 2023-09-21 09:52:00

Ⅰ ZYNQ+linux網口調試筆記(3)PL-ETH

在ZYNQ上使用gigE Vision協議的網路介面相機。

第一步:調通PS側網口GEM0(Xilinx BSP默認配好)。

第二步:調通PS側網口GEM1(見前一篇文檔:開發筆記(1))。

第三步:調通PL側網口(本文闡述)。

第四步:在PL側網口上驗證Jumbo Frame特性,並在應用層適配gigE Vision協議。

根據《xapp1082》可知,PL側的PHY支持1000Base-X和SGMII兩種配置,這兩種配置對應兩種不同的PHY引腳介面(連接到MAC)。而我們的hdf文件使用的是1000Base-X的配置。

關於網口的Linux驅動,我們在官網找到一份資料: Xilinx Wiki - Zynq PL Ethernet 。資料很長,我們只看與我們相關的2.4.1 PL Ethernet BSP installation for 1000Base-X」這一章節就可以了。

首先導入FPGA設計同事提供的hdf文件:

在彈出的圖形界面里,進入Subsystem AUTO Hardware Settings——Ethernet Settings——Primary Ethernet,確認可以看到PL側網路設備axi_ethernet_0,說明hdf文件里已包含了必要的網口硬體信息:

上圖中被選中的網口將成為Linux上的設備eth0。這里我們默認選擇ps7_ethernet_0,即使用GEM0作為首選網口。

啟用Xilinx AXI Ethernet驅動

進入Device Drivers -- Network device support – 選中Xilinx AXI Ethernet(以及Xilinx Ethernet GEM,這是PS側網口的驅動)

進入Networking support – 選中 Random ethaddr if unset

進入Device Drivers -- Network device support -- PHY Device support and infrastructure – 啟用Drivers for xilinx PHYs

進入~~~~Device Drivers -- DMA Engine Support -– 禁用~~~~Xilinx AXI DMAS Engine~~~ (對應的配置項名為 ~~ CONFIG_XILINX_DMA ~~~)

注意: Xilinx Wiki里對設備樹節點的引用有誤(&axi_ethernet),導致編譯報錯,應改為&axi_ethernet_0。

註:PL-ETH驅動所在路徑:<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_main.c和xilinx_axienet_mdio.c。對應的內核配置項為CONFIG_NET_VENDOR_XILINX和CONFIG_XILINX_AXI_EMAC。

啟用ethtool和tcpmp(調試用,非必須):

然後將生成的BOOT.BIN和image.ub拷貝到SD卡根目錄下,將SD卡插入板子上,上電運行。

上電後,使用ifconfig eth1查看網口信息,觀察MAC地址與設置的一致,且ifconfig eth1 192.168.1.11 up沒有報錯。

測試網路通路:ping PC是通的。說明網口工作正常。

Linux下eth1(即PL-ETH)的MAC地址有誤

問題描述:

開機列印:

注意:

MAC地址是錯的,驅動里解析出的是GEM0的MAC地址。

試驗發現,即使在system-user.dtsi里不寫local-mac-address,也照樣解析出的是GEM0的MAC。

而將system-user.dtsi里的local-mac-address改名為pl-mac-address,並將驅動里解析的字元串也對應更改為pl-mac-address,則可以正確解析出來:

Passing MAC address to kernel via Device Tree Blob and U-Boot:

http://zedboard.org/content/passing-mac-address-kernel-device-tree-blob

通過更改u-boot環境變數和設備樹,為每個板子設置一個獨特的MAC地址:

https://www.xilinx.com/support/answers/53476.html

U-Boot里的環境變數ethaddr會覆蓋掉設備樹里pl-eth的local-mac-addr欄位,從而影響Linux啟動後的網卡MAC地址;

但U-Boot里的環境變數ipaddr不會對Linux啟動後的配置產生任何影響。因為設備樹里根本就沒有關於IP地址的配置。

phy-mode怎麼會是sgmii?查了下官方的提供的BSP里,也是「sgmii」。說明這個沒問題。具體原因不清楚。

@TODO: 設備樹里的中斷號的順序如何影響功能?

為何讀出來的IRQ號不對呢?這是因為這里讀到的不是硬體的中斷號,而是經過系統映射之後的軟體IRQ number。兩者不具有線性關系。

關於中斷號的疑問:

Linux上的網口eth0、eth1的順序,似乎是按照phy地址從小到大來排布的。

Xilinx xapp1082-zynq-eth.pdf (v5.0) July 16, 2018

https://www.xilinx.com/support/documentation/application_notes/xapp1082-zynq-eth.pdf

Xilinx Wiki - Zynq PL Ethernet:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841633/Zynq+PL+Ethernet

Xilinx Wiki - Linux Drivers:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers

Xilinx Wiki - Linux Drivers - Macb Driver:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841740/Macb+Driver

Xilinx Wiki - Zynq Ethernet Performance:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841743/Zynq+Ethernet+Performance

查到關於Jumbo frame MTU的定義,當前值為9000,可否改大一些?

驅動源碼里關於jumbo frame的說明:

設置MTU為9000,發現ping包最大長度只能設為ping 192.168.1.10 -s 1472

https://lore.kernel.org/patchwork/patch/939535/

【完】

Ⅱ linux 重啟網卡 Device eth0 has different MAC address than expected, ignoring 如何解決

這個提示是指網口的mac地址已經變化,但是設備名稱沒有變化,導致設備名稱和mac地址無法匹配,linux無法掛載該網口。換種說法就是該網口的配置文件里的mac地址和該網口實際的mac地址不符合。


這種情況一般發生在虛擬機遷移,或者更換網卡的時候,解決方案如下:

1:記錄網口的實際地址,執行ifconfig eth0

其中HWaddr後面就是網口實際的mac地址


2:更改配置文件中的mac地址

打開eth0的網口配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0

(該地址可能隨著不同的操作系統有所不同)

在文件中尋找 HWADDR= 這行,如果沒有就新加一行。把這行後面的值改成第一步看到的mac地址值,例如 HWADDR="00:0C:29:2D:2D:CF",然後保存退出


3:通過service network restart重啟網卡,或者通過ifup eth0啟動網卡(該命令會檢查配置文件)

Ⅲ linux修改Mac地址

1、臨時性的修改:

依次輸入以下命令:

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether 00:0C:29:36:97:20

/sbin/ifconfig eth0 up

service network restart

2、永久性的修改:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

添加MACADDR=00:0C:29:36:97:20

注釋掉原來的HWADDR

:wq 保存退出。

有危害,如果永久激活步驟錯誤則會造成無法聯網的問題。

(3)ethmac地址長度擴展閱讀:

誤區

#ifconfig eth0 down /*禁掉eth0網卡,這里以eth0網卡為例*/

#ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE/*修改eth0網卡的MAC地址*/

#ifconfig eth0 up /*重新啟動eth0網卡*/

然後重新啟動主機。

結論:按照這種方法修改MAC地址,重新啟動主機系統後,MAC地址會自動還原。

Ⅳ 華為5700交換機eth介面做什麼用的怎麼使用它

華為5700交換機eth可以作為管理口使用,交換機操作系統丟了 ,但是我可以通過eth口上傳操作系統文件,跟console口的功能是類似的。

華為交換機從網橋發展而來,屬於OSI第二層即數據鏈路層設備。它根據MAC地址定址,通過站表選擇路由,站表的建立和維護由CISCO思科交換機自動進行。

華為在美國、德國、瑞典、俄羅斯、印度以及中國的北京、上海和南京等地設立了多個研究所,近一半的員工從事著產品與解決方案的研發工作。

(4)ethmac地址長度擴展閱讀

華為是全球領先的電信解決方案供應商。我們擁有熱誠的員工和強大的研發能力,快速響應客戶需求,提供端到端的客戶化產品、解決方案和服務,全力幫助客戶商業成功,並通過我們的共同努力,不斷豐富人們的溝通和生活。

華為產品和解決方案涵蓋移動(LTE/HSPA/WCDMA/EDGE/GPRS/GSM, CDMA2000 1xEV-DO/CDMA2000 1X, TD-SCDMA和WiMAX)

核心網(IMS, Mobile Softswitch, NGN)、網路(FTTx, xDSL, 光網路, 路由器和LAN Switch)、電信增值業務(IN, mobile data service, BOSS)和終端(UMTS/CDMA)等領域。

Ⅳ 什麼是ARP

分類: 電腦/網路 >> 反病毒
問題描述:

詳細點可以嗎?

解析:

這里沒法看圖片,如果你想看的話,就到這里來:130/CMS/Pub/neork/neork_protocal/20201

ARP協議概述

IP數據包常通過乙太網發送。乙太網設備並不識別32位IP地址:它們是以48位乙太網地址傳輸乙太網數據包的。因此,IP驅動器必須把IP目的地址轉換成乙太網網目的地址。在這兩種地址之間存在著某種靜態的或演算法的映射,常常需要查看一張表。地址解析協議(Address Resolution Protocol,ARP)就是用來確定這些映象的協議。

ARP工作時,送出一個含有所希望的IP地址的乙太網廣播數據包。目的地主機,或另一個代表該主機的系統,答鏈以一個含有IP和乙太網地址對的數據包作為應答。發送者將這個地址對高速緩存起來,以節約不必要的ARP通信。

如果有一個不被信任的節點對本地網路具有寫訪問許可權,那麼也會有某種風險。這樣一台機器可以發布虛假的ARP報文並將所有通信都轉向它自己,然後它就可以扮演某些機器,或者順便對數據流進行簡單的修改。ARP機制常常是自動起作用的。在特別安全的網路上, ARP映射可以用固件,並且具有自動抑制協議達到防止干擾的目的。

圖1 乙太網上的ARP報文格式

圖1是一個用作IP到乙太網地址轉換的ARP報文的例子。在圖中每一行為32位,也就是4個八位組表示,在以後的圖中,我們也將遵循這一方式。

硬體類型欄位指明了發送方想知道的硬體介面類型,乙太網的值為1。協議類型欄位指明了發送方提供的高層協議類型,IP為0806(16進制)。硬體地址長度和協議長度指明了硬體地址和高層協議地址的長度,這樣ARP報文就可以在任意硬體和任意協議的網路中使用。操作欄位用來表示這個報文的目的,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4。

當發出ARP請求時,發送方填好發送方首部和發送方IP地址,還要填寫目標IP地址。當目標裂舉戚機器收到這個ARP廣播包時,就會在響應報文中填上自己的48位主機地址。

2 ARP使用舉例

我們先看一下linux下的arp命令(如果開始arp表中的內容為空的話,需要先對某台主機進行一個連接,例如ping一下目標主機來產生一個arp項):

d2server:/home/kerberos# arp

Address HWtype HWaddress Flags Mask Iface

211.161.17.254 ether 00:04:9A:AD:1C:0A C eth0

Address:主機的IP地址

Hwtype:主機的硬體類型

Hwaddress:主機的硬體地址

Flags Mask:記錄標志,"C"表示arp高速緩存中的條目,"M"表示靜態的arp條目。

用"arp --a"命令可以顯示主機地址與IP地址的對應表,也就是機器中所保存的arp緩存信息。這個高速緩存存放了最近Inter地址到硬體地址之間的映射記錄。高速緩存中每一項的生存時間一般為20分鍾,起始時間從被創建時開始算起。

d2server:/home/kerberos# arp -a

(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0

可以看到在緩存中有一條211.161.17.254相對應的arp緩存條目。

d2server:/home/kerberos# tel 211.161.17.21

Trying 211.161.17.21...

Connected to 211.161.17.21.

Escape character is '^]'.

^].

tel>quit

conion closed.

在執行上面一條tel命令的同時,用tcpmp進行監聽:

d2server:/home/kerberos# tcpmp -e dst host 211.161.17.21

tcpmp: listening on eth0

我們將會聽到很多包,我們取與我們arp協肆陵議相關的2個包:

1 0.0 00:D0:F8:0A:FB:83 FF:FF:FF:FF:FF:FF arp 60

who has 211.161.17.21 tell d2server

2 0.002344(0.0021) 00:E0:3C:43:0D:24 00:D0:F8:0A:FB:83 arp 60

arp reply 211.161.17.21 is at 00:E0:3C:43:0D:24

在第1行中,源端主機(d2server)的硬體地址是00:D0:F8:0A:FB:83。目的端主機的硬體地址是FF:FF:FF:FF:FF:FF,這是一個乙太網廣播地址。電纜上的每個乙太網介面都要接收這個數據幀並對它進行處理。

第1行中緊接著的一個輸出欄位是arp,表明幀類型欄位的值是0x0806,說明此數據幀是一個ARP請求或回答。

在每行中,單詞後面的值60指的是乙太網數據幀的長度。由於ARP請求或回答的數據幀長都是42位元組(28位元組的ARP數據,14位元組的乙太網幀頭),因此,每一幀都必須加入填充字元以達到乙太網的最小長度要求:60位元組。

第1行中的下一個輸出欄位arp who-has表示作為ARP請求的這個數據幀中,目的I P地址是211.161.17.21的地址,發送端的I P地址是d2server的地址。tcpmp列印出主機名對應的默認I P地址。

從第2行中可以看到,盡管ARP請求是廣播的,但是ARP應答的目的地址卻是211.161.17.21(00:E0:3C:43:0D:24)。ARP應答是直接送到請求端主機的,而是廣播的。tcpmp列印出arp reply的字樣,同時列印出響應者的主機ip和硬體地址。

在每一行中,行號後面的數字表示tcpmp收到分組的時間(以秒為單位)。除第1行外,每行在括弧中還包含了與上一行的時間差異(以秒為單位)。

這個時候我們再看看機器中的arp緩存:

d2server:/home/kerberos# arp -a

(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0

(211.161.17.21) at 00:E0:3C:43:0D:24 [ether] on eth0

arp高速緩存中已經增加了一條有關211.161.17.21的映射。

再看看其他的arp相關的命令:

d2server:/home/kerberos# arp -s 211.161.17.21 00:00:00:00:00:00

d2server:/home/kerberos# arp

Address HWtype HWaddress Flags Mask Iface

211.161.17.254 ether 00:04:9A:AD:1C:0A C eth0

211.161.17.21 ether 00:00:00:00:00:00 CM eth0

d2server:/home/kerberos# arp -a

(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0

(211.161.17.21) at 00:00:00:00:00:00 [ether] PERM on eth0

可以看到我們用arp -s選項設置了211.161.17.21對應的硬體地址為00:00:00:00:00:00,而且這條映射的標志欄位為CM,也就是說我們手工設置的arp選項為靜態arp選項,它保持不變沒有超時,不像高速緩存中的條目要在一定的時間間隔後更新。

如果想讓手工設置的arp選項有超時時間的話,可以加上temp選項

d2server:/home/kerberos# arp -s 211.161.17.21 00:00:00:00:00:00 temp

d2server:/home/kerberos# arp -a

(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0

(211.161.17.21) at 00:00:00:00:00:00 [ether] on eth0

d2server:/home/kerberos# arp

Address HWtype HWaddress Flags Mask Iface

211.161.17.254 ether 00:04:9A:AD:1C:0A C eth0

211.161.17.21 ether 00:00:00:00:00:00 C eth0

可以看到標志欄位的靜態arp標志"M"已經去掉了,我們手工加上的是一條動態條目。

請大家注意arp靜態條目與動態條目的區別。

在不同的系統中,手工設置的arp靜態條目是有區別的。在linux和win2000中,靜態條目不會因為偽造的arp響應包而改變,而動態條目會改變。而在win98中,手工設置的靜態條目會因為收到偽造的arp響應包而改變。

如果您想刪除某個arp條目(包括靜態條目),可以用下面的命令:

d2server:/home/kerberos# arp -d 211.161.17.21

d2server:/home/kerberos# arp -a

(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0

(211.161.17.21) at on eth0

可以看到211.161.17.21的arp條目已經是不完整的了。

還有一些其他的命令,可以參考linux下的man文檔:

d2server:/home/kerberos# man arp

ARP欺騙

我們先復習一下上面所講的ARP協議的原理。在實現TCP/IP協議的網路環境下,一個ip包走到哪裡,要怎麼走是靠路由表定義,但是,當ip包到達該網路後,哪台機器響應這個ip包卻是靠該ip包中所包含的硬體mac地址來識別。也就是說,只有機器的硬體mac地址和該ip包中的硬體mac地址相同的機器才會應答這個ip包,因為在網路中,每一台主機都會有發送ip包的時候,所以,在每台主機的內存中,都有一個 arp--> 硬體mac 的轉換表。通常是動態的轉換表(該arp表可以手工添加靜態條目)。也就是說,該對應表會被主機在一定的時間間隔後刷新。這個時間間隔就是ARP高速緩存的超時時間。

通常主機在發送一個ip包之前,它要到該轉換表中尋找和ip包對應的硬體mac地址,如果沒有找到,該主機就發送一個ARP廣播包,於是,主機刷新自己的ARP緩存。然後發出該ip包。

了解這些常識後,現在就可以談在乙太網絡中如何實現ARP欺騙了,可以看看這樣一個例子。

3.1 同一網段的ARP欺騙

圖2 同一網段的arp欺騙

如圖2所示,三台主機

A: ip地址 192.168.0.1 硬體地址 AA:AA:AA:AA:AA:AA

B: ip地址 192.168.0.2 硬體地址 BB:BB:BB:BB:BB:BB

C: ip地址 192.168.0.3 硬體地址 CC:CC:CC:CC:CC:CC

一個位於主機B的入侵者想非法進入主機A,可是這台主機上安裝有防火牆。通過收集資料他知道這台主機A的防火牆只對主機C有信任關系(開放23埠(tel))。而他必須要使用tel來進入主機A,這個時候他應該如何處理呢?

我們這樣考慮,入侵者必須讓主機A相信主機B就是主機C,如果主機A和主機C之間的信任關系是建立在ip地址之上的。如果單單把主機B的ip地址改的和主機C的一樣,那是不能工作的,至少不能可靠地工作。如果你告訴乙太網卡設備驅動程序, 自己IP是192.168.0.3,那麼這只是一種純粹的競爭關系,並不能達到目標。我們可以先研究C這台機器如果我們能讓這台機器暫時當掉,競爭關系就可以解除,這個還是有可能實現的。在機器C當掉的同時,將機器B的ip地址改為192.168.0.3,這樣就可以成功的通過23埠tel到機器A上面,而成功的繞過防火牆的限制。

上面的這種想法在下面的情況下是沒有作用的,如果主機A和主機C之間的信任關系是建立在硬體地址的基礎上。這個時候還需要用ARP欺騙的手段讓主機A把自己的ARP緩存中的關於192.168.0.3映射的硬體地址改為主機B的硬體地址。

我們可以人為的製造一個arp_reply的響應包,發送給想要欺騙的主機,這是可以實現的,因為協議並沒有規定必須在接收到arp_echo後才可以發送響應包.這樣的工具很多,我們也可以直接用snifferpro抓一個arp響應包,然後進行修改。

你可以人為地製造這個包。可以指定ARP包中的源IP、目標IP、源MAC地址、目標MAC地址。

這樣你就可以通過虛假的ARP響應包來修改主機A上的動態ARP緩存達到欺騙的目的。

下面是具體的步驟:

他先研究192.0.0.3這台主機,發現這台主機的漏洞。

根據發現的漏洞使主機C當掉,暫時停止工作。

這段時間里,入侵者把自己的ip改成192.0.0.3

他用工具發一個源ip地址為192.168.0.3源MAC地址為BB:BB:BB:BB:BB:BB的包給主機A,要求主機A更新自己的arp轉換表。

主機更新了arp表中關於主機C的ip-->mac對應關系。

防火牆失效了,入侵的ip變成合法的mac地址,可以tel 了。

上面就是一個ARP的欺騙過程,這是在同網段發生的情況,但是,提醒注意的是,在B和C處於不同網段的時候,上面的方法是不起作用的。

3.2 不同網段的ARP欺騙

圖3 不同網段之間的ARP欺騙

如圖3所示A、C位於同一網段而主機B位於另一網段,三台機器的ip地址和硬體地址如下:

A: ip地址 192.168.0.1 硬體地址 AA:AA:AA:AA:AA:AA

B: ip地址 192.168.1.2 硬體地址 BB:BB:BB:BB:BB:BB

C: ip地址 192.168.0.3 硬體地址 CC:CC:CC:CC:CC:CC

在現在的情況下,位於192.168.1網段的主機B如何冒充主機C欺騙主機A呢?顯然用上面的辦法的話,即使欺騙成功,那麼由主機B和主機A之間也無法建立tel會話,因為路由器不會把主機A發給主機B的包向外轉發,路由器會發現地址在192.168.0.這個網段之內。

現在就涉及到另外一種欺騙方式―ICMP重定向。把ARP欺騙和ICMP重定向結合在一起就可以基本實現跨網段欺騙的目的。

什麼是ICMP重定向呢?

ICMP重定向報文是ICMP控制報文中的一種。在特定的情況下,當路由器檢測到一台機器使用非優化路由的時候,它會向該主機發送一個ICMP重定向報文,請求主機改變路由。路由器也會把初始數據報向它的目的地轉發。

我們可以利用ICMP重定向報文達到欺騙的目的。

下面是結合ARP欺騙和ICMP重定向進行攻擊的步驟:

為了使自己發出的非法ip包能在網路上能夠存活長久一點,開始修改ip包的生存時間ttl為下面的過程中可能帶來的問題做准備。把ttl改成255. (ttl定義一個ip包如果在網路上到不了主機後,在網路上能存活的時間,改長一點在本例中有利於做充足的廣播)

下載一個可以自由製作各種包的工具(例如hping2)

然後和上面一樣,尋找主機C的漏洞按照這個漏洞當掉主機C。

在該網路的主機找不到原來的192.0.0.3後,將更新自己的ARP對應表。於是他發送一個原ip地址為192.168.0.3硬體地址為BB:BB:BB:BB:BB:BB的ARP響應包。

好了,現在每台主機都知道了,一個新的MAC地址對應192.0.0.3,一個ARP欺騙完成了,但是,每台主機都只會在區域網中找這個地址而根本就不會把發送給192.0.0.3的ip包丟給路由。於是他還得構造一個ICMP的重定向廣播。

自己定製一個ICMP重定向包告訴網路中的主機:"到192.0.0.3的路由最短路徑不是區域網,而是路由,請主機重定向你們的路由路徑,把所有到192.0.0.3的ip包丟給路由。"

主機A接受這個合理的ICMP重定向,於是修改自己的路由路徑,把對192.0.0.3的通訊都丟給路由器。

入侵者終於可以在路由外收到來自路由內的主機的ip包了,他可以開始tel到主機的23口。

其實上面的想法只是一種理想話的情況,主機許可接收的ICMP重定向包其實有很多的限制條件,這些條件使ICMP重定向變的非常困難。

TCP/IP協議實現中關於主機接收ICMP重定向報文主要有下面幾條限制:

新路由必須是直達的

重定向包必須來自去往目標的當前路由

重定向包不能通知主機用自己做路由

被改變的路由必須是一條間接路由

由於有這些限制,所以ICMP欺騙實際上很難實現。但是我們也可以主動的根據上面的思維尋找一些其他的方法。更為重要的是我們知道了這些欺騙方法的危害性,我們就可以採取相應的防禦辦法。

3.3 ARP欺騙的防禦

知道了ARP欺騙的方法和危害,我們給出一些初步的防禦方法:

不要把你的網路安全信任關系建立在ip地址的基礎上或硬體mac地址基礎上,(rarp同樣存在欺騙的問題),理想的關系應該建立在ip+mac基礎上。

設置靜態的mac-->ip對應表,不要讓主機刷新你設定好的轉換表。

除非很有必要,否則停止使用ARP,將ARP做為永久條目保存在對應表中。在linux下可以用ifconfig -arp可以使網卡驅動程序停止使用ARP。

使用代理網關發送外出的通訊。

修改系統拒收ICMP重定向報文

在linux下可以通過在防火牆上拒絕ICMP重定向報文或者是修改內核選項重新編譯內核來拒絕接收ICMP重定向報文。

在win2000下可以通過防火牆和IP策略拒絕接收ICMP報文。

4 代理ARP的應用

代理ARP有兩大應用,一個是有利的就是我們在防火牆實現中常說的透明模式的實現,另一個是有害的就是通過它可以達到在交換環境中進行嗅探的目的.由此可見同樣一種技術被應用於不同的目的,效果是不一樣的.

我們先來看交換環境中區域網的嗅探.

通常在區域網環境中,我們都是通過交換環境的網關上網的。在交換環境中使用NetXray或者NAI Sniffer一類的嗅探工具除了抓到自己的包以外,是不能看到其他主機的網路通信的。

但是我們可以通過利用ARP欺騙可以實現Sniffer的目的。

ARP協議是將IP地址解析為MAC地址的協議,區域網中的通信都是基於MAC地址的。

圖4 交換網路中的ARP欺騙

如圖4所示,三台主機位於一個交換網路的環境中,其中A是網關:

A: ip地址 192.168.0.1 硬體地址 AA:AA:AA:AA:AA

B: ip地址 192.168.0.2 硬體地址 BB:BB:BB:BB:BB

C:ip地址 192.168.0.3 硬體地址 CC:CC:CC:CC:CC

在區域網中192.168.0.2和192.168.0.3都是通過網關192.168.0.1上網的,假定攻擊者的系統為192.168.0.2,他希望聽到192.168.0.3的通信,那麼我們就可以利用ARP欺騙實現。

這種欺騙的中心原則就是arp代理的應用.主機A是區域網中的代理伺服器,區域網中每個節點的向外的通信都要通過它.主機B想要聽主機C的通信,它需要先使用ARP欺騙,讓主機C認為它就是主機A,這個時候它發一個IP地址為192.168.0.1,物理地址為BB:BB:BB:BB:BB:BB的ARP響應包給主機C,這樣主機C會把發往主機A的包發往主機B.同理,還要讓網關A相信它就是主機C,向網關A發送一個IP地址為192.168.0.3,物理地址為BB:BB:BB:BB:BB:BB的包.

上面這一步的操作和前面的ARP欺騙的原理是一樣的,但是還是有問題,過一段時間主機B會發現自己無法上網.所以下面還有一個步驟就是需要在主機B上轉發從主機A到主機C的包,並且轉發從主機C到主機A的包.現在我們可以看到其實主機B在主機A和主機C的通訊中起到了一個代理的作用,這就是為什麼叫做ARP代理的原因.

具體實現要用到兩個工具dsniff和fragrouter,dsniff用來實現ARP欺騙,fragroute用來進行包的轉發.

首先利用dsniff中的arpspoof來實現ARP欺騙,dsniff軟體可以在下面的網址下載:
naughty.monkey/~gsong/dsniff

安裝這個軟體包之前先要下載安裝lib.

欺騙192.168.0.3,告訴這台機器網關192.168.0.1的MAC地址是192.168.0.2的MAC地址.

[root@sound dsniff-2.3]# ./arpspoof -i eth0 -t 192.168.0.3 192.168.0.1欺騙192.168.0.1,告訴192.168.0.1主機192.168.0.3的MAC地址是192.168.0.2的MAC地址。

[root@sound dsniff-2.3]# ./arpspoof -i eth0 -t 192.168.0.1 192.168.0.3現在我們已經完成了第一步的欺騙,這個欺騙是通過arpspoof來完成的,當然您也可以使用別的工具甚至自己發包來完成.現在我們可以看到在主機A和主機C的arp列表裡面都完成了我們需要的工作.在後面的透明代理中我們將使用另外一種不同的理念.

下面我們先打開linux系統中的轉發包的選項:

[root@sound /root]# echo "1" >/proc/sysipv4/ip_forward下面我們可以下載大名鼎鼎的gsong的另外一個工具fragroute,這個工具以前叫做fragrouter(僅有1字的差別)主要用於實現入侵檢測系統處理分片的ip和tcp包功能的檢測,本身自代包轉發的功能.可以到下面的網站下載:
monkey/~gsong/fragroute/

安裝這個軟體包之前先要下載安裝libpcap和libevent.

當然我們也可以使用fragrouter來完成:
packetstormsecurity/groups/ w00w00/sectools/fragrouter/

[root@sound fragrouter-1.6]# ./fragrouter -B1

fragrouter: base-1: normal IP forwarding

現在就可以實現在交換區域網中嗅探的目標.當然上面這些只是一些原理性的介紹,在真正的使用中會遇到很多的問題,比如如何實現對網關A和主機C的欺騙,以及如何處理可能出現的廣播風暴問題,這些可以在實踐中學習.還有一個叫arpsniff的工具能夠很方便的完成這一功能,很多網站都提供下載,界面比較友好,由於和上面的原理一樣,只是工具使用上的不同並且添加了一些附加的功能,所以這里不在進行介紹.

代理ARP的另外一個應用就是防火牆的透明代理的實現.我們都知道早期的防火牆大都是基於路由模式,也就是防火牆要完成一個路由的作用.這種接入方式需要在區域網內的主機上設置防火牆的IP為代理,而且需要在外部路由器的路由表中加入一條指向防火牆的路由.這種方式的缺點在於不透明,需要進行過多的設置,並且破壞了原有的網路拓撲.所以現在幾乎全部的防火牆都實現了一種透明接入的功能,用戶的路由器和客戶端不用做任何修改,用戶甚至感覺不到透明接入方式防火牆的存在.這種透明接入的原理就是ARP代理.

我們現在看如何配置一台主機作為透明接入模式的防火牆(透明接入的防火牆不需要IP),

圖5

如圖5所示,一台防火牆連接內部網段和DMZ網段到外部路由.我們在這台用作防火牆的主機上使用linux操作系統,這樣我們可以方便的使用iptables防火牆.假設三塊網卡為eth0,eth1和eth2,eth0和路由器相連,eth1和內網相連.eth2和外網相連.假設DMZ區有2台伺服器.

內網地址:192.168.1.0/24

DMZ地址:192.168.1.2---192.168.1.3

路由器的ip地址:192.168.1.1

eth0:AA:AA:AA:AA:AA:AA

eth1:BB:BB:BB:BB:BB:BB

eth2:CC:CC:CC:CC:CC:CC

和前面差不多,第一步需要實現ARP欺騙,這次我們有個簡單的實現.我們把路由器的IP地址和防火牆的eth1和eth2的網卡物理地址綁定,將內網和DMZ網段的IP地址和eth0的網卡綁定,在linux系統上我們用arp命令實現:

arp -s 192.168.1.1 BB:BB:BB:BB:BB:BB

arp -s 192.168.1.1 CC:CC:CC:CC:CC:CC

arp -s 192.168.1.0/24 AA:AA:AA:AA:AA:AA

第二部我們需要在基於linux的防火牆上設置路由,把目標地址是外部路由的包轉發到eth0,把目標地址為內網的包轉發到eth1,把目標地址是DMZ網段伺服器的包轉發到eth2.在linux下面用route命令實現

route add 192.168.1.1 dev eth0

route add - 192.168.1.0/24 dev eth1

route add 192.168.1.2 dev eth2

route add 192.168.1.3 dev eth3

(針對DMZ網段裡面的每台伺服器都要增加一條單獨的路由) 現在我們就已經實現了一個簡單的arp代理的透明接入,當然對應於防火牆的iptables部分要另外配置,iptables的配置不在本文范疇之內.

小結

本文介紹了ARP協議以及與其相關的安全問題。一個重要的安全問題就是ARP欺騙,我們講到了同一網段的ARP欺騙以及跨網段的ARP欺騙和ICMP重定向相結合的方法。由於有這些安全問題的存在,我們給出一些最基本的解決辦法。最後談到了利用代理ARP實現在交換網路中嗅探和防火牆的透明接入。

Ⅵ 什麼是MAC地址

Mac地址就是在媒體接入層上使用的地址,通俗點說就是網卡的物理地址,現在的Mac地址一般都採用6位元組48bit(在早期還有2位元組16bit的Mac地址)。
對於MAC地址,由於我們不直接和它接觸,所以大家不一定很熟悉。在OSI(Open System Interconnection,開放系統互連)7層網路協議(物理層,數據鏈路層,網路層,傳輸層,會話層,表示層,應用層)參考模型中,第二層為數據鏈路層(Data Link)。它包含兩個子層,上一層是邏輯鏈路控制(LLC:Logical Link Control),下一層即是我們前面所提到的MAC(Media Access Control)層,即介質訪問控制層。所謂介質(Media),是指傳輸信號所通過的多種物理環境。常用網路介質包括電纜(如:雙絞線,同軸電纜,光纖),還有微波、激光、紅外線等,有時也稱介質為物理介質。MAC地址也叫物理地址、硬體地址或鏈路地址,由網路設備製造商生產時寫在硬體內部。這個地址與網路無關,也即無論將帶有這個地址的硬體(如網卡、集線器、路由器等)接入到網路的何處,它都有相同的MAC地址,MAC地址一般不可改變,不能由用戶自己設定。
MAC地址前24位是由生產廠家向IEEE申請的廠商地址。後24位就由生產廠家自行定擬了。(早期的2位元組的卻不用申請)
一:IP地址和Mac地址有什麼聯系和區別
對於IP地址,相信大家都很熟悉,即指使用TCP/IP協議指定給主機的32位地址。IP地址由用點分隔開的4個8八位組構成,如192.168.0.1就是一個IP地址,這種寫法叫點分十進制格式。IP地址由網路地址和主機地址兩部分組成,分配給這兩部分的位數隨地址類(A類、B類、C類等)的不同而不同。網路地址用於路由選擇,而主機地址用於在網路或子網內部尋找一個單獨的主機。一個IP地址使得將來自源地址的數據通過路由而傳送到目的地址變為可能。
現在有很多計算機都是通過先組建區域網,然後通過交換機和Internet連接的。然後給每個用戶分配固定的IP地址,由管理中心統一管理,這樣為了管理方便就需要使用Mac地址來標志用戶,防止發生混亂,明確責任(比如網路犯罪)。另外IP地址和Mac地址是有區別的,雖然他們在區域網中是一一對應的關系。IP地址是跟據現在的IPv4標准指定的,不受硬體限制比較容易記憶的地址,而Mac地址卻是用網卡的物理地址,多少與硬體有關系,比較難於記憶。
MAC地址的長度為48位(6個位元組),通常表示為12個16進制數,每2個16進制數之間用冒號隔開,如:08:00:20:0A:8C:6D就是一個MAC地址,其中前6位16進制數08:00:20代表網路硬體製造商的編號,它由IEEE(Istitute of Electrical and Electronics Engineers,電氣與電子工程師協會)分配,而後3位16進制數0A:8C:6D代表該製造商所製造的某個網路產品(如網卡)的系列號。每個網路製造商必須確保它所製造的每個乙太網設備都具有相同的前三個位元組以及不同的後三個位元組。這樣就可保證世界上每個乙太網設備都具有唯一的MAC地址。
既然每個乙太網設備在出廠時都有一個唯一的MAC地址了,那為什麼還需要為每台主機再分配一個IP地址呢?或者說為什麼每台主機都分配唯一的IP地址了,為什麼還要在網路設備(如網卡,集線器,路由器等)生產時內嵌一個唯一的MAC地址呢?主要原因有以下幾點:(1)IP地址的分配是根據網路的拓樸結構,而不是根據誰製造了網路設置。若將高效的路由選擇方案建立在設備製造商的基礎上而不是網路所處的拓樸位置基礎上,這種方案是不可行的。(2)當存在一個附加層的地址定址時,設備更易於移動和維修。例如,如果一個乙太網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網卡。(3)無論是區域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。數據包在這些節點之間的移動都是由ARP(Address Resolution Protocol:地址解析協議)負責將IP地址映射到MAC地址上來完成的。下面我們來通過一個例子看看IP地址和MAC地址是怎樣結合來傳送數據包的。
假設網路上要將一個數據包(名為PAC)由臨沭的一台主機(名稱為A,IP地址為IP_A,MAC地址為MAC_A)發送到北京的一台主機(名稱為B,IP地址為IP_B,MAC地址為MAC_B)。這兩台主機之間不可能是直接連接起來的,因而數據包在傳遞時必然要經過許多中間節點(如路由器,伺服器等等),我們假定在傳輸過程中要經過C1、C2、C3(其MAC地址分別為M1,M2,M3)三個節點。A在將PAC發出之前,先發送一個ARP請求,找到其要到達IP_B所必須經歷的第一個中間節點C1的MAC地址M1,然後在其數據包中封裝(Encapsulation)這些地址:IP_A、IP_B,MAC_A和M1。當PAC傳到C1後,再由ARP根據其目的IP地址IP_B,找到其要經歷的第二個中間節點C2的MAC地址M2,然後再將帶有M2的數據包傳送到C2。如此類推,直到最後找到帶有IP地址為IP_B的B主機的地址MAC_B,最終傳送給主機B。在傳輸過程中,IP_A、IP_B和MAC_A不變,而中間節點的MAC地址通過ARP在不斷改變(M1,M2,M3),直至目的地址MAC_B。
二:如何知道自己的Mac地址
方法比較多,也比較簡單,在這里介紹兩種常用的方法,在Win9x 可用:WinIPcfg獲得,在2000、XP可用IPconfig -all獲得。如果你已經給自己的網卡分配了IP,還可以用 nbtstat -A 自己的IP,後者只能在2000/XP下使用。
在Windows 98/Me中,依次單擊「開始」→「運行」 →輸入「winipcfg」→回車。
在Windows 2000/XP中,依次單擊「開始」→「運行」→輸入「CMD」→回車→輸入「ipconfig /all」→回車。
也可以用 nbtstat -A IP地址(還可以獲得別的東東,可別學壞啊)。另外同一區域網內的,你可以用ping IP 或者ping 主機名,然後用arp -a 來獲得。
三:為什麼要修改MAC地址
為什麼要修改MAC地址,到底有什麼實際意義呢?簡單的說,MAC地址相當於你的網路標識,在區域網里,管理人員常常將網路埠與客戶機的MAC地址綁定,方便管理,萬一你的網卡壞掉了,換一張網卡必須向管理人員申請更改綁定的MAC地址,比較麻煩。如果這時我們又急於使用MAC以便上網。這時候,我們直接在操作系統里更改一下MAC,就可以跳過重新申請這一步,減少了很多麻煩。
另外,當你使用黑客軟體對別人的機器進行攻擊時,別人的防火牆獲取到你的IP地址,就可以通過「Nbtstat -A ip地址」命令獲取你的MAC,如果你改一下,呵呵,查到的MAC就不是你的了。(可別說我教你學壞啊!)
四:如何修改自己的Mac地址
Mac地址是保存在網卡的EPROM裡面,通過網卡生產廠家提供的修改程序可以更改存儲器里的地址,即使網卡沒有這樣的設置我們也可以通過間接的方法修改,一般網卡發出的包的源Mac地址並不是網卡本身寫上去的,而是應用程序提供的,只是在通常的實現中,應用程序先從網卡上得到Mac地址,每次發送的時候都用這個Mac做為源Mac而已,Windows中,網卡的Mac保存在注冊表中,實際使用也是從注冊表中提取的,所以只要修改注冊表就可以簡單的改變Mac
Win9x中修改:
打開注冊表編輯器,在HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Service\Class\Net\下的0000,0001,0002
Win2000/XP中的修改:同樣打開注冊表編輯器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果在0000找到,就在0000下面添加字元串變數,命名為NetworkAddress,值為要設置的Mac地址,例如:000102030405。完成上述操作後重啟就好了。
Linux下的修改:
必須關閉網卡設備,否則會報告系統忙,無法更改。
命令是:/sbin/ifconfig eth0 down;.修改Mac地址,這一步較Windows中的修改要簡單。命令是:/sbin/ifconfig eth0 hw ether 00 AA�BB CC DD EE;重新啟用網卡,/sbin/ifconfig eth0 up網卡的Mac地址更改就完成了。
如果你要經常改換地址的話在注冊表裡改來改去的方法就實在是太繁瑣了。不用擔心,用下面的方法可以使你的修改更方便,更簡單。
現以Windows 2000/XP為例來簡要說明一下:第一步,單擊「開始」→「運行」→輸入「Regedit」,打開注冊表編輯器,按Ctrl+F打開查找窗,輸入「DriverDesc」單擊確定。
雙擊找到的內容,即為你要修改的網卡的信息描述,左邊數形列表顯示當前主鍵(比如0000)。第二步,在相應的0000下新建一串值,命名為NetworkAddress,鍵值設為你要的MAC地址,注意要連續寫,如112233445566。第三步,重新啟動計算機,你就會發現網卡MAC地址已經改變為你所設置的地址。第四步,在相應的0000下的Ndi\Params中加一項,主鍵名為NetworkAddress,然後在該主鍵下添加名為default的串值,其值設為你要設的MAC地址,同樣也要連續地寫。第五步,在NetworkAddress主鍵下繼續添加名為ParamDesc的字元串,其值可設為「MAC Address」。
全部設置完成了,關閉注冊表,重新啟動計算機,打開「網路鄰居」的屬性,選擇相應的網卡,單擊「屬性」選擇「高級」選項卡,屬性中會多出MAC Address的選項,也就是在上面第二步在注冊表中添加的NetworkAddress項,以後只要在此處的設置值中修改MAC地址就可以了。
五:如何捆綁MAC地址和IP地址
進入「MS-DOS方式」或「命令提示符」,在命令提示符下輸入命令:ARP - s 10.88.56.72 00-10-5C-AD-72-E3,即可把MAC地址和IP地址捆綁在一起。
對於自行修改MAC地址入網,網管員還是有辦法偵測出來的。因此,換網卡後別忘記跟網管打個招呼,重新綁定啊。

2004.2.15

熱點內容
比特幣場外交易被騙怎麼辦 發布:2025-05-12 17:27:53 瀏覽:151
不賣礦機賣什麼 發布:2025-05-12 15:40:56 瀏覽:848
eth在哪個交易所要合法 發布:2025-05-12 15:05:10 瀏覽:901
元宇宙涉及電子行業 發布:2025-05-12 15:01:29 瀏覽:798
元宇宙可行嗎 發布:2025-05-12 14:49:17 瀏覽:505
區塊鏈運動app 發布:2025-05-12 14:28:28 瀏覽:81
實名認證不屬於去中心化嗎 發布:2025-05-12 14:00:46 瀏覽:79
區塊鏈APP查詢 發布:2025-05-12 13:34:49 瀏覽:922
達沃斯論壇里2019陽光區塊鏈 發布:2025-05-12 13:34:49 瀏覽:593
比特幣現金會歸零嗎 發布:2025-05-12 13:25:05 瀏覽:720