มีคำสั่ง Linux ที่อนุญาตให้ฉันรับที่อยู่ MAC ของเราเตอร์ของฉันหรือไม่
มีคำสั่ง Linux ที่อนุญาตให้ฉันรับที่อยู่ MAC ของเราเตอร์ของฉันหรือไม่
คำตอบ:
ฉันชอบหนึ่งสมุทร:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
แสดงให้เห็นว่า MAC ที่เกี่ยวข้องกับการเริ่มต้นที่อยู่เกตเวย์ IP จากการส่งออกของip route show match 0/0
, awk
แยกวิเคราะห์โดย
iwconfig | grep "Access Point"
คำสั่ง ฉันคิดว่าสิ่งที่ถูกปิดโดยสองคือการเชื่อมต่อแบบมีสายรุ่นแคชซึ่งฉันถอดปลั๊กเพื่อพยายามให้แน่ใจว่าฉันได้รับเส้นทางไร้สาย
อย่าใช้คำสั่งที่ล้าสมัยifconfig
(8), arp
(8) หรือroute
(8) ใช้คำสั่งใหม่ที่แทนที่พวกเขาและสามารถทำได้มากขึ้นip
(8)
ใช้ip route list
เพื่อดูว่าdefault
เราเตอร์ของคุณมีเครื่องใด นั่นควรจะเป็นบรรทัดที่เริ่มต้นด้วยdefault
(หรือ0.0.0.0
) และมีที่อยู่ IP ให้กับเราเตอร์หลังจากนั้น หากคุณใช้ IPv6 เพียงแค่เพิ่มสวิทช์-6
ip -6 route list
default via 192.168.11.1 dev eth0 proto static
หากต้องการดูที่อยู่ MAC ของที่default
อยู่ IP ของเราเตอร์ให้ใช้ip neigh
และค้นหาบรรทัดที่มีที่อยู่ IP และที่อยู่ MAC หลังจากlladdr
นั้น
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
หากคุณไม่ทราบ IP ของเราเตอร์เป็นไปได้ว่าเกตเวย์ของคุณเป็นไปได้ที่คุณจะได้รับจากroute
คำสั่ง :
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
จดบันทึกบรรทัดด้วยแฟล็UG
ก ที่อยู่ในGateway
คอลัมน์ของบรรทัดนั้นคือสิ่งที่คุณกำลังมองหา จากนั้นทำตามคำแนะนำของ 2707974ด้วยarp -n
(ping IP หากไม่ปรากฏขึ้นในตอนแรก) และค้นหาบรรทัดที่ตรงกัน:
$ arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether 00:11:22:33:44:55 C eth0
192.168.0.2 ether 66:77:88:99:aa:bb C eth0
00:11:22:33:44:55
ที่นี่เราเตอร์ของคุณจะเป็น MAC
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
นี่คือหนึ่งซับที่ใช้งานdash
ได้bash
และzsh
:
ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
ip -4 route list 0/0
ส่งคืนสิ่งที่ชอบ:
เริ่มต้นผ่าน 192.168.0.1 dev eth1 proto static metric 100
เราได้รับ IP จากบรรทัดนั้นเป็นฟิลด์ที่สามด้วยcut
และบรรทัด grep ที่มี IP นั้นและพื้นที่ทันทีหลังจากออกจากย่านเครือข่าย (ต้องใช้พื้นที่เพื่อหลีกเลี่ยงการจับคู่192.168.0.1
ด้วย192.168.0.10
) เส้นที่ตรงกันจะเป็นดังนี้:
192.168.0.1 dev eth1 lladdr ca: fe: ba: เป็น: be: af สามารถเข้าถึงได้
แคลิฟอร์เนีย: FE: BA: BE: BE: AF
echo ${info[5]^^}
ไม่ใช่โซลูชันที่สมบูรณ์ แต่คุณตรวจสอบ arp -n
ddd@mmm ~ $ arp -n
Address HWtype HWaddress Flags Mask Iface
xxx.xxx.xxx.xxx ether 00:e0:1e:b4:12:42 C eth0
yyy.yyy.yyy.yyy ether 00:14:78:52:28:d2 C wlan0
ping 192.168.0.1
) คุณควรมีที่อยู่ MAC ใน arp cache ...
นี่เป็นคำตอบของ Grief เวอร์ชันปรับปรุง เป็นไปได้สำหรับรายการเส้นทาง ip -4 0/0 เพื่อส่งคืนมากกว่าหนึ่งบรรทัด (IP) ซึ่งในกรณีนี้ซับไลน์สมบูรณ์ไม่ทำงาน ดังนั้นเวอร์ชันที่แก้ไขต่อไปนี้จะใช้บรรทัดแรกที่ ip -4 รายการเส้นทาง 0/0 ส่งคืนเท่านั้น
ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'