Nếu một chương trình đang chạy trên máy Linux, có cách nào để chương trình đó quét tìm các cổng được phép thông qua tường lửa không? ví dụ, nếu một lập trình viên muốn thực hiện một hệ thống trò chuyện, nhưng chương trình cần biết cổng nào không bị từ chối truy cập vào các kết nối đến bởi tường lửa của người dùng, có cách nào để kiểm tra điều này trong mã của bạn không? Một chương trình có thể không thất bại trong việc liên kết một ổ cắm với cổng ngay cả khi tường lửa đang chặn cổng đó từ các kết nối đến. Có cách nào để kiểm tra các cổng tường lửa mở không?Truy cập cổng TCP và C++
Sidenote: Điều này hoàn toàn dành cho mục đích giáo dục và không có ý định xấu, rõ ràng là tôi đang viết hệ thống trò chuyện và trong khi thử nghiệm, tôi không thể kết nối máy tính để bàn - máy tính xách tay cho đến khi tôi mở cổng theo cách thủ công thông qua tường lửa của tôi. Điều này dường như một chút với tôi, và không giống như một cái gì đó mà mã của một lập trình viên nên yêu cầu người dùng làm. Chưa kể tôi không muốn để lại vài người sử dụng mã này có nguy cơ (nếu rời khỏi một cổng vĩnh viễn mở làm như vậy). Vì vậy, có vẻ như tôi sẽ phù hợp hơn tìm một cách để sử dụng các cổng đã được mở cho các kết nối TCP đến.
sidesidenote: tất cả các khách hàng đang chạy fedora
Khám phá [UPnP] (http://en.wikipedia.org/wiki/Universal_Plug_and_Play). –
Chọn một cổng được đánh số cao và thực hiện một số cách khác. Tường lửa không nên chặn nội dung trên 32000. Phương pháp dựa trên UDP để kết nối với cổng chung (ví dụ 1900) được các dịch vụ khác sử dụng cho phép bạn khởi động một cổng nổi tiếng có khả năng mở để cung cấp khả năng khám phá cổng động được sử dụng cho TCP. –
Tôi không nghĩ rằng điều này có thể được thực hiện một cách đáng tin cậy chỉ trên chính máy chủ. Nếu không sử dụng một số loại proxy từ xa, không có cách nào để máy chủ kiểm tra kết nối thông qua tường lửa perimiter. – Barmar