Làm cách nào để sử dụng Linux để tìm địa chỉ IP không sử dụng trên mạng của tôi?


28

Tôi đã có quyền truy cập vào hai máy tính (A và B) trên mạng. Cả hai đều có một địa chỉ IP tĩnh với mặt nạ mạng con là 255.255.255.128 (Tôi đã kiểm tra rằng máy chủ DHCP không được sử dụng). Tôi muốn định cấu hình nhiều địa chỉ IP cho cùng một máy và do đó tôi muốn biết tất cả các địa chỉ IP đã được sử dụng trong mạng con.

Từ một câu hỏi trước đó , tôi đã thử nmap -sP -PR 172.16.128.*lệnh, nhưng, tôi nghi ngờ về kết quả của nó vì cùng một lệnh cho kết quả khác nhau trên hai máy tính của tôi (A và B). On A, cho thấy kết quả, một danh sách các địa chỉ IP được 8 (được cho là) đã được sử dụng, trong đó có A và B .

Nmap done: 256 IP addresses (8 hosts up) scanned in 1.23 seconds

Nhưng trên B, kết quả là khác nhau,

Nmap done: 256 IP addresses (0 hosts up) scanned in 0.00 seconds

Kết quả trên B thậm chí không hiển thị địa chỉ IP của chính nó cũng như địa chỉ IP của A!

Chính xác thì tôi đang làm gì sai ở đây? Có cách nào dễ hiểu trong Red Hat Linux (RHEL) khi khám phá tất cả các địa chỉ IP đang được sử dụng trong mạng con mà máy tính của tôi là một phần của không?

RHEL: 6.5
Nmap version: 5.51

9
Ai quản lý mạng? Bạn có được phép gán địa chỉ IP tùy ý cho máy chủ của mình không?
Roger Lipscombe

4
Vâng, tôi được phép. Đó là một câu hỏi hay.
Vishal Sharma

11
Cách duy nhất để có được câu trả lời thích hợp là hỏi quản trị viên mạng của bạn. Bất cứ điều gì bạn làm đều có nguy cơ không chính xác vì các thiết bị có thể bị tắt, khởi động lại, không phản hồi, v.v.
Jon Bentley

7
Để hoàn thành nhận xét của Rogers và Jon, nếu IP trong mạng của bạn được gán thủ công và không có DHCP, cần có một đăng ký ở đâu đó (hãy để nó là cơ sở dữ liệu, bảng tính Excel hoặc thư mục giấy cũ) nơi mọi phân bổ IP được ghi lại và mọi người quản lý mạng phải có và sử dụng thông tin này. Không có giải pháp kỹ thuật nào đảm bảo rằng bạn không sẵn sàng đánh cắp IP của máy khác (hãy để nó là máy chủ không hoạt động hoặc máy tính xách tay từ xa). Nếu đăng ký này bị mất hoặc không tồn tại, một kho đầy đủ là cần thiết.
zakinster

Bạn nên trích dẫn các địa chỉ IP được ký tự đại diện để đảm bảo rằng trình bao của bạn không cố mở rộng nó như một tên tệp có thể. Ví dụ:nmap -sP -PR '172.16.128.*'
roaima

Câu trả lời:


39

Bất kỳ thiết bị hoạt động tốt nào trên Ethernet LAN đều có thể bỏ qua gần như bất kỳ lưu lượng nào, vì vậy PING, quét cổng và những thứ tương tự đều không đáng tin cậy. Tuy nhiên, các thiết bị không được tự do bỏ qua các yêu cầu ARP , afaik. Vì bạn chỉ định bạn đang quét một mạng cục bộ, tôi thấy phương pháp dễ thực hiện nhất mà bạn muốn là cố gắng kết nối với một địa chỉ từ xa, sau đó tìm trong bộ đệm ARP của tôi.

Đây là một thiết bị đơn giản, không lọc (nghĩa là một thiết bị không được cấu hình để bỏ qua một số loại lưu lượng IP):

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=0.351 ms
[...]
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.1
? (192.168.3.1) at b8:27:eb:05:f5:71 [ether] on p1p1

Đây là một thiết bị lọc (một thiết bị được cấu hình với một dòng duy nhất iptablesđể bỏ qua tất cả lưu lượng truy cập):

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.31
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.31
? (192.168.3.31) at b8:27:eb:02:e4:46 [ether] on p1p1

Đây là một thiết bị vừa ngừng hoạt động; lưu ý thiếu địa chỉ MAC:

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.241
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.241
? (192.168.3.241) at <incomplete> on p1p1

Phương pháp này không thể sai được - nó bỏ lỡ các thiết bị đã bị tắt, vì một điều - nhưng đó là phương pháp ít đáng sợ nhất mà tôi từng thử.

Chỉnh sửa : Eric Duminil, vâng, nó chỉ hoạt động trên một mạng cục bộ; xem đoạn một.

Vishal, các phương pháp là chức năng giống hệt nhau. Lưu ý văn bản trích dẫn trong câu trả lời của Leo về nmap:

Khi người dùng đặc quyền cố gắng quét các mục tiêu trên mạng ethernet cục bộ, các yêu cầu ARP được sử dụng trừ khi --send-ipđược chỉ định.

Phương pháp của anh liên quan đến việc gõ ít hơn. Của tôi có thể được thực hiện mà không có đặc quyền, và có thể cho bạn hiểu rõ hơn về những gì thực sự xảy ra. Nhưng điều tương tự được thực hiện trên dây trong cả hai trường hợp.


2
Điều này chỉ hoạt động với các thiết bị trong cùng một mạng cục bộ phải không? Tôi đã thử nó trên một máy chủ của tôi, các yêu cầu ping bị bỏ ở đâu đó giữa và tôi không thể tìm thấy bất kỳ dòng nào có liên quan arp.
Eric Duminil

Cảm ơn vì sự trả lời. Tôi chỉ muốn biết làm thế nào để phương pháp của bạn so với phương pháp của @Leo? Theo cách nào đó, nó có tốt hơn không (vì nếu không thì chỉ dễ sử dụng một lệnh).
Vishal Sharma

2
@VishalSharma, EricDuminil: xem chỉnh sửa ở trên.
MadHatter hỗ trợ Monica

Nói rõ hơn, điều đó có nghĩa là phương pháp của @ Leo sẽ chỉ giống với phương pháp của bạn khi được sử dụng bởi người dùng đặc quyền và do đó khi nó được sử dụng bởi người dùng kém, kết quả sẽ không hoàn chỉnh / không chính xác? Ngoài ra, bởi người dùng đặc quyền, ý bạn là, người dùng có quyền truy cập sudo?
Vishal Sharma

1
@VishalSharma phần đầu tiên của bình luận của bạn là chính xác. Người dùng đặc quyền bao gồm thực hiện một cái gì đó bên dưới sudo -u root(thường được rút ngắn lại sudo), nhưng cũng chỉ đơn giản là đăng nhập với quyền root hoặc đã hoàn thành /bin/su, do đó, thuật ngữ ô.
MadHatter hỗ trợ Monica

20

Vì một thiết bị không thể bỏ qua các yêu cầu ARP, tôi muốn sử dụng một công cụ có tên arp-scan. Nó có sẵn trong hầu hết các kho lưu trữ.

Khi bạn chạy lệnh bằng công --localnettắc, nó sẽ cung cấp cho bạn tổng quan về toàn bộ mạng nội bộ của bạn.

sudo arp-scan --localnet

Cung cấp cho tôi danh sách tất cả các địa chỉ MAC và IP trên mạng của tôi. Cũng có thể chỉ định một phạm vi mạng để quét.

sudo arp-scan 172.16.128.0/25

Nếu bạn có nhiều giao diện mạng được cấu hình, bạn có thể chỉ định giao diện bạn muốn sử dụng với công tắc -I.

sudo arp-scan -I eth0 172.16.128.0/25

Thông tin thêm về các công tắc có thể có thể được tìm thấy tại https://linux.die.net/man/1/arp-scan hoặc bằng cách chạy man arp-scan.


Trông giống như một công cụ đầy hứa hẹn, nhưng, nó không đi kèm với RHEL 6.5 (trong trường hợp của tôi ít nhất là nó vắng mặt).
Vishal Sharma

@VishalSharma Thật không may. Nó có sẵn cho CentOS vì vậy tôi đã nghĩ rằng nó cũng sẽ có sẵn trên RHEL.
Rò rỉ

4
Nó có trong EPEL, Gói bổ sung của Fedora dành cho Enterprise Linux.
mattdm

Không hoạt động nếu LaBrea đang chạy.
joshudson

@joshudson Tôi khá chắc chắn rằng không thể có bất kỳ công cụ / phần mềm nào quét mạng để tìm địa chỉ IP không sử dụng khi LaBrea đang chạy.
Rò rỉ

11

Tôi không biết phiên bản nmap nào bạn đang chạy trong Red Hat 6.5, nhưng đối với các phiên bản gần đây, cách chính xác (và nhanh hơn) tôi nghĩ nó sẽ là:

nmap -sn -n 172.16.128.0/25

Điều này sẽ liệt kê mọi máy chủ trong mạng của bạn (vì vậy, bạn có thể sử dụng bất kỳ IP nào khác từ mạng con đó nếu cần).

Chỉnh sửa và lưu ý: Mạng con bạn đề cập là 255.255.255.128, nhưng sau đó bạn hiển thị đầu ra dưới dạng quét 254 máy chủ. Trừ khi tôi thiếu thứ gì đó, đó phải là / 25 mặt nạ và có sẵn 126 máy chủ. Nếu bạn muốn quét a / 24, hãy thay đổi lệnh trên để truy vấn tất cả 254 máy chủ.

Từ sách nmap, -sPbị ngưng và thay thế bởi -sn:

-sn (Không quét cổng)

Tùy chọn này yêu cầu Nmap không thực hiện quét cổng sau khi phát hiện máy chủ và chỉ in ra các máy chủ khả dụng đáp ứng với các thăm dò khám phá máy chủ. Điều này thường được biết đến như là một trò chơi ping ping quét, nhưng bạn cũng có thể yêu cầu các tập lệnh máy chủ traceroute và NSE được chạy. Điều này theo mặc định là một bước xâm nhập hơn so với quét danh sách và thường có thể được sử dụng cho cùng một mục đích. Nó cho phép trinh sát ánh sáng của một mạng mục tiêu mà không thu hút nhiều sự chú ý. Biết có bao nhiêu máy chủ lưu trữ có giá trị hơn đối với những kẻ tấn công so với danh sách được cung cấp bởi quét danh sách của mỗi IP và tên máy chủ.

Quản trị viên hệ thống thường thấy tùy chọn này cũng có giá trị. Nó có thể dễ dàng được sử dụng để đếm các máy có sẵn trên mạng hoặc theo dõi tình trạng sẵn có của máy chủ. Điều này thường được gọi là quét ping và đáng tin cậy hơn so với ping địa chỉ quảng bá vì nhiều máy chủ không trả lời các truy vấn phát sóng.

Phát hiện máy chủ mặc định được thực hiện với -sn bao gồm yêu cầu tiếng vang ICMP, TCP SYN tới cổng 443, TCP ACK tới cổng 80 và yêu cầu dấu thời gian ICMP theo mặc định. Khi được thực thi bởi người dùng không có đặc quyền, chỉ các gói SYN được gửi (sử dụng cuộc gọi kết nối) đến các cổng 80 và 443 trên mục tiêu. Khi người dùng đặc quyền cố gắng quét các mục tiêu trên mạng ethernet cục bộ, các yêu cầu ARP được sử dụng trừ khi --send-ip được chỉ định. Tùy chọn -sn có thể được kết hợp với bất kỳ loại thăm dò khám phá nào (tùy chọn -P *, ngoại trừ -Pn) để linh hoạt hơn. Nếu bất kỳ tùy chọn loại đầu dò và số cổng nào được sử dụng, các đầu dò mặc định sẽ bị ghi đè. Khi tường lửa nghiêm ngặt được đặt giữa máy chủ nguồn đang chạy Nmap và mạng đích, nên sử dụng các kỹ thuật nâng cao đó.

Trong các bản phát hành trước của Nmap, -sn được gọi là -sP.

Để -ntránh độ phân giải DNS của máy khách (giúp quét nhanh hơn):

-n (Không có độ phân giải DNS)

Yêu cầu Nmap không bao giờ thực hiện đảo ngược độ phân giải DNS trên các địa chỉ IP đang hoạt động mà nó tìm thấy. Vì DNS có thể bị chậm ngay cả với trình phân giải sơ khai song song tích hợp của Nmap, tùy chọn này có thể cắt giảm thời gian quét.

Bạn có thể sử dụng các kết hợp khác để quét sâu hơn hoặc dịch vụ, nhưng điều đó đủ cho những gì bạn đang tìm kiếm, trừ khi các máy chủ đang tự che dấu hoặc bỏ mọi thứ.

Nguồn: https://nmap.org/book/man-host-discovery.html


Đầu ra mà tôi đã đề cập là của lệnh nmap -sP -PR 172.16.128. * Đó là lý do tại sao nó quét được 254 máy chủ.
Vishal Sharma

Trong trường hợp của tôi, ID mạng là 172.16.128.128, do đó, tôi đã phải sửa đổi lệnh mà bạn đã đề xuất. Tôi đã sử dụng nmap -sn -n 172.16.128.128/25.
Vishal Sharma

Tôi không chắc ý của bạn về ID mạng là gì, nhưng nếu thiết bị của bạn có địa chỉ đó và bạn muốn tất cả 254 máy chủ được quét trong mạng con của mình, bạn nên chạy nmap -sn -n 172.16.128.1/24thay thế (như tôi đã nêu trong câu trả lời ở trên, điều đó sẽ quét 255.255. Mặt nạ 255.0)
Leo

Theo ID mạng, tôi có nghĩa là, chuỗi có được bằng cách thực hiện 'logic And' của IP_Address và mặt nạ mạng con.
Vishal Sharma

Tôi hiểu rồi. Vì vậy, lệnh nmap tôi đã đăng có trả lời câu hỏi của bạn không? Cả hai thiết bị liệt kê cùng một địa chỉ đang được sử dụng?
Leo

8

Phần 1 - fping

Công cụ này ping mọi thứ trong phạm vi mạng được chỉ định và hiển thị những câu trả lời qua ICMP.

root@thionite:~# fping -a -g 10.28.1.0/24
10.28.1.1
10.28.1.2
10.28.1.3
10.28.1.4
10.28.1.5
10.28.1.12.....

Phần 2 - arp

Vì fping đã nói chuyện với mọi thứ trên mạng LAN, điều đó sẽ khiến một mục nhập được thêm vào bảng ARP của hệ thống. Đọc nó trong vòng một vài phút, bởi vì bảng arp tuôn ra các mục cũ.

root@thionite:~# arp -a | grep -v incomplete
? (10.28.1.1) at 00:0d:b9:35:29:c4 [ether] on eth0
? (10.28.1.2) at 68:05:ca:10:53:5f [ether] on eth0
? (10.28.1.3) at d2:f1:6e:54:05:22 [ether] on eth0
? (10.28.1.4) at 00:1a:4d:26:85:ee [ether] on eth0
? (10.28.1.5) at 6e:a6:e5:78:da:ca [ether] on eth0
? (10.28.1.12) at 3c:4a:92:76:85:d8 [ether] on eth0

Cũng lưu ý rằng bảng ARP có kích thước tối đa và kernel sẽ đuổi các mục sử dụng cũ và thấp.

Đặt tất cả cùng với

 fping -a -g 10.28.1.0/24 && arp -a | grep -v incomplete > arp.txt

sau đó duyệt arp.txt lúc rảnh rỗi.


5

IPv6

Đừng cho rằng IPv4 là lựa chọn duy nhất của bạn. Nhiều hệ điều hành hiện đại xử lý IPv6 tốt, ngay cả khi ISP của bạn không cung cấp kết nối V6.

Thậm chí có thể có các thiết bị chỉ có thể truy cập bằng IPv6 hoặc thậm chí các giao thức khác.

Có một loạt các địa chỉ multicast tiện dụng được ghi lại trong https://en.wikipedia.org/wiki/Multicast_address#IPv6 Nhưng địa chỉ thú vị dành cho bạn là ff02 :: 1

root@thionite:~# ping6 -I eth0 ff02::1
PING ff02::1(ff02::1) from fe80::4261:86ff:fec4:cbaa%eth0 eth0: 56 data bytes
64 bytes from fe80::4261:86ff:fec4:cbaa%eth0: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from fe80::21a:4dff:fe26:85ee%eth0: icmp_seq=1 ttl=64 time=0.215 ms (DUP!)
64 bytes from fe80::6a05:caff:fe10:535f%eth0: icmp_seq=1 ttl=64 time=0.233 ms (DUP!)
64 bytes from fe80::226:55ff:feda:299c%eth0: icmp_seq=1 ttl=64 time=0.334 ms (DUP!)
64 bytes from fe80::20d:b9ff:fe35:29c4%eth0: icmp_seq=1 ttl=64 time=0.501 ms (DUP!)
64 bytes from fe80::21e:c2ff:fe13:36bf%eth0: icmp_seq=1 ttl=64 time=0.512 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=0.518 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=0.757 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=0.772 ms (DUP!)
64 bytes from fe80::60cc:69ff:fe4f:7db0%eth0: icmp_seq=1 ttl=64 time=0.992 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe32:3232%eth0: icmp_seq=1 ttl=64 time=1.00 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe30:3030%eth0: icmp_seq=1 ttl=64 time=1.24 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe31:3131%eth0: icmp_seq=1 ttl=64 time=1.34 ms (DUP!)
64 bytes from fe80::6ca6:e5ff:fe78:daca%eth0: icmp_seq=1 ttl=64 time=2.35 ms (DUP!)
64 bytes from fe80::b639:d6ff:feab:1000%eth0: icmp_seq=1 ttl=64 time=7.04 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=8.02 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=8.03 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=8.06 ms (DUP!)
64 bytes from fe80::212:12ff:fef7:8044%eth0: icmp_seq=1 ttl=64 time=8.24 ms (DUP!)
64 bytes from fe80::8edc:d4ff:fef2:67e0%eth0: icmp_seq=1 ttl=64 time=18.3 ms (DUP!)
64 bytes from fe80::21e:c2ff:fea9:6d71%eth0: icmp_seq=1 ttl=64 time=295 ms (DUP!)
...repeats

3

Một câu trả lời kém là ping địa chỉ quảng bá với

root@thionite:~# ping -b 10.28.255.255
WARNING: pinging broadcast address
PING 10.28.255.255 (10.28.255.255) 56(84) bytes of data.
64 bytes from 10.28.2.7: icmp_seq=1 ttl=64 time=0.220 ms
64 bytes from 10.28.3.12: icmp_seq=1 ttl=255 time=0.594 ms (DUP!)
64 bytes from 10.28.9.4: icmp_seq=1 ttl=64 time=1.03 ms (DUP!)
64 bytes from 10.28.1.151: icmp_seq=1 ttl=255 time=1.04 ms (DUP!)
64 bytes from 10.28.3.13: icmp_seq=1 ttl=255 time=2.22 ms (DUP!)
64 bytes from 10.28.3.11: icmp_seq=1 ttl=255 time=2.43 ms (DUP!)

Có ~ 50 địa chỉ IP trên mạng đó với / 16 netmask và chỉ có bảy địa chỉ được trả lời. Vì vậy, đây không phải là một giải pháp tốt.


1
Tại sao câu trả lời khác nhau? Bạn có thể chỉnh sửa bài đăng
daisy

3
@daisy vì chúng là những câu trả lời khác nhau. Một câu trả lời nguyên khối có thể là tốt nhưng bị giữ bởi một phần. Các câu trả lời riêng biệt cho phép cơ chế bỏ phiếu lên / xuống hoạt động đúng. Câu trả lời này thực sự chỉ dành cho sự hoàn chỉnh, nó không hữu ích lắm trong thực tế.
Criggie

1
Điều duy nhất mà các bài kiểm tra ping là liệu một thiết bị có được cấu hình để phản hồi ping hay không.
Rob Moir

@RobMoir đúng - điểm chính của điều này là địa chỉ quảng bá tồn tại và nó được thiết kế thành IPv4.
Criggie

3

Ngoài câu trả lời của MadHatter, có một công cụ thực hiện tra cứu arp mà không cố gửi gói mạng trước: arping .

Dường như có hai triển khai:

Đối với mục đích của bạn, tôi sẽ chỉ lấy gói từ bản phân phối linux của bạn vì sự khác biệt có lẽ chỉ có trong chi tiết.


1

Quay lại khi khủng long lang thang trên trái đất, proto-nerds đã sử dụng arpwatch

arpwatch là một công cụ phần mềm máy tính để theo dõi lưu lượng Giao thức Nghị quyết Địa chỉ trên mạng máy tính. [1] Nó tạo ra một bản ghi các cặp địa chỉ IP được quan sát với các địa chỉ MAC cùng với dấu thời gian khi việc ghép nối xuất hiện trên mạng. Nó cũng có tùy chọn gửi email đến quản trị viên khi ghép nối thay đổi hoặc được thêm vào.

trang người đàn ông arpwatch


0

Đăng nhập vào (các) công tắc của bạn và phát hành show mac-address hoặc các lệnh tương tự (tùy thuộc vào nhãn hiệu và kiểu máy). Điều này sẽ cung cấp cho bạn tất cả Địa chỉ MAC của các thiết bị hoạt động (ngoại trừ chính công tắc). Nếu bất kỳ MAC nào trong số này không xảy ra trong số các MAC được tìm thấy với bất kỳ phương pháp ping hoặc phương pháp nào khác trong các câu trả lời khác, bạn có thể muốn điều tra thêm về thiết bị đó là gì. Có thể điều đó không quan trọng bởi vì nó thậm chí không nói IP hoặc thuộc về một Vlan khác, nhưng ít nhất bạn có thể có được một cái nhìn tổng quan cho dù các thăm dò khác của bạn có chính xác hay không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.