Linux arping
lệnh giống như ping
, nhưng chỉ dành cho các mạng cục bộ. Ưu điểm của nó là nó hoạt động ở cấp độ mạng thấp hơn, đôi khi nhận được phản hồi khi ping
không thể. Đây là cách sử dụng nó.
Giao thức ARP
Địa chỉ IP là một nhãn số cho một thiết bị được nối mạng. Nó được sử dụng làm địa chỉ để lưu lượng truy cập mạng thích hợp đến đúng thiết bị. Nhưng hầu hết các thiết bị trên mạng cục bộ đều có năng động Các địa chỉ IP. Nghĩa là, địa chỉ IP của chúng có thể thay đổi vào lần khởi động tiếp theo.
Để có thể định tuyến chính xác lưu lượng truy cập mạng đến thiết bị thích hợp, một lược đồ phải được sử dụng để ánh xạ địa chỉ IP tới địa chỉ Điều khiển truy cập phương tiện (MAC). Địa chỉ MAC là một danh tính duy nhất được thiết lập tại điểm sản xuất thiết bị. Một địa chỉ IP là một hợp lý Địa chỉ. Địa chỉ MAC là một thuộc vật chất Địa chỉ.
Giao thức phân giải địa chỉ là người trung gian ánh xạ địa chỉ IP thành địa chỉ MAC. Thiết bị chịu trách nhiệm sắp xếp và định hướng các gói mạng trong mạng của bạn—thường là bộ định tuyến—xây dựng và duy trì bảng ARP liên kết địa chỉ IP với địa chỉ MAC.
Nếu bộ định tuyến cần định tuyến dữ liệu đến một thiết bị mà nó không biết, nó sẽ tạo một yêu cầu ARP để lấy địa chỉ MAC cho thiết bị mới.
Khi một thiết bị mới được kết nối với mạng của bạn, nó được gán một địa chỉ IP, nhưng điều đó không đủ để thực sự định tuyến lưu lượng truy cập đến nó. Bộ định tuyến cần lấy địa chỉ MAC, đây là phần còn thiếu của trò chơi ghép hình. Nhưng vì bản thân địa chỉ IP không đủ thông tin để định tuyến các gói đến thiết bị, Catch-22 không thể sử dụng địa chỉ IP để truy vấn phần cứng để lấy địa chỉ MAC.
Mô hình Kết nối các Hệ thống Mở nhóm các công nghệ tạo nên một mạng hoạt động dưới dạng một loạt các lớp. Các lớp cao hơn không thể hoạt động nếu không có các lớp thấp hơn. Có bảy lớp trong mô hình OSI.
- Lớp 7 là lớp trên cùng, đăng kí lớp. Nó cung cấp thông tin cho người dùng máy tính và nhận lại thông tin từ họ.
- Lớp 6 là bài thuyết trình lớp. Điều này đảm bảo dữ liệu ở định dạng hoặc trạng thái phù hợp khi dữ liệu di chuyển đến và từ định dạng mạng. Quá trình mã hóa và giải mã diễn ra ở lớp này.
- Lớp 5 là phiên họp lớp. Phiên là kết nối mạng giữa hai hoặc nhiều thiết bị. Lớp này liên quan đến các vấn đề như bắt đầu kết nối, bắt tay, hết thời gian chờ và phá vỡ các kết nối không còn cần thiết.
- Lớp 4 là gây xúc động mạnh lớp. Đây là lớp di chuyển dữ liệu xung quanh mạng theo cách phối hợp. Lớp này liên quan đến những thứ như tốc độ truyền và khối lượng dữ liệu. Giao thức điều khiển truyền dẫn—TCP trong TCP/IP—hoạt động ở tầng này.
- Lớp 3 là mạng lớp. Đây là nơi diễn ra quá trình định tuyến và chuyển tiếp gói tin. Đó là tầng mà Giao thức Internet—IP trong TCP/IP—hoạt động tại đó.
- Lớp 2 là Liên kết dữ liệu lớp. Nó được sử dụng để gửi các gói giữa các thiết bị có thể định địa chỉ trực tiếp bằng cách sử dụng quảng bá tới mọi thiết bị hoặc unicast tới các địa chỉ MAC cụ thể.
- Lớp 1 là thuộc vật chất lớp. Điều này liên quan đến cơ sở hạ tầng vật lý bao gồm hệ thống cáp, bộ định tuyến và bộ chuyển mạch mạng. Sóng vô tuyến được sử dụng trong Wi-Fi cũng sẽ thuộc loại này.
Khi bộ định tuyến nhận được một gói cho một địa chỉ IP không có trong bảng của nó, nó sẽ gửi một gói quảng bá đến toàn bộ mạng. Nó hỏi một cách hiệu quả “Ai có địa chỉ IP này?” Đây là thông báo lớp hai nên nó không phụ thuộc vào định tuyến IP.
Thiết bị có địa chỉ phù hợp sẽ phản hồi bằng cách gửi lại Địa chỉ MAC của nó. Địa chỉ IP và địa chỉ MAC của thiết bị đó có thể được thêm vào bảng ánh xạ. Giờ đây, lưu lượng IP thông thường có thể được định tuyến đến thiết bị vì mối quan hệ giữa địa chỉ IP và địa chỉ MAC của thiết bị đã được thiết lập và ghi lại.
Lệnh Arping
Tất cả các công cụ ARP thông minh sẽ tự động chạy trong nền, xây dựng và duy trì bảng ARP. Các arping
lệnh mang một số chức năng của truy vấn ARP đến cửa sổ đầu cuối. Nó hoạt động ở lớp hai của OSI và nó có thể thu hút phản hồi từ thiết bị khi ping
không làm.
Trên Fedora 36, arping
đã được cài đặt, nhưng chúng tôi cần cài đặt nó trên Manjaro 21 và Ubuntu 22.04.
Trên Ubuntu, lệnh là:
sudo apt install arping
Trên Manjaro, bạn cần gõ:
sudo pacman -Sy arping
Cách đơn giản nhất để sử dụng arping
là với một địa chỉ IP. Đây phải là địa chỉ của thiết bị có thể định địa chỉ trực tiếp, được kết nối với mạng cục bộ. Bởi vì arping
hoạt động ở lớp hai, không thể định tuyến. Bạn sẽ cần phải sử dụng sudo
với arping
.
sudo arping 192.168.1.17
Nhấn Ctrl + C để dừng. Thông tin trả về là địa chỉ MAC của thiết bị phản hồi, số chỉ mục của arping
yêu cầu, và thời gian khứ hồi cho arping
yêu cầu hoàn thành.
So sánh đầu ra với đầu ra từ ping
lệnh, bên dưới. Các ping
lệnh trả về thêm thông tin về thời gian của chuyến đi khứ hồi gói mạng. Các arping
lệnh cung cấp cho bạn ít số liệu thống kê về thời gian hơn, nhưng nó bao gồm Địa chỉ MAC của thiết bị.
ping 192.168.1.17
Bạn cũng có thể sử dụng tên mạng của thiết bị với arping
.
sudo arping fedora-36.local
Bạn có thể dùng -c
(đếm) tùy chọn để nói arping
dừng lại sau một số lượng yêu cầu đã đặt. Lệnh này cho biết arping
để thử hai lần và sau đó dừng lại.
sudo arping -c 2 192.168.1.18
Nếu bạn có nhiều giao diện mạng trong máy tính của mình, bạn có thể sử dụng -I
(giao diện) tùy chọn để nói arping
sử dụng giao diện nào.
Bạn có thể dùng ip link
lệnh để liệt kê các giao diện mạng của bạn.
ip link
Máy tính này có ba giao diện. Các lo
giao diện ảo được sử dụng làm vòng lặp cho các kết nối nội bộ giữa các phần mềm trên cùng một máy tính. Nó không hữu ích cho chúng ta ở đây. Chúng ta có thể sử dụng kết nối ethernet enp3s0
hoặc giao diện không dây wlan0
.
Lệnh này cho biết arping
để sử dụng giao diện chúng tôi chọn và không thực hiện lựa chọn của riêng mình.
sudo arping -c 2 -I enp3s0 manjaro-21.local
Sử dụng arping trong Scripts
Bằng cách gói arping
trong một vòng lặp trong tập lệnh, chúng tôi có thể làm cho tập lệnh đó hoạt động trên một dải địa chỉ IP. Sao chép văn bản từ tập lệnh này và lưu vào tệp có tên “scan-range.sh”.
Bạn sẽ cần chỉnh sửa tập lệnh và thay thế tất cả các lần xuất hiện của 192.168.1 bằng địa chỉ IP của mạng của bạn.
#!/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
Tập lệnh chấp nhận hai tham số dòng lệnh. Chúng được sử dụng làm octet cuối cùng của địa chỉ IP của dải bạn muốn sử dụng arping
trên. Vì vậy, nếu bạn chuyển 20 và 30 cho tập lệnh, vòng lặp sẽ bắt đầu tại 192.168.1.20 và sẽ chấm dứt sau khi sử dụng địa chỉ IP 192.168.1.30.
Các tham số được truy cập bên trong tập lệnh dưới dạng $1
và $2
. Chúng được sử dụng theo kiểu C for
vòng. Tại mỗi vòng quay của for
vòng, $device
được đặt thành địa chỉ IP tiếp theo trong dải.
Kịch bản sử dụng giống nhau arping -c
định dạng mà chúng tôi đã thấy, nhưng lần này chúng tôi chỉ yêu cầu một yêu cầu ARP duy nhất được gửi tới từng thiết bị trong phạm vi.
Đầu ra từ arping
lệnh được chuyển qua grep
.
Các grep
cú pháp có thể được đơn giản hóa trong tập lệnh của bạn. grep
đang tìm kiếm một trong hai chuỗi, “1 phản hồi” hoặc “1 gói đã nhận”. Điều này là do các máy tính thử nghiệm có các phiên bản khác nhau của arping
về chúng và chúng sử dụng các thuật ngữ khác nhau. Nếu grep
tìm thấy một trong hai cụm từ này, giá trị thoát của nó sẽ bằng không.
Khi bạn biết cụm từ nào là phiên bản của bạn arping
sử dụng, bạn có thể đơn giản hóa grep
cú pháp bằng cách loại bỏ các cụm từ khác.
Các if
kiểm tra tuyên bố $?
—một biến chứa mã thoát của quá trình cuối cùng đã kết thúc—để xem liệu nó có bằng 0 hay không. Nếu có, nó sử dụng echo
để in thông báo thành công ra cửa sổ đầu cuối. Nếu thử nghiệm thất bại thì grep
không tìm thấy một trong hai chuỗi, nghĩa là yêu cầu ARP không thành công.
Làm cho tập lệnh của bạn có thể thực thi được bằng cách sử dụng chmod
lệnh và +x
Tùy chọn.
chmod +x scan-range.sh
Chúng tôi sẽ chạy nó và quét dải IP từ 15 đến 20. Một số địa chỉ này không có thiết bị đi kèm, vì vậy chúng tôi sẽ thấy một số lỗi. nhớ sử dụng sudo
. Chúng tôi cũng sẽ cố gắng ping
thiết bị ở 192.168.1.15.
sudo ./scan-range.sh 15 20
ping 192.168.1.15
Chúng tôi nhận được sự pha trộn giữa thành công và thất bại, giống như bạn làm trên bất kỳ mạng nào. Nhưng lưu ý rằng mặc dù thiết bị ở 192.168.1.15 phản hồi yêu cầu ARP lớp hai, nhưng nó không phản hồi lớp ba ping
yêu cầu.
Nếu bạn đã ping thiết bị và ghi nhận sự cố, có lẽ bạn sẽ có xu hướng kiểm tra xem thiết bị đã được cắm vào, trực tuyến chưa và liệu bạn có thể ping
ngoài của thiết bị 192.168.1.15.
Nhưng vơi arping
bạn có thể xác minh rằng nó được kết nối, trực tuyến và có thể truy cập mạng. Điều đó sẽ hướng dẫn cách khắc phục sự cố của bạn để bắt đầu xem xét các vấn đề về định tuyến và bảng ARP.
Một cái nhìn sâu sắc hơn
Có nhiều lớp để kết nối mạng. Nếu ping
không đưa bạn đến đâu, thả xuống một lớp và xem những gì arping
Có thể cho bạn biết.