第一種方法:
allen@jettech-WS-C621E-SAGE-Series:~$ sudo virsh domifaddr win10-01
Name MAC address Protocol Address
-------------------------------------------------------------------------------
vnet0 52:54:00:b3:42:28 ipv4 192.168.122.118/24
第二種方式:
allen@jettech-WS-C621E-SAGE-Series:~$ sudo virsh dumpxml win10-01 | grep mac
<partition>/machine</partition>
<type arch='x86_64' machine='pc-i440fx-bionic'>hvm</type>
<mac address='52:54:00:b3:42:28'/>
allen@jettech-WS-C621E-SAGE-Series:~$ arp -a | grep '52:54:00:b3:42:28'
? (192.168.122.118) 位于 52:54:00:b3:42:28 [ether] 在 virbr0
網(wǎng)卡arp清理:
arp緩存就是IP地址和MAC地址關(guān)系緩存列表。
在Windows下 arp -d [$ip] 不指定IP地址時(shí)清除所有arp緩存。
在Linux下 arp -d $ip 必須指定IP地址才能執(zhí)行這條命令的此參數(shù),所有在Linux系統(tǒng)下 arp -d $ip 命令只能清除一個(gè)IP地址的對(duì)應(yīng)MAC地址緩存,當(dāng)然可以使用組合命令操作,這也算是Linux的一個(gè)優(yōu)點(diǎn)吧。
組合命令清除所有arp緩存:
arp -n|awk '/^[1-9]/{system("arp -d "$1)}'
其實(shí)Linux也有內(nèi)部命令清除所有arp緩存,但是不太好記憶,用的人很少。以下命令清除eth0接口的所有arp緩存。
ip neigh flush dev eth0
Linux 清除arp緩存是把列表標(biāo)記為(incomplete),在下一次系統(tǒng)清理垃圾是會(huì)清除。
Linux 命令(199)—— arp 命令
1.命令簡(jiǎn)介
arp(Address Resolution Protocol)操作主機(jī)的 ARP 緩存。
arp 可以顯示 arp 緩沖區(qū)中的所有條目、刪除指定的條目或者添加靜態(tài)的 IP 地址與 MAC 地址對(duì)應(yīng)關(guān)系。
2.命令格式
arp [-vn] [-H <type>] [-i <if>] [-ae] [<hostname>]
arp [-v] [-i <if>] -d <hostname> [pub]
arp [-v] [-H <type>] [-i <if>] -s <hostname> <hw_addr> [temp]
arp [-v] [-H <type>] [-i <if>] -s <hostname> <hw_addr> [netmask <nm>] pub
arp [-v] [-H <type>] [-i <if>] -Ds <hostname> <ifname> [netmask <nm>] pub
arp [-vnD] [-H <type>] [-i <if>] -f [<filename>]
3.選項(xiàng)說(shuō)明
-a
使用備用 BSD 樣式輸出格式(沒(méi)有固定列)。
-H, --hw-type, -t <type>
指定arp指令使用的地址類型。
-d <address>
從 arp 緩存中刪除指定主機(jī)的 arp 條目。
-D, --use-device
使用指定接口的硬件地址。
-e
以 Linux 的顯示風(fēng)格顯示 arp 緩存中的條目。
-i, --device <if>
指定要操作 arp 緩存的網(wǎng)絡(luò)接口。
-n, --numeric
以數(shù)字方式顯示 arp 緩存中的條目。
-v, --verbose
顯示詳細(xì)的arp緩存條目,包括緩存條目的統(tǒng)計(jì)信息。
-f, --file <filename>
設(shè)置主機(jī)的IP地址與 MAC 地址的靜態(tài)映射。
4.常用示例
1)查看 arp 緩存表
arp
Address HWtype HWaddress Flags Mask Iface
169.254.0.47 ether fe:ee:7f:99:99:19 C eth0
169.254.0.4 ether fe:ee:7f:99:99:19 C eth0
169.254.0.15 ether fe:ee:7f:99:99:19 C eth0
(2)查看 arp 表,并且用 IP 顯示而不是主機(jī)名稱。
arp -n
Address HWtype HWaddress Flags Mask Iface
169.254.0.47 ether fe:ee:7f:99:99:19 C eth0
169.254.0.4 ether fe:ee:7f:99:99:19 C eth0
169.254.0.15 ether fe:ee:7f:99:99:19 C eth0
————————————————
(3)查看 arp 表,使用備用?BSD?樣式輸出格式(沒(méi)有固定列)。
arp -a
? (169.254.0.47) at fe:ee:7f:99:99:19 [ether] on eth0
? (169.254.0.4) at fe:ee:7f:99:99:19 [ether] on eth0
? (169.254.0.15) at fe:ee:7f:99:99:19 [ether] on eth0
4)IP 和 MAC 地址綁定。
arp -s 172.16.0.76 00:50:56:26:d8:87
(5)刪除 ARP 緩存表中指定項(xiàng)。
arp -d 169.254.0.47
(6)刪除指定網(wǎng)卡的 arp 表。
arp -i eth0 -d 169.254.0.4
7)使用 eth1 的 MAC 地址回答?eth0?上的 192.168.60.2 的 arp 請(qǐng)求。
arp -i eth0 -Ds 192.168.60.2 eth1 pub
(8)顯示詳細(xì)的 arp 緩存條目,包括緩存條目的統(tǒng)計(jì)信息
arp -v
Address HWtype HWaddress Flags Mask Iface
169.254.0.47 ether fe:ee:7f:99:99:19 C eth0
169.254.0.4 ether fe:ee:7f:99:99:19 C eth0
169.254.0.15 ether fe:ee:7f:99:99:19 C eth0
169.254.0.3 ether fe:ee:7f:99:99:19 C eth0
169.254.0.2 ether fe:ee:7f:99:99:19 C eth0
169.254.128.8 ether fe:ee:7f:99:99:19 C eth0
169.254.128.12 ether fe:ee:7f:99:99:19 C eth0
169.254.0.138 ether fe:ee:7f:99:99:19 C eth0
169.254.0.55 ether fe:ee:7f:99:99:19 C eth0
10.0.0.1 ether fe:ee:7f:99:99:19 C eth0
169.254.0.23 ether fe:ee:7f:99:99:19 C eth0
示例:
添加靜態(tài)項(xiàng)。這個(gè)很有用,特別是局域網(wǎng)中中了arp病毒以后
# arp -s 192.168.100.81 00:15:C5:E1:D1:58
# arp -a ? .... 顯示 ARP 表。
但是arp -s設(shè)置的靜態(tài)項(xiàng)在用戶登出之后或重起之后會(huì)失效,如果想要任何時(shí)候都不失效,可以將ip和mac的對(duì)應(yīng)關(guān)系寫入arp命令默認(rèn)的配置文件/etc/ethers中?例如:
root@ubuntu:/# vi /etc/ethers
192.168.100.81 00:15:C5:E1:D1:58
寫入之后執(zhí)行下面的命令就好了,引用:arp -f /etc/ethers
為保證重起之后綁定仍然有效,需要把上述命令寫入/etc/ethers
?
ARP(Address Resolution Protocol),或稱地址解析協(xié)議。
本地機(jī)向"某個(gè)IP地址 -- 目標(biāo)機(jī)IP地址"發(fā)送數(shù)據(jù)時(shí),先查找本地的ARP表,如果在ARP表中找到"目標(biāo)機(jī)IP地址"的ARP表項(xiàng),(網(wǎng)絡(luò)協(xié)議)將把"目標(biāo)機(jī)IP地址"對(duì)應(yīng)的"MAC地址"放到MAC包的"目的MAC地址字段"直接發(fā)送出去;
如果在ARP表沒(méi)有找到"目標(biāo)機(jī)IP地址"的ARP表項(xiàng),則向局域網(wǎng)發(fā)送廣播ARP包("目的MAC地址字段" == FF:FF:FF:FF:FF:FF),目標(biāo)機(jī)將向本地機(jī)回復(fù)ARP包(包含目標(biāo)機(jī)的MAC地址)
############################################################################[root@firewall bin]# arp -a
? (192.168.100.83) at 00:15:58:A2:13: D0 [ether] on eth0
? (192.168.100.81) at 00:15:C5:E1: D1:58 [ether] PERM on eth0發(fā)現(xiàn)沒(méi)有?多了一個(gè)PERM!
或者
[root@firewall bin]# cat /proc/net/arp
IP address ?HWtype ?Flags ?HWaddress ?Mask ?Device
192.168.100.83 ?0x1 ?0x2 ?00:15:58:A2:13:D0 ?* ?eth0
192.168.100.81 ?0x1 ?0x6 ?00:15:C5:E1:D1:58 ?* ?eth0[root@firewall bin]# arp -s 192.168.100.83 00:15:58:A2:13:D0
[root@firewall bin]# cat /proc/net/arp
IP address ?HW type ?Flags ?HW address ?Mask ?Device
192.168.100.83 ?0x1 ?0x6 ?00:15:58:A2:13:D0 ?* ?eth0
192.168.100.81 ?0x1 ?0x6 ?00:15:C5:E1: D1:58 ?* ?eth0發(fā)現(xiàn)沒(méi)有?Flags改變了!
所以我們可以用兩種方法找到arp的靜態(tài)綁定地址:
#arp -a | grep PERM ? 或者
#cat /proc/net/arp | grep 0x6
但建議用后者比較快。
利用靜態(tài)ARP表進(jìn)行控制
我們知道,ARP(Address Resolution Protocol,地址轉(zhuǎn)換協(xié)議)被當(dāng)作底層協(xié)議,用于IP地址到物理地址的轉(zhuǎn)換。在以太網(wǎng)中,所有對(duì)IP的訪問(wèn)最終都轉(zhuǎn)化為對(duì)網(wǎng)卡MAC地址的訪問(wèn)。?不妨設(shè)想一下,如果主機(jī)A的ARP列表中,到主機(jī)B的IP地址與MAC地址對(duì)應(yīng)不正確,由A發(fā)往B數(shù)據(jù)包就會(huì)發(fā)向錯(cuò)誤的MAC地址,當(dāng)然無(wú)法順利到達(dá)B,結(jié) 果是A與B根本不能進(jìn)行通信。Linux可以通過(guò)arp命令控制ARP轉(zhuǎn)換,即IP到MAC的轉(zhuǎn)換。因此,也能利用這一功能對(duì)用戶MAC地址進(jìn)行匹配。下面我們就來(lái)看看arp命令的用法。?
輸入arp將顯示當(dāng)前所有ARP轉(zhuǎn)換記錄,類似于這樣:?Address ?HWtype ?HWaddress ?Flags ?Mask ?Iface?
www.baidu.com ether ?00:06:29:57:16:F5 ?C ?eth0?
218.200.80.177 ?ether ?00:01:30:F4:32:40 ?C ?eth1?
192.168.100.25 ?ether ?00:02:1E:F1:92:C2 ?C ?eth0?由此可以看到,當(dāng)前系統(tǒng)保留的IP地址與MAC地址一一對(duì)應(yīng),并指明了硬件類型(Hwtype)和通信所使用的接口(Iface)。不過(guò)這些都是動(dòng)態(tài)生成的,無(wú)需手工干預(yù)。我們要做的恰恰是手工干預(yù)這一過(guò)程。?
我們需要用到arp命令的另一重要功能,就是手工更改這一對(duì)應(yīng)關(guān)系。此外,該命令還可以讀取文本文件中的ARP記錄,其默認(rèn)文件是/etc/ethers。也就是說(shuō),當(dāng)輸入ARP-f的時(shí)候,系統(tǒng)就會(huì)讀取/etc/ethers這個(gè)文件,并以其中的項(xiàng)目取代系統(tǒng)當(dāng)前的ARP記錄。假設(shè)/etc/ethers 文件內(nèi)容如下:?
192.168.100.25 00:02:01:50:BB:53
然后執(zhí)行命令arp –f
這時(shí),我們查看系統(tǒng)ARP表,會(huì)發(fā)現(xiàn)無(wú)論192.168.100.25原來(lái)對(duì)應(yīng)的MAC地址是什么,都會(huì)被新的所取代:?
www.baidu.com ether ?00:06:29:57:16:F5 ?C ?eth0?
218.200.80.177 ?ether ?00:01:30:F4:32:40 ?C ?eth1?
192.168.100.25 ?ether ?00:02:01:50:BB:53 ?C ?eth0此時(shí),本機(jī)發(fā)往192.168.100.25的數(shù)據(jù)包目標(biāo)MAC地址將由原來(lái)的00:02:1E:F1:92:C2改為00:02:01:50:BB:53 顯然,如果192.168.100.25所在網(wǎng)卡的MAC地址并非00:02:01:50:BB:53,數(shù)據(jù)包就無(wú)法到達(dá)正確的目的地,那么它們也就無(wú)法通信了,這樣也達(dá)到了識(shí)別非法用戶的目的。?
當(dāng)然,控制MAC地址的方法還不止這些,例如可以利用交換機(jī)的端口管理功能識(shí)別用戶。根據(jù)交換機(jī)的原理,它是直接將數(shù)據(jù)發(fā)送到相應(yīng)端口,那么就必須保有一個(gè)數(shù)據(jù)庫(kù),包含所有端口所連網(wǎng)卡的MAC地址,由此可見,控制每個(gè)端口使用的MAC地址理論上是完全可行的。大部分中高端交換機(jī)如3Com SuperStack系列等,都具有這種功能。具體操作與交換機(jī)型號(hào)有關(guān),這里就不贅述。?
最后,提醒一下,MAC地址控制并非絕對(duì)保險(xiǎn)。正如這個(gè)世界上沒(méi)有絕對(duì)解不開的密碼一樣,所謂安全都是相對(duì)于特定的環(huán)境而言。現(xiàn)在,很多網(wǎng)卡都支持MAC地址的軟件修改,Linux和Windows本身也都有辦法修改這一物理地址。不過(guò)由于這種方式相對(duì)穩(wěn)定,摒棄了繁瑣的客戶端設(shè)置,對(duì)用戶完全透明,而且具備很強(qiáng)的可操作性,所以在某種程度上說(shuō)是安全的。
MAC記錄與端口掃描腳本
(1) 需求描述
● 編寫名為system.sh的腳本,記錄局域網(wǎng)中各主機(jī)的MAC地址,保存到/etc/ethers文件中;若此文件已存在,應(yīng)先轉(zhuǎn)移進(jìn)行備份;每行一條記錄,第1列為IP地址,第2列為對(duì)應(yīng)的MAC地址。
● 檢查有哪些主機(jī)開啟了匿名FTP服務(wù),掃描對(duì)象為/etc/ethers文件中的所有IP地址,掃描的端口為21.
(2) 實(shí)現(xiàn)步驟
[root@localhost ~]#vim system.sh
#!/bin/bash
#定義網(wǎng)段地址、mac列表文件
NADD="192.168.4."
FILE="/etc/ethers"
#發(fā)送ARP請(qǐng)求,并記錄反饋信息
[ -f $FILE ] && /bin/cp -f $FILE $FILE.old #備份原有文件
HADD=1 #定義起始掃描地址
while [ $HADD -lt 254 ]
do
ping -c 2 -w 1 ${NADD}${HADD} &> /dev/null
if [ $? -eq 0 ];then
arp -n ${NADD}${HADD} | awk '{print $1,$3}' >> $FILE
fi
let HADD++
done
TARGET=$(awk '{print $1}' /etc/ethers)
echo "以下主機(jī)已開放匿名FTP服務(wù):"
for IP in $TARGET
do
wget [ftp://$IP/](ftp://$IP/) &> /dev/null
if [ $? -eq 0 ];then
echo $IP
rm -rf index.html #事先在ftp服務(wù)器上準(zhǔn)備下載文件,測(cè)試后刪除
fi
done
# chmod +x system.sh
#./system.sh #執(zhí)行檢測(cè)程序
#cat /etc/ethers #確認(rèn)記錄結(jié)果
####/bin/cp相當(dāng)于\cp,即使用原生cp命令,-f表示強(qiáng)制覆蓋,不提示,不與用戶交互
linux下arp協(xié)議-CSDN博客?
arp(8) - Linux manual page
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-417383.html
========================?
單網(wǎng)口ubuntu主機(jī)配置virt-manager傳統(tǒng)橋接bridge網(wǎng)絡(luò)_enaftgm1i0_krokodil98的博客-CSDN博客
單網(wǎng)口ubuntu主機(jī)配置virt-manager傳統(tǒng)橋接bridge網(wǎng)絡(luò)
虛擬機(jī)的網(wǎng)絡(luò)橋接bridge模式往往需要物理宿主機(jī)有兩個(gè)網(wǎng)口,一個(gè)網(wǎng)口1連接外網(wǎng)配置ip,另一個(gè)網(wǎng)口2空閑不配置ip,在virt-manager里配置虛擬機(jī)的網(wǎng)卡綁定網(wǎng)口2,從而實(shí)現(xiàn)虛擬機(jī)橋接網(wǎng)絡(luò)模式。
由于辦公環(huán)境只有一臺(tái)單網(wǎng)口的主機(jī),通過(guò)手動(dòng)配置arp與路由的方式可實(shí)現(xiàn)下方的網(wǎng)絡(luò)拓?fù)潢P(guān)系。如果單網(wǎng)口主機(jī)有相同配置虛擬機(jī)傳統(tǒng)橋接網(wǎng)絡(luò)需求的話,可以參考本文。
先貼下網(wǎng)絡(luò)拓?fù)鋱D:
?
主機(jī)A、B、C處于同一個(gè)內(nèi)網(wǎng)172.30.120.0/24里,其中虛擬機(jī)C的宿主物理機(jī)是B。
按本文操作最終可實(shí)現(xiàn)A<->B、A<->C、B<->C互通。
- 宿主物理機(jī)B為ubuntu14.04系統(tǒng),只有一個(gè)物理網(wǎng)口,網(wǎng)口信息如下:
? ? ?2. 在物理機(jī)B上通過(guò)nm-connection-editor創(chuàng)建橋接網(wǎng)絡(luò)
??
新建一項(xiàng),類型選擇網(wǎng)橋
?
?
?
?
?
3. 物理機(jī)B上,關(guān)閉nm-connection-editor后,再重新打開可見多了“bridge0 port1”和“網(wǎng)橋連接1”。ifconfig發(fā)現(xiàn)多了bridge0網(wǎng)口:?
krokodil@krokodil-SY-ZL-H110N-D3V:~$ ifconfig
bridge0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.30.120.127 netmask 255.255.255.0 broadcast 172.30.120.255
ether de:91:be:83:e7:72 txqueuelen 1000 (以太網(wǎng))
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.30.120.125 netmask 255.255.255.0 broadcast 172.30.120.255
inet6 fe80::10f4:3d60:14c5:c457 prefixlen 64 scopeid 0x20<link>
ether 00:e0:4c:5a:03:01 txqueuelen 1000 (以太網(wǎng))
RX packets 8250 bytes 7874949 (7.8 MB)
RX errors 0 dropped 84 overruns 0 frame 0
TX packets 6888 bytes 1845403 (1.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4.物理機(jī)B上通過(guò)virt-manager創(chuàng)建新虛擬機(jī),步驟略過(guò),網(wǎng)絡(luò)配置如下,配置成橋接模式,設(shè)備綁定到bridge0上:?
5.?虛擬機(jī)C安裝成功后,把虛擬機(jī)內(nèi)網(wǎng)卡配置好ip?
6.?首先需要確保虛擬機(jī)C網(wǎng)口與物理機(jī)B的bridge0和enp1s0這兩個(gè)網(wǎng)口互通,當(dāng)前狀態(tài)虛擬機(jī)C向物理機(jī)B ping包不通:?
由于橋接原理,可知任意從虛擬機(jī)C eth0發(fā)出的包必會(huì)在物理機(jī)B bridge0網(wǎng)口抓到。配置好后,在虛擬機(jī)C內(nèi)部ping物理機(jī)B網(wǎng)橋bridge0,同時(shí)對(duì)物理機(jī)B的bridge0與enp1s0抓包?
?
- 發(fā)現(xiàn)虛擬機(jī)C的icmp request發(fā)到了物理機(jī)B bridge0上,但由于物理機(jī)B不知道虛擬機(jī)C網(wǎng)口ip172.30.120.120的mac地址,所以reply包無(wú)法發(fā)出。
- 查詢物理機(jī)B當(dāng)前的arp規(guī)則,發(fā)現(xiàn)缺失網(wǎng)口enp1s0的ip為172.30.120.120的規(guī)則:
krokodil@krokodil-SY-ZL-H110N-D3V:~$ arp -n
地址 類型 硬件地址 標(biāo)志 Mask 接口
172.30.120.254 (incomplete) bridge0
172.30.120.120 (incomplete) enp1s0
172.30.120.120 ether 52:54:00:32:94:c2 C bridge0
172.30.120.254 ether 04:fe:8d:8e:31:e1 C enp1s0
- 在物理機(jī)B配置一條arp規(guī)則,將虛擬機(jī)C內(nèi)eth0的mac地址52:54:00:32:94:c2與ip172.30.120.120關(guān)聯(lián)起來(lái)
@krokodil-SY-ZL-H110N-D3V:~$ sudo arp -s 172.30.120.120 52:54:00:32:94:c2 -i enp1s0
krokodil@krokodil-SY-ZL-H110N-D3V:~$ arp -n
地址 類型 硬件地址 標(biāo)志 Mask 接口
172.30.120.254 (incomplete) bridge0
172.30.120.120 ether 52:54:00:32:94:c2 CM enp1s0
172.30.120.120 ether 52:54:00:32:94:c2 C bridge0
172.30.120.254 ether 04:fe:8d:8e:31:e1 C enp1s0
再重復(fù)在虛擬機(jī)C內(nèi)向ping 172.30.120.127 -c 1,同時(shí)在物理機(jī)B抓包,發(fā)現(xiàn)虛擬機(jī)C仍然ping不通物理機(jī)B
?
- 這次抓包沒(méi)有抓到arp,發(fā)現(xiàn)物理機(jī)B上reply包并沒(méi)有從enp1s0轉(zhuǎn)發(fā)到bridge0網(wǎng)口。
- 查看物理機(jī)B路由:
內(nèi)核 IP 路由表 目標(biāo) 網(wǎng)關(guān) 子網(wǎng)掩碼 標(biāo)志 躍點(diǎn) 引用 使用 接口 0.0.0.0 172.30.120.254 0.0.0.0 UG 100 0 0 enp1s0 0.0.0.0 172.30.120.254 0.0.0.0 UG 20425 0 0 bridge0 10.10.100.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 virbr0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.30.120.0 0.0.0.0 255.255.255.0 U 100 0 0 enp1s0 172.30.120.0 0.0.0.0 255.255.255.0 U 425 0 0 bridge0
關(guān)于172.30.120.0/24網(wǎng)段的包在物理機(jī)B上有兩條路由,但因?yàn)?00跳數(shù)小于425,所以默認(rèn)向172.30.120.0/24網(wǎng)段的包向enp1s0轉(zhuǎn)發(fā)。這就是為什么上面的reply包沒(méi)有被轉(zhuǎn)發(fā)到bridge0網(wǎng)口。
在物理機(jī)B添加一條關(guān)于172.30.120.120的路由規(guī)則,告知收到目的ip為172.30.120.120的包就直接轉(zhuǎn)發(fā)給bridge0網(wǎng)口:
?
krokodil@krokodil-SY-ZL-H110N-D3V:~$ sudo route add 172.30.120.120 dev bridge0
krokodil@krokodil-SY-ZL-H110N-D3V:~$ route -n
內(nèi)核 IP 路由表
目標(biāo) 網(wǎng)關(guān) 子網(wǎng)掩碼 標(biāo)志 躍點(diǎn) 引用 使用 接口
0.0.0.0 172.30.120.254 0.0.0.0 UG 100 0 0 enp1s0
0.0.0.0 172.30.120.254 0.0.0.0 UG 20425 0 0 bridge0
10.10.100.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 virbr0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.30.120.0 0.0.0.0 255.255.255.0 U 100 0 0 enp1s0
172.30.120.0 0.0.0.0 255.255.255.0 U 425 0 0 bridge0
172.30.120.120 0.0.0.0 255.255.255.255 UH 0 0 0 bridge0
- 此時(shí),虛擬機(jī)C內(nèi)網(wǎng)口eth0可以和物理機(jī)B的bridge0網(wǎng)口、物理網(wǎng)口enp1s0互通。
- 虛擬機(jī)C內(nèi)ping包結(jié)果:
?7.
- 宿主機(jī)B與虛擬機(jī)C互通后,可以進(jìn)一步配置同網(wǎng)段內(nèi)(172.30.120.0/24)機(jī)器A與虛擬機(jī)C互通。此臺(tái)機(jī)器A的ip為172.30.120.121,已驗(yàn)證可ping通物理機(jī)B的兩個(gè)網(wǎng)口ip 172.30.120.125和172.30.120.127。
-
物理機(jī)A網(wǎng)口信息:tcpdump: listening on enaftgm1i0, link-type EN10MB (Ethernet), capture size 262144 bytes 15:09:54.554190 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.30.120.120 tell 172.30.120.121, length 28 15:09:55.580834 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.30.120.120 tell 172.30.120.121, length 28 15:09:56.600821 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.30.120.120 tell 172.30.120.121, length 28 ^C 3 packets captured 3 packets received by filter 0 packets dropped by kernel root@sujing-GW-001N1B-FTF:~#
enaftgm1i0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.30.120.121 netmask 255.255.255.0 broadcast 172.30.120.255 inet6 fe80::54fe:45f6:974e:8db3 prefixlen 64 scopeid 0x20<link> ether 00:07:3e:9d:55:8f txqueuelen 1000 (以太網(wǎng)) RX packets 137322 bytes 43916437 (43.9 MB) RX errors 0 dropped 4476 overruns 0 frame 0 TX packets 188258 bytes 22199429 (22.1 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 7 base 0xc000
- 在當(dāng)前狀態(tài)下,在同網(wǎng)段機(jī)器A(172.30.120.121)上ping 172.30.120.120 -c 1,發(fā)包不通:
PING 172.30.120.120 (172.30.120.120) 56(84) bytes of data. From 172.30.120.121 icmp_seq=1 Destination Host Unreachable --- 172.30.120.120 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
- 在物理機(jī)A網(wǎng)口抓包,發(fā)現(xiàn)172.30.120.121不知道172.30.120.120的mac地址
tcpdump: listening on enaftgm1i0, link-type EN10MB (Ethernet), capture size 262144 bytes 15:09:54.554190 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.30.120.120 tell 172.30.120.121, length 28 15:09:55.580834 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.30.120.120 tell 172.30.120.121, length 28 15:09:56.600821 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.30.120.120 tell 172.30.120.121, length 28 ^C 3 packets captured 3 packets received by filter 0 packets dropped by kernel
- 查詢物理機(jī)A(172.30.120.121)的arp表,看到這一條:
地址 類型 硬件地址 標(biāo)志 Mask 接口 172.30.120.254 ether 04:fe:8d:8e:31:e1 C enaftgm1i0 172.30.120.120 (incomplete) enaftgm1i0 ... ...
- 在物理機(jī)A(172.30.120.121)上增加arp規(guī)則:注意!這里的mac地址要填寫enp1s0的mac地址00:e0:4c:5a:03:01
@sujing-GW-001N1B-FTF:~# sudo arp -s 172.30.120.120 00:e0:4c:5a:03:01 -i enaftgm1i0 root@sujing-GW-001N1B-FTF:~# arp -n 地址 類型 硬件地址 標(biāo)志 Mask 接口 172.30.120.254 ether 04:fe:8d:8e:31:e1 C enaftgm1i0 172.30.120.120 ether 00:e0:4c:5a:03:01 CM enaftgm1i0
然后在物理機(jī)A上重新ping 172.30.120.120,同時(shí)對(duì)物理機(jī)B的兩個(gè)網(wǎng)口抓包
?
-
這次icmp request成功到達(dá)了物理機(jī)B的enp1s0網(wǎng)口,但是在bridge0網(wǎng)口看到虛擬機(jī)C 172.30.120.120發(fā)出的arp查詢包。
-
確認(rèn)虛擬機(jī)C內(nèi)arp表,確實(shí)缺少121的mac地址:
?
-
在虛擬機(jī)C內(nèi)部配置arp規(guī)則172.30.120.121 de:91:be:83:e7:72?(注意!!這里要配置bridge0 mac地址)
-
?
- 此時(shí)再在物理機(jī)A 172.30.120.121上ping包,就可通了。
root@sujing-GW-001N1B-FTF:~# ping 172.30.120.120 -c 1
PING 172.30.120.120 (172.30.120.120) 56(84) bytes of data.
64 bytes from 172.30.120.120: icmp_seq=1 ttl=63 time=0.731 ms
--- 172.30.120.120 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.731/0.731/0.731/0.000 ms
8.?
至此,總結(jié)下:
172.30.120.121物理機(jī)A需要添加一條arp規(guī)則:172.30.120.120 enp1s0的mac地址
172.30.120.125與172.30.120.127物理機(jī)B需要添加一條路由規(guī)則:172.30.120.120 dev bridge0,以及一條arp規(guī)則172.30.120.120 eth0的mac地址
172.30.120.120虛擬機(jī)C需要添加一條arp規(guī)則:172.30.120.121 bridge0的mac地址
- 從物理機(jī)A 網(wǎng)口向 虛擬機(jī)C ping一個(gè)包,抓包看整個(gè)過(guò)程:
物理機(jī)A 172.30.120.121 enaftgm1i0(00:07:3e:9d:55:8f)向ip 172.30.120.120發(fā)request包,根據(jù)物理機(jī)A上的arp規(guī)則,向172.30.120.120發(fā)包的目的mac應(yīng)配為00:e0:4c:5a:03:01(00:e0:4c:5a:03:01為物理機(jī)B 172.30.120.125 enp1s0的mac地址)。所以最終在網(wǎng)口enaftgm1i0抓到的request包,源mac地址是enaftgm1i0,目的mac地址是enp1s0。在通過(guò)內(nèi)網(wǎng)的交換機(jī)與路由器時(shí),此request包會(huì)被轉(zhuǎn)發(fā)到00:e0:4c:5a:03:01所在的網(wǎng)口,即enp1s0網(wǎng)口。
root@sujing-GW-001N1B-FTF:~# tcpdump -i enaftgm1i0 -venn host 172.30.120.120
tcpdump: listening on enaftgm1i0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:14:10.131325 00:07:3e:9d:55:8f > 00:e0:4c:5a:03:01, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 51167, offset 0, flags [DF], proto ICMP (1), length 84)
172.30.120.121 > 172.30.120.120: ICMP echo request, id 6552, seq 1, length 64
16:14:10.131851 00:e0:4c:5a:03:01 > 00:07:3e:9d:55:8f, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 54622, offset 0, flags [none], proto ICMP (1), length 84)
172.30.120.120 > 172.30.120.121: ICMP echo reply, id 6552, seq 1, length 64
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel
- 物理機(jī)B enp1s0(00:e0:4c:5a:03:01)抓包可看到request包(源mac地址是enaftgm1i0,目的mac地址是enp1s0)已到達(dá)物理機(jī)B。根據(jù)物理機(jī)B的路由規(guī)則,172.30.120.120的包應(yīng)轉(zhuǎn)發(fā)給bridge0網(wǎng)口:
tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 16:14:10.163279 00:07:3e:9d:55:8f > 00:e0:4c:5a:03:01, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 51167, offset 0, flags [DF], proto ICMP (1), length 84) 172.30.120.121 > 172.30.120.120: ICMP echo request, id 6552, seq 1, length 64 16:14:10.163690 00:e0:4c:5a:03:01 > 00:07:3e:9d:55:8f, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 54622, offset 0, flags [none], proto ICMP (1), length 84) 172.30.120.120 > 172.30.120.121: ICMP echo reply, id 6552, seq 1, length 64 ^C 2 packets captured 2 packets received by filter 0 packets dropped by kernel
- bridge0(de:91:be:83:e7:72)抓包看到,獲取到了request包(在enp1s0轉(zhuǎn)發(fā)時(shí),源mac地址替換成了bridge0,目的mac地址被替換成了eth0)。
cpdump: listening on bridge0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
16:14:10.163315 de:91:be:83:e7:72 > 52:54:00:32:94:c2, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 51167, offset 0, flags [DF], proto ICMP (1), length 84)
172.30.120.121 > 172.30.120.120: ICMP echo request, id 6552, seq 1, length 64
16:14:10.163677 52:54:00:32:94:c2 > de:91:be:83:e7:72, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 54622, offset 0, flags [none], proto ICMP (1), length 84)
172.30.120.120 > 172.30.120.121: ICMP echo reply, id 6552, seq 1, length 64
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel
172.30.120.120虛擬機(jī)C網(wǎng)口eth0抓包,抓到request和reply(源和目的mac分別是bridge0和eth0):
?
reply包發(fā)送和路由原理相同,略,看抓包即可明白文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-417383.html
?
到了這里,關(guān)于virsh 獲取虛機(jī)IP,網(wǎng)橋ip,brctl,arp使用 Linux 命令(199)—— arp 命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!