วิธีใช้คำสั่ง arping บน Linux
เผยแพร่แล้ว: 2022-07-28 คำสั่ง 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
บน Manjaro คุณต้องพิมพ์:
sudo pacman -Sy arping
วิธีที่ง่ายที่สุดในการใช้ arping
คือการใช้ที่อยู่ IP ต้องเป็นที่อยู่ของอุปกรณ์ที่สามารถระบุตำแหน่งได้โดยตรงซึ่งเชื่อมต่อกับเครือข่ายท้องถิ่น เนื่องจาก arping
ทำงานที่เลเยอร์ที่สอง จึงไม่สามารถกำหนดเส้นทางได้ คุณจะต้องใช้ sudo
กับ arping
sudo arping 192.168.1.17
กด Ctrl+C เพื่อหยุด ข้อมูลที่ส่งคืนคือที่อยู่ MAC ของอุปกรณ์ที่ตอบสนอง หมายเลขดัชนีของคำขอ arping
และเวลาไปกลับสำหรับคำขอ arping
ที่จะเสร็จสมบูรณ์
เปรียบเทียบผลลัพธ์กับผลลัพธ์จากคำสั่ง ping
ด้านล่าง คำสั่ง ping
ส่งคืนข้อมูลเพิ่มเติมเกี่ยวกับเวลาของการไปกลับของแพ็กเก็ตเครือข่าย คำสั่ง arping
ช่วยให้คุณมีสถิติเวลาน้อยลง แต่รวมที่อยู่ MAC ของอุปกรณ์ไว้ด้วย
ปิง 192.168.1.17
คุณยังสามารถใช้ชื่อเครือข่ายของอุปกรณ์ด้วย arping
sudo arping fedora-36.local
คุณสามารถใช้ตัวเลือก -c
(นับ) เพื่อบอกให้ arping
หยุดทำงานหลังจากจำนวนคำขอที่กำหนดไว้ คำสั่งนี้บอกให้ arping
ลองสองครั้งแล้วหยุด
sudo arping -c 2 192.168.1.18
หากคุณมีอินเทอร์เฟซเครือข่ายหลายรายการในคอมพิวเตอร์ของคุณ คุณสามารถใช้ตัวเลือก -I
(อินเทอร์เฟซ) เพื่อบอก arping
ว่าจะใช้อินเทอร์เฟซใด
คุณสามารถใช้คำสั่ง ip link
เพื่อแสดงรายการอินเทอร์เฟซเครือข่ายของคุณ
ลิงค์ไอพี
คอมพิวเตอร์เครื่องนี้มีสามอินเทอร์เฟซ อินเทอร์เฟซเสมือน lo
ใช้เป็นลูปแบ็คสำหรับการเชื่อมต่อภายในระหว่างซอฟต์แวร์บนคอมพิวเตอร์เครื่องเดียวกัน มันไม่มีประโยชน์สำหรับเราที่นี่ เราสามารถใช้การเชื่อมต่ออีเธอร์เน็ต enp3s0
หรืออินเทอร์เฟซไร้สาย wlan0
คำสั่งนี้บอกให้ arping
ใช้อินเทอร์เฟซที่เราเลือก ไม่ใช่ทำการเลือกเอง
sudo arping -c 2 -I enp3s0 manjaro-21.local
การใช้ 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
เราจะเรียกใช้และสแกนช่วง IP ตั้งแต่ 15 ถึง 20 ที่อยู่เหล่านี้บางส่วนไม่มีอุปกรณ์แนบ ดังนั้นเราควรเห็นความล้มเหลวบางอย่าง อย่าลืมใช้ sudo
เราจะพยายาม ping
อุปกรณ์ที่ 192.168.1.15 ด้วย
sudo ./scan-range.sh 15 20
ปิง 192.168.1.15
เราได้รับทั้งความสำเร็จและความล้มเหลว เช่นเดียวกับที่คุณทำบนเครือข่ายใดๆ แต่โปรดสังเกตว่าแม้ว่าอุปกรณ์ที่ 192.168.1.15 จะตอบสนองต่อคำขอ ARP ของเลเยอร์ที่สอง แต่ก็ไม่ตอบสนองต่อคำขอ ping
ของเลเยอร์ที่สาม
หากคุณส่ง ping อุปกรณ์และสังเกตเห็นความล้มเหลว คุณอาจต้องตรวจสอบว่าเสียบปลั๊กแล้ว ออนไลน์แล้ว และคุณสามารถ ping
ออก จากอุปกรณ์ 192.168.1.15 ได้หรือไม่
แต่ด้วย arping
คุณสามารถตรวจสอบว่ามีการเชื่อมต่อ ออนไลน์ และเข้าถึงเครือข่ายได้ ซึ่งจะเป็นแนวทางในการแก้ไขปัญหาของคุณเพื่อเริ่มค้นหาปัญหาการกำหนดเส้นทางและตาราง ARP
ข้อมูลเชิงลึก
มีหลายชั้นของต้นหอมเครือข่าย ถ้า ping
ไปไม่ถึงไหน ให้วางเลเยอร์ลงไปแล้วดูว่า arping
บอกอะไรคุณได้บ้าง
ที่เกี่ยวข้อง: วิธีจัดการเครือข่าย Linux Wi-Fi ด้วย Nmtui