วิธีใช้คำสั่ง arping บน Linux

เผยแพร่แล้ว: 2022-07-28
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

คำสั่ง Linux arping เหมือนกับ ping แต่สำหรับเครือข่ายท้องถิ่นเท่านั้น ข้อดีของมันคือทำงานในระดับเครือข่ายที่ต่ำกว่า บางครั้งได้รับการตอบสนองเมื่อ ping ไม่สามารถทำได้ นี่คือวิธีการใช้งาน

โปรโตคอล ARP

ที่อยู่ IP คือป้ายตัวเลขสำหรับอุปกรณ์เครือข่าย มันถูกใช้เป็นที่อยู่เพื่อให้การรับส่งข้อมูลเครือข่ายที่เหมาะสมมาถึงอุปกรณ์ที่ถูกต้อง แต่อุปกรณ์ส่วนใหญ่บนเครือข่ายท้องถิ่นมีที่อยู่ IP แบบไดนามิก นั่นคือที่อยู่ IP ของพวกเขาอาจเปลี่ยนแปลงได้ในครั้งต่อไปที่บูทเครื่อง

เพื่อให้สามารถกำหนดเส้นทางการรับส่งข้อมูลเครือข่ายไปยังอุปกรณ์ที่เหมาะสมได้อย่างเหมาะสม ต้องใช้แผนงานที่จับคู่ที่อยู่ IP กับที่อยู่ Media Access Control (MAC) ที่อยู่ MAC เป็นข้อมูลเฉพาะตัวที่สร้างขึ้น ณ จุดผลิตอุปกรณ์ ที่อยู่ IP เป็นที่อยู่แบบ ลอจิคัล ที่อยู่ MAC คือที่ อยู่จริง

แพ็กเก็ตข้อมูลคืออะไร?
ที่เกี่ยวข้อง แพ็กเก็ตข้อมูลคืออะไร?

Address Resolution Protocol คือพ่อค้าคนกลางที่จับคู่ที่อยู่ IP กับที่อยู่ MAC อุปกรณ์ที่รับผิดชอบในการจัดการและควบคุมแพ็กเก็ตเครือข่ายในเครือข่ายของคุณ—โดยปกติคือเราเตอร์—สร้างและดูแลตาราง ARP ที่เชื่อมโยงที่อยู่ IP กับที่อยู่ MAC

หากเราเตอร์จำเป็นต้องกำหนดเส้นทางข้อมูลไปยังอุปกรณ์ที่ไม่รู้จัก เราเตอร์จะส่งคำขอ ARP เพื่อขอรับที่อยู่ MAC สำหรับอุปกรณ์ใหม่

เมื่ออุปกรณ์ใหม่เชื่อมต่อกับเครือข่ายของคุณ อุปกรณ์นั้นจะได้รับที่อยู่ IP แต่นั่นไม่เพียงพอต่อการกำหนดเส้นทางการรับส่งข้อมูลไปยังอุปกรณ์นั้นจริงๆ เราเตอร์ต้องได้รับที่อยู่ MAC ซึ่งเป็นชิ้นส่วนที่ขาดหายไปของจิ๊กซอว์ แต่เนื่องจากที่อยู่ IP เพียงอย่างเดียวมีข้อมูลไม่เพียงพอในการกำหนดเส้นทางแพ็กเก็ตไปยังอุปกรณ์ Catch-22 จึงไม่สามารถใช้ที่อยู่ IP เพื่อสอบถามฮาร์ดแวร์เพื่อรับที่อยู่ MAC

โมเดล Open Systems Interconnection จัดกลุ่มเทคโนโลยีที่ประกอบเป็นเครือข่ายการทำงานเป็นชุดของเลเยอร์ ชั้นที่สูงกว่าไม่สามารถทำงานได้หากไม่มีชั้นล่าง โมเดล OSI มีเจ็ดชั้น

  • เลเยอร์ 7 เป็นเลเยอร์บนสุด เลเยอร์ แอปพลิเคชัน ให้ข้อมูลแก่ผู้ใช้คอมพิวเตอร์และรับข้อมูลกลับจากพวกเขา
  • ชั้นที่ 6 เป็นชั้น การนำเสนอ เพื่อให้แน่ใจว่าข้อมูลอยู่ในรูปแบบหรือสถานะที่ถูกต้องเมื่อย้ายเข้าและออกจากรูปแบบเครือข่าย การเข้ารหัสและถอดรหัสเกิดขึ้นที่ชั้นนี้
  • ชั้น 5 เป็นชั้น เซสชัน เซสชันคือการเชื่อมต่อเครือข่ายระหว่างอุปกรณ์ตั้งแต่สองเครื่องขึ้นไป เลเยอร์นี้เกี่ยวข้องกับเรื่องต่างๆ เช่น การเริ่มต้นของการเชื่อมต่อ การจับมือกัน การหมดเวลา และการตัดการเชื่อมต่อที่ไม่จำเป็นอีกต่อไป
  • ชั้นที่ 4 เป็นชั้น ขนส่ง นี่คือเลเยอร์ที่ย้ายข้อมูลไปรอบ ๆ เครือข่ายในลักษณะที่ประสานกัน เลเยอร์นี้เกี่ยวข้องกับสิ่งต่างๆ เช่น อัตราการถ่ายโอนและปริมาณข้อมูล Transmission Control Protocol— TCP ใน TCP/IP— ทำงานที่เลเยอร์นี้
  • ชั้นที่ 3 เป็นชั้น เครือข่าย นี่คือที่ที่การกำหนดเส้นทางและการส่งต่อแพ็กเก็ตเกิดขึ้น เป็นเลเยอร์ที่อินเทอร์เน็ตโปรโตคอล ซึ่งก็คือ IP ใน TCP/IP ทำงานที่
  • ชั้นที่ 2 คือชั้น ดาต้าลิงค์ ใช้เพื่อส่งแพ็กเก็ตระหว่างอุปกรณ์ที่แอดเดรสโดยตรงโดยใช้การออกอากาศไปยังทุกอุปกรณ์หรือ unicast ไปยังที่อยู่ MAC เฉพาะ
  • ชั้นที่ 1 เป็นชั้น กายภาพ สิ่งนี้เกี่ยวข้องกับโครงสร้างพื้นฐานทางกายภาพรวมถึงสายเคเบิล เราเตอร์ และสวิตช์เครือข่าย คลื่นวิทยุที่ใช้ใน Wi-Fi ก็จะจัดอยู่ในหมวดหมู่นี้เช่นกัน

เมื่อเราเตอร์ได้รับแพ็กเก็ตสำหรับที่อยู่ IP ที่ไม่ได้อยู่ในตาราง จะส่งแพ็กเก็ตออกอากาศไปยังเครือข่ายทั้งหมด มันถามอย่างมีประสิทธิภาพว่า "ใครมีที่อยู่ IP นี้" นี่เป็นข้อความเลเยอร์ 2 ดังนั้นจึงไม่ต้องพึ่งพาการกำหนดเส้นทาง IP

อุปกรณ์ที่มีที่อยู่ที่ตรงกันจะตอบกลับโดยส่งที่อยู่ MAC กลับคืนมา คุณสามารถเพิ่มที่อยู่ IP และที่อยู่ MAC ของอุปกรณ์นั้นลงในตารางการแมป ขณะนี้ทราฟฟิก IP ปกติสามารถกำหนดเส้นทางไปยังอุปกรณ์ได้ เนื่องจากความสัมพันธ์ระหว่างที่อยู่ IP กับที่อยู่ MAC ได้รับการสร้างและบันทึกแล้ว

ที่เกี่ยวข้อง: รากฐานของอินเทอร์เน็ต: TCP/IP เปลี่ยนเป็น 40

คำสั่ง arping

ข้อมูล ARP ที่ชาญฉลาดทั้งหมดจะทำงานโดยอัตโนมัติในพื้นหลัง สร้างและบำรุงรักษาตาราง ARP คำสั่ง arping นำฟังก์ชันการทำงานบางอย่างของแบบสอบถาม ARP มาที่หน้าต่างเทอร์มินัล มันทำงานที่ OSI เลเยอร์ที่สอง และสามารถร้องขอการตอบสนองจากอุปกรณ์เมื่อ ping ไม่ทำ

บน Fedora 36 มีการติดตั้ง arping แล้ว แต่เราจำเป็นต้องติดตั้งบน Manjaro 21 และ Ubuntu 22.04

บน Ubuntu คำสั่งคือ:

 sudo apt ติดตั้ง arping 

การติดตั้ง arping บน Ubuntu

บน Manjaro คุณต้องพิมพ์:

 sudo pacman -Sy arping 

การติดตั้ง arping บน Manjaro

วิธีที่ง่ายที่สุดในการใช้ arping คือการใช้ที่อยู่ IP ต้องเป็นที่อยู่ของอุปกรณ์ที่สามารถระบุตำแหน่งได้โดยตรงซึ่งเชื่อมต่อกับเครือข่ายท้องถิ่น เนื่องจาก arping ทำงานที่เลเยอร์ที่สอง จึงไม่สามารถกำหนดเส้นทางได้ คุณจะต้องใช้ sudo กับ arping

 sudo arping 192.168.1.17 

การใช้ arping กับที่อยู่ IP

กด Ctrl+C เพื่อหยุด ข้อมูลที่ส่งคืนคือที่อยู่ MAC ของอุปกรณ์ที่ตอบสนอง หมายเลขดัชนีของคำขอ arping และเวลาไปกลับสำหรับคำขอ arping ที่จะเสร็จสมบูรณ์

เปรียบเทียบผลลัพธ์กับผลลัพธ์จากคำสั่ง ping ด้านล่าง คำสั่ง ping ส่งคืนข้อมูลเพิ่มเติมเกี่ยวกับเวลาของการไปกลับของแพ็กเก็ตเครือข่าย คำสั่ง arping ช่วยให้คุณมีสถิติเวลาน้อยลง แต่รวมที่อยู่ MAC ของอุปกรณ์ไว้ด้วย

 ปิง 192.168.1.17 

การใช้ ping กับที่อยู่ IP

คุณยังสามารถใช้ชื่อเครือข่ายของอุปกรณ์ด้วย arping

 sudo arping fedora-36.local 

การใช้ arping กับที่อยู่ IP

คุณสามารถใช้ตัวเลือก -c (นับ) เพื่อบอกให้ arping หยุดทำงานหลังจากจำนวนคำขอที่กำหนดไว้ คำสั่งนี้บอกให้ arping ลองสองครั้งแล้วหยุด

 sudo arping -c 2 192.168.1.18 

ใช้ตัวเลือก -c เพื่อบอกให้ arping หยุดหลังจากส่งคำขอสองครั้ง

หากคุณมีอินเทอร์เฟซเครือข่ายหลายรายการในคอมพิวเตอร์ของคุณ คุณสามารถใช้ตัวเลือก -I (อินเทอร์เฟซ) เพื่อบอก arping ว่าจะใช้อินเทอร์เฟซใด

คุณสามารถใช้คำสั่ง ip link เพื่อแสดงรายการอินเทอร์เฟซเครือข่ายของคุณ

 ลิงค์ไอพี 

ใช้ไอพีลิงค์เพื่อแสดงรายการอินเตอร์เฟสเครือข่าย

คอมพิวเตอร์เครื่องนี้มีสามอินเทอร์เฟซ อินเทอร์เฟซเสมือน lo ใช้เป็นลูปแบ็คสำหรับการเชื่อมต่อภายในระหว่างซอฟต์แวร์บนคอมพิวเตอร์เครื่องเดียวกัน มันไม่มีประโยชน์สำหรับเราที่นี่ เราสามารถใช้การเชื่อมต่ออีเธอร์เน็ต enp3s0 หรืออินเทอร์เฟซไร้สาย wlan0

คำสั่งนี้บอกให้ arping ใช้อินเทอร์เฟซที่เราเลือก ไม่ใช่ทำการเลือกเอง

 sudo arping -c 2 -I enp3s0 manjaro-21.local 

การใช้ตัวเลือก -I เพื่อบอกให้ arping ใช้อินเทอร์เฟซเครือข่ายเฉพาะ

การใช้ arping ในสคริปต์

การรวม arping ในสคริปต์ทำให้เราสามารถทำงานได้ในช่วงที่อยู่ IP คัดลอกข้อความจากสคริปต์นี้และบันทึกลงในไฟล์ชื่อ “scan-range.sh”

คุณจะต้องแก้ไขสคริปต์และแทนที่ 192.168.1 ทั้งหมดด้วยที่อยู่ IP ของเครือข่ายของคุณ

 #!/bin/bash for (( device = $1 ; device <= $2 ; device ++ )) do arping -c 1 192.168.1. $device | grep -E "1 response|1 packets received" > /dev/null if [ $? == 0 ] ; then echo "192.168.1. $device responded." else echo "192.168.1. $device didn't respond." fi  done

สคริปต์ยอมรับพารามิเตอร์บรรทัดคำสั่งสองรายการ สิ่งเหล่านี้ถูกใช้เป็นออคเต็ตสุดท้ายของที่อยู่ IP ของช่วงที่คุณต้องการใช้อาร์ป arping ดังนั้น หากคุณส่ง 20 และ 30 ไปยังสคริปต์ การวนซ้ำจะเริ่มที่ 192.168.1 20 และจะสิ้นสุดหลังจากใช้ที่อยู่ IP 192.168.1 30 .

พารามิเตอร์สามารถเข้าถึงได้ภายในสคริปต์เป็น $1 และ $2 สิ่งเหล่านี้ถูกใช้ในรูปแบบ C for ลูป ใน for หมุนวนแต่ละครั้ง $device จะถูกตั้งค่าเป็นที่อยู่ IP ถัดไปในช่วง

สคริปต์ใช้รูปแบบ arping -c แบบเดียวกับที่เราเคยเห็น แต่คราวนี้เราขอเพียงคำขอ ARP เดียวที่จะส่งไปยังแต่ละอุปกรณ์ในช่วง

เอาต์พุตจากคำสั่ง arping ถูกไพพ์ผ่าน grep

ไวยากรณ์ grep สามารถทำให้ง่ายขึ้นในสคริปต์ของคุณ grep กำลังมองหาหนึ่งในสองสตริง ไม่ว่าจะเป็น "1 การตอบสนอง" หรือ "1 แพ็กเก็ตที่ได้รับ" ทั้งนี้เนื่องจากคอมพิวเตอร์ทดสอบมีเวอร์ชันต่าง ๆ ของ arping และใช้คำศัพท์ต่างกัน หาก grep พบวลีเหล่านี้ ค่าการออกจะเป็นศูนย์

เมื่อคุณรู้ว่าวลีใดที่เวอร์ชัน arping ของคุณใช้ คุณสามารถลดความซับซ้อนของไวยากรณ์ grep ได้โดยลบวลีอื่น

คำสั่ง if ทดสอบ $? —ตัวแปรที่เก็บรหัสทางออกของกระบวนการสุดท้ายที่สิ้นสุด—เพื่อดูว่าเป็นศูนย์หรือไม่ ถ้าใช่ จะใช้ echo เพื่อพิมพ์ข้อความแห่งความสำเร็จไปยังหน้าต่างเทอร์มินัล หากการทดสอบล้มเหลว grep จะไม่พบสตริงใดสตริงหนึ่ง ซึ่งหมายความว่าคำขอ ARP ล้มเหลว

ทำให้สคริปต์ของคุณสามารถเรียกใช้งานได้โดยใช้คำสั่ง chmod และตัวเลือก +x

 chmod +x scan-range.sh 

การใช้ตัวเลือก chmod +x เพื่อให้สคริปต์ปฏิบัติการได้

เราจะเรียกใช้และสแกนช่วง IP ตั้งแต่ 15 ถึง 20 ที่อยู่เหล่านี้บางส่วนไม่มีอุปกรณ์แนบ ดังนั้นเราควรเห็นความล้มเหลวบางอย่าง อย่าลืมใช้ sudo เราจะพยายาม ping อุปกรณ์ที่ 192.168.1.15 ด้วย

 sudo ./scan-range.sh 15 20
 ปิง 192.168.1.15 

เรียกใช้สคริปต์และเรียกใช้ ping

เราได้รับทั้งความสำเร็จและความล้มเหลว เช่นเดียวกับที่คุณทำบนเครือข่ายใดๆ แต่โปรดสังเกตว่าแม้ว่าอุปกรณ์ที่ 192.168.1.15 จะตอบสนองต่อคำขอ ARP ของเลเยอร์ที่สอง แต่ก็ไม่ตอบสนองต่อคำขอ ping ของเลเยอร์ที่สาม

หากคุณส่ง ping อุปกรณ์และสังเกตเห็นความล้มเหลว คุณอาจต้องตรวจสอบว่าเสียบปลั๊กแล้ว ออนไลน์แล้ว และคุณสามารถ ping ออก จากอุปกรณ์ 192.168.1.15 ได้หรือไม่

แต่ด้วย arping คุณสามารถตรวจสอบว่ามีการเชื่อมต่อ ออนไลน์ และเข้าถึงเครือข่ายได้ ซึ่งจะเป็นแนวทางในการแก้ไขปัญหาของคุณเพื่อเริ่มค้นหาปัญหาการกำหนดเส้นทางและตาราง ARP

ข้อมูลเชิงลึก

มีหลายชั้นของต้นหอมเครือข่าย ถ้า ping ไปไม่ถึงไหน ให้วางเลเยอร์ลงไปแล้วดูว่า arping บอกอะไรคุณได้บ้าง

ที่เกี่ยวข้อง: วิธีจัดการเครือข่าย Linux Wi-Fi ด้วย Nmtui