Có dịch vụ yêu cầu tiếng vang ICMP không?


7

Thông thường, trong các ứng dụng mà tôi phát triển, tôi muốn bao gồm một chỉ báo trạng thái mạng cho các thiết bị khác nhau trên mạng. Cách dễ nhất để giám sát các thiết bị này là bằng cách ping chúng. Nhưng tiếng vang ICMP thường khó tích hợp vào một ứng dụng do yêu cầu bảo mật với ổ cắm thô hoặc vấn đề về hiệu năng với việc tách ra ping. Ngoài ra, đối với các tình huống không phải là vấn đề, tôi sẽ viết các biến thể hơi khác nhau của cùng một mã ping cho các tình huống khác nhau.

Hầu hết các thiết bị mà tôi theo dõi được các thiết bị nhúng với khả năng của mạng tối thiểu (nhưng luôn bao gồm ICMP echo), vì vậy tôi làm phải gắn bó với giao thức này, những thứ như Echo Nghị định thư (chỉ ra bởi Mark trong ý kiến dưới đây, cảm ơn!) Thường aren Không có sẵn cho tôi.

Có dịch vụ nào đã tồn tại có thể cung cấp dịch vụ ping ICMP chi phí thấp cho ứng dụng không root?

Tôi đang xem xét việc viết một dịch vụ chạy bằng root và cho phép các ứng dụng không root khác kết nối với nó, thêm thiết bị để giám sát và sau đó truy vấn thời gian ping và trạng thái mạng từ nó, nhưng tôi không muốn phát minh lại một bánh xe và tôi Tôi đang tự hỏi nếu một cái gì đó như thế này đã tồn tại.


2
en.wikipedia.org/wiki/Echo_Protocol trông giống như một cái gì đó bạn có thể sử dụng? Đó không phải là ICMP. Việc cài đặt máy chủ thường khá dễ dàng.
Đánh dấu Plotnick

@MarkPlotnick Đó là một gợi ý hay khi có sẵn và dễ dàng tích hợp vào máy khách. Thật không may, hầu hết các thiết bị mà tôi đang theo dõi thường là các hệ thống nhúng tùy chỉnh hoặc tối thiểu hỗ trợ tiếng vang ICMP nhưng không phải là Giao thức Echo.
Jason C

2
Tôi nghĩ rằng chiến lược phổ biến nhất được sử dụng bởi các chương trình không root là chạy pingchính lệnh đó. Nó có các tùy chọn để làm cho nó im lặng, và sau đó bạn chỉ cần kiểm tra trạng thái chấm dứt để xem nó có thành công hay không.
Barmar

Câu trả lời:


2

Câu trả lời cho câu hỏi của bạn có lẽ là "Không, không có."

Lý do cho điều này là ICMP là một giao thức cấp thấp và để tạo ra lưu lượng ICMP, một ứng dụng cần có quyền truy cập đặc quyền vào giao diện mạng của bạn. Bạn có thể thấy bằng chứng này trên hầu hết các hệ thống bởi thực tế là các nhị phân tạo ra ICMP là root-set. Lưu ý bit dính:

$ ls -l /sbin/ping /usr/sbin/traceroute
-r-sr-xr-x  1 root  wheel  28088 Aug 12 12:19 /sbin/ping
-r-sr-xr-x  1 root  wheel  28608 Aug 12 12:20 /usr/sbin/traceroute

(Đây là trên FreeBSD. Kết quả của bạn trên các hệ điều hành khác có thể khác.)

Đối với một ứng dụng để tạo lưu lượng truy cập mạng thô, nó cần chạy dưới quyền root. Vì /sbin/pingđã chạy bằng root, nên đặt cược tốt nhất của bạn có khả năng sử dụng nó để tạo ra các lệnh ping của bạn.

Nếu bạn đang làm điều này cho một số lượng lớn máy chủ lưu trữ, bạn có thể muốn xem fping . Một tùy chọn khác sẽ là tcping , có thể tạo các gói TCP cung cấp kết quả tương tự với ping ICMP. Yêu cầu sẽ là một cổng mở trên hệ thống đích để nhận gói tin. Bạn có thể sử dụng phương pháp này hoặc sao chép cách tiếp cận dựa trên nguồn. Cả hai thứ này có thể đã có sẵn như là một gói cho hệ điều hành của bạn.

Đối với một giải pháp giám sát quy mô lớn hơn, NagiosZabbix là các tùy chọn miễn phí phổ biến, nhưng có nhiều lựa chọn khác.


1

Có thể quá phình to cho những gì bạn đang tìm kiếm, nhưng hầu hết các giải pháp giám sát chính thức như Nagios, icinga hoặc check_mk đều cung cấp giám sát icmp và thường cung cấp API mà bạn có thể truy vấn.


Này đó không phải là một ý tưởng tồi; Tôi đã quên nagios và tôi chưa bao giờ thử những người khác. Tôi sẽ dành thời gian với họ và xem liệu tôi có thể tìm thấy một thứ dễ tích hợp không.
Jason C
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.