ฉันจะรับที่อยู่ MAC ของเราเตอร์ได้อย่างไร


13

มีคำสั่ง Linux ที่อนุญาตให้ฉันรับที่อยู่ MAC ของเราเตอร์ของฉันหรือไม่


1
อันไหน? เราเตอร์ของคุณควรมีหลายที่อยู่ mac สำหรับการสื่อสารทั้งสองด้าน (ขาเข้า / ขาออก)
mchid

สิ่งนี้ควรไปใน Super User หรือไม่

คำตอบ:


6

ฉันชอบหนึ่งสมุทร:

arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')

arpingแสดงให้เห็นว่า MAC ที่เกี่ยวข้องกับการเริ่มต้นที่อยู่เกตเวย์ IP จากการส่งออกของip route show match 0/0, awkแยกวิเคราะห์โดย


ฉันลองสิ่งนี้ (และคำตอบอื่น ๆ ) พวกเขาให้ข้อมูลที่ดี แต่ที่อยู่ MAC ที่แสดงนั้นถูกปิดด้วยตัวเลขสองหลักจากสิ่งที่ฉันกำลังมองหา เครื่องพิมพ์ของฉันมีรายการเราเตอร์สองตัวที่มี SSID เดียวกัน (อาจเป็นแขกและปกติ) และต้องการให้ฉันเลือกที่อยู่ MAC คำตอบนี้askubuntu.com/a/222553ให้ฉันหนึ่งในสองรายการที่มีiwconfig | grep "Access Point"คำสั่ง ฉันคิดว่าสิ่งที่ถูกปิดโดยสองคือการเชื่อมต่อแบบมีสายรุ่นแคชซึ่งฉันถอดปลั๊กเพื่อพยายามให้แน่ใจว่าฉันได้รับเส้นทางไร้สาย
hlongmore

10

อย่าใช้คำสั่งที่ล้าสมัยifconfig(8), arp(8) หรือroute(8) ใช้คำสั่งใหม่ที่แทนที่พวกเขาและสามารถทำได้มากขึ้นip(8)

ใช้ip route listเพื่อดูว่าdefaultเราเตอร์ของคุณมีเครื่องใด นั่นควรจะเป็นบรรทัดที่เริ่มต้นด้วยdefault(หรือ0.0.0.0) และมีที่อยู่ IP ให้กับเราเตอร์หลังจากนั้น หากคุณใช้ IPv6 เพียงแค่เพิ่มสวิทช์-6ip -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

4

หากคุณไม่ทราบ 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


2
สายการบินหนึ่งที่สอดคล้องกัน:arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Falko

3

นี่คือหนึ่งซับที่ใช้งานdashได้bashและzsh:

ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
  1. ip -4 route list 0/0 ส่งคืนสิ่งที่ชอบ:

    เริ่มต้นผ่าน 192.168.0.1 dev eth1 proto static metric 100

  2. เราได้รับ IP จากบรรทัดนั้นเป็นฟิลด์ที่สามด้วยcutและบรรทัด grep ที่มี IP นั้นและพื้นที่ทันทีหลังจากออกจากย่านเครือข่าย (ต้องใช้พื้นที่เพื่อหลีกเลี่ยงการจับคู่192.168.0.1ด้วย192.168.0.10) เส้นที่ตรงกันจะเป็นดังนี้:

    192.168.0.1 dev eth1 lladdr ca: fe: ba: เป็น: be: af สามารถเข้าถึงได้

  3. ตอนนี้เราได้รับฟิลด์ที่ห้าและทำให้เป็นตัวพิมพ์ใหญ่:

    แคลิฟอร์เนีย: FE: BA: BE: BE: AF


2
คำอธิบายเพิ่มเติมเล็กน้อยจะช่วยให้พวกเราที่เหลือเข้าใจสคริปต์ของคุณ!
George Udosen

1
สำหรับบรรทัดสุดท้ายมีคุณสมบัติ Bash ที่ขยายตัวแปรเป็นตัวพิมพ์ใหญ่:echo ${info[5]^^}
David Foerster

1
@DavidFoerster ฉันต้องการเขียนคำสั่งแบบพกพา แต่ตัวแปรดั้งเดิมอาศัยการจัดทำดัชนีอาร์เรย์เฉพาะกับ zsh (จากที่หนึ่ง) ดังนั้นฉันจึงได้อัปเดตคำตอบด้วยตัวแปรแบบพกพาระหว่างเชลล์ยอดนิยมสามอันดับ
Grief

2

ไม่ใช่โซลูชันที่สมบูรณ์ แต่คุณตรวจสอบ 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

สิ่งนี้ไม่ได้รับที่อยู่ MAC ของอินเทอร์เฟซบนคอมพิวเตอร์ไม่ใช่เราเตอร์หรือ
วิลฟ์

2
หากคุณ ping เราเตอร์ของคุณ (พูดping 192.168.0.1) คุณควรมีที่อยู่ MAC ใน arp cache ...
Rmano

ขอบคุณ @ 2707974 แต่ฉันไม่ทราบว่าไม่มีที่อยู่ Mac ไม่มีที่อยู่ ip และฉันต้องการคำสั่งที่ให้เฉพาะที่อยู่ IP หรือที่อยู่ mac ของเราเตอร์ของฉันเพราะฉันต้องการใช้คำสั่งในสคริปต์หลามสำหรับการแสดงทั้งหมด arp ตารางไม่มีประโยชน์สำหรับฉัน
user4650183

2

นี่เป็นคำตอบของ 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]'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.