Làm cách nào để xác định xem máy có trực tuyến mà không sử dụng ping không?


12

Tôi đã từng sử dụng một ứng dụng có thể ping hoặc có thể chạy quét cổng trên máy ngay cả khi máy được cấu hình để không cho phép.

Tôi hiện đang cố gắng ping một máy từ xa trên mạng WAN của chúng tôi, nhưng tôi đã cấu hình máy để không cho phép ping. Có cái gì đó tương tự như ping mà tôi có thể sử dụng không?

Một lần nữa, đây là một cỗ máy đặt tại một thành phố khác là một phần của wan của chúng tôi.

Câu trả lời:


4

Nếu bạn sử dụng XP / 2003 + (bao gồm cả Vista / 2008/7 ), thì bạn có thể sử dụng Win32_PingStatus . Các máy đang chạy mã script là hệ thống duy nhất cần là XP / 2003 + và nó hoạt động giống như sử dụng Ping.exe, chỉ có điều nó không sử dụng ping.exe nên nó hoạt động như một lỗ hổng trong cài đặt bảo mật của bạn. không cho phép thực thi ping.exe.

strComputer = "192.168.1.1"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_PingStatus " & _
        "Where Address = '" & strComputer & "'")
For Each objItem in colItems
    If objItem.StatusCode = 0 Then 
        WScript.Echo "Reply received."          
    End If
Next

Xem bài viết về Scripting Guy để biết thêm thông tin về cách sử dụng Win32_PingStatus:

http://www.microsoft.com/technet/scriptcenter/resource/qanda/sept04/hey0914.mspx


2
Tôi hiểu rằng máy chủ từ xa đã được cấu hình để không đáp ứng các gói Yêu cầu Echo của ICMP, không phải ping.exe trên localhost đã bị vô hiệu hóa. Vì vậy, điều này sẽ không làm bất cứ điều gì khác với việc chạy ping.exe, có nghĩa là, không có gì.
David Pashley

15

Bạn có thể telnet đến một cổng tcp mở trên máy. Chẳng hạn, nếu máy là máy chủ web và có cổng 80 mở, chỉ cần:

telnet ip.ad.dre.ss 80

Điều này sẽ hoạt động ngay cả trên các cổng được mã hóa (mặc dù bạn sẽ không thể hiểu dữ liệu)

Một số cổng khác để thử là:

  • 443 cho máy chủ https
  • 22 cho ssh

(có một danh sách các cổng / dịch vụ trong / etc / services trên các máy linux)


6

Ping là ICMP, nếu bạn chặn ICMP, bạn không thể ping.

Bạn vẫn có thể kiểm tra các cổng TCP hoặc UDP nếu bạn chấp nhận kết nối TCP / UDP.

Nếu bạn đang chạy thử nghiệm trên các thùng chứa thiếu ping, nc, telnet và các công cụ khác, bạn có thể sử dụng mẹo này:

(echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"

Điều này sẽ cố gắng kết nối thông qua tcp / udp thông qua thiết bị (wow, tôi biết) và echo "mở" nếu cổng được mở hoặc "đóng" nếu nó bị đóng.

Nó sẽ treo một lúc trước khi lặp lại "đóng" khi đó là trường hợp.


2
Thật tuyệt, tôi đã phải sử dụng cái này trong docker pod ;-)
Vô định hình

4

Chạy một tác nhân SNMP trên máy từ xa và sử dụng trình quản lý để đọc một trong các giá trị ngoài MIB tiêu chuẩn.


3

Nếu bạn không có tường lửa và bộ định tuyến, nghĩa là, nếu bạn ở cùng phân khúc với máy chủ mà bạn đang cố kiểm tra - hầu hết các giải pháp ở trên đều hơi imho.

Việc bạn kết nối với cổng nào không quan trọng và trên thực tế, nếu bạn kết nối với một cổng không có khả năng chạy dịch vụ, bạn có thể hoàn thành công việc mà không bị phát hiện.

Làm sao?

Bạn có thể sử dụng bất kỳ công cụ nào bạn thích, nhưng chúng tôi chỉ có thể sử dụng telnet ...

% telnet <host> 313373
Trying 10.211.55.3...
telnet: connect to address 10.211.55.3: Connection refused
telnet: Unable to connect to remote host
%

Điều này sẽ xảy ra ngay lập tức, trừ khi máy chủ đang bỏ các gói. Điều thực sự xảy ra là ngăn xếp TCP / IP trên máy chủ đang gửi lại cho bạn một phân đoạn TCP với tập bit RST - tức là chấm dứt gói SYN của bạn.

Việc bạn nhận được gói RST có nghĩa là thực sự có một máy chủ lưu trữ ở đầu kia và như một phần thưởng - bạn đã hoàn thành mà không bị phát hiện (TCP / IP không có ứng dụng lớp trên để nói về kết nối này) .

Tuy nhiên, thay vì telnet, có lẽ tôi sẽ sử dụng một cái gì đó như scacco, viết lên thứ gì đó tìm cờ RST và cho bạn biết.

Chỉ cần hoàn thành việc này, nếu không có máy chủ nào trên IP mà bạn thử - nó sẽ bị treo trong một thời gian và thời gian chờ - điều tương tự sẽ xảy ra nếu máy chủ nhận có tường lửa với bộ lọc thả.

Nếu tường lửa có liên quan, thì như những người khác đã đề xuất, hãy sử dụng các công cụ như nmapvà bất cứ thứ gì khác.


3

Nếu bạn có quyền truy cập vào một máy khác trên cùng mạng LAN với máy mục tiêu của mình, bạn có thể sử dụng arping .

Arping hoạt động bằng cách gửi các gói ARP nhắm mục tiêu vào máy, điều này hoạt động hoàn hảo vì bạn không thể chặn các gói arp nếu bạn muốn sử dụng mạng (tốt, bạn có thể thiết lập các bảng arp tĩnh ở mọi nơi: D) Nhưng nhược điểm là bạn phải ở trong cùng LAN với mục tiêu arping của bạn.


1

Có bất kỳ dịch vụ có sẵn trên máy? Một cách để xem máy có sử dụng máy khách telnet để kết nối với nó không, nhưng thay đổi cổng bạn cần nhấn.

Vì vậy, giả sử máy đang chạy MS SQL chạy trên cổng 1433 theo mặc định. Bạn sử dụng lệnh sau

telnet machine-name-address 1433

Nếu Telnet kết nối máy hoạt động và chạy, điều đó không có nghĩa là nó chạy đúng, nhưng dù sao cũng nghe cổng đó



1

nmap -T5 -sS -P0 ho.st.ip.addr Điều đó sẽ thấy cổng có sẵn trên máy đó .. Đề nghị cài đặt cygwin nếu bạn đang chạy trên windows hoặc không có quyền truy cập vào máy linux.



1

Google cho "nmap". Tôi sử dụng tất cả các thời gian. Tuyệt vời để xác minh tường lửa của bạn đang hoạt động như mong đợi quá. Thêm vào đó tôi tin rằng nó đã được tham chiếu trong một bộ phim Ma trận khiến nó trở nên tuyệt vời gấp đôi.


1

Bạn có thể yêu cầu máy gửi bẫy snmp (gói) mỗi phút một lần đến màn hình từ xa và thiết lập quy tắc để giám sát rằng bạn đang nhận bẫy mỗi phút.


1
Đây thực sự là một câu trả lời tốt và rất đúng. SNMP đủ mức thấp và có thể được cấu hình trên các hệ thống windows. Đây là giải pháp thay thế duy nhất cho ICMP và trên thực tế được các kỹ sư mạng sử dụng thường xuyên để giám sát các bộ định tuyến và hệ thống qua mạng LAN và LAN
Abhishek Dujari

1

Giải pháp đơn giản cho vấn đề này sẽ là sử dụng tiện ích netcat. Điều kiện tiên quyết cho kịch bản này là người ta phải biết ít nhất một cổng được mở trên máy từ xa đó.

nc -nv ip_address port_number

Lệnh trên sẽ cho kết quả, xác định xem cổng đã mở có mở hay không và do đó có sẵn máy không


0

Bạn có thể cài đặt một máy chủ web đơn giản và sử dụng một trang web có nội dung "TRỰC TUYẾN". Bạn chỉ phải kết nối với nó bất cứ nơi nào bạn muốn Tất nhiên bạn cần một ip statin hoặc dịch vụ linke dyndns


0

Một cách tiếp cận rất đơn giản là telnet đến một cổng TCP nên được mở trên máy chủ, nghĩa là:

telnet theServerHostname 80

Mặc dù nếu dịch vụ ngừng hoạt động, bạn sẽ nhận được kết quả tương tự như khi máy chủ ngừng hoạt động.

Có tất cả các loại quét có thể được thực hiện với nmap, tìm hiểu về chúng trên trang web của nmap và bạn nên trở thành một chuyên gia về cách kiểm tra nếu máy chủ lưu trữ. Chúng bao gồm sử dụng các giao thức khác ngoài icmp (ping), chẳng hạn như TCP (như telnet hiện) và UDP.

Ngoài ra, nếu bạn muốn một cái gì đó bao gồm khả năng kết nối với udp, tương tự như telnet theo nghĩa này, hãy xem xét netcat .


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.