Tôi có một ứng dụng PHP đang cố gắng mở kết nối ổ cắm với máy in thông qua bộ định tuyến của mình.

Một vài điều cần lưu ý - kỹ năng kết nối mạng của tôi còn thiếu nên tôi có thể thiếu điều gì đó rõ ràng hoặc điều này thậm chí có thể không thực hiện được theo cách tôi muốn. Điều đó đang được nói, tôi đã thực hiện một loạt tìm kiếm về vấn đề và dường như không thể tìm thấy bất kỳ ai có vấn đề chính xác này (chỉ có nhiều người đang cố gắng SSH từ xa). Tôi cũng biết rằng thiết bị mà tôi đang cố gắng kết nối đang hoạt động như dự kiến ​​vì tôi có một ứng dụng nodejs nhỏ mở thành công kết nối với nó trên mạng cục bộ. Và cuối cùng tôi đang sử dụng Docker để chạy ứng dụng PHP cục bộ, điều này có thể liên quan đến vấn đề của tôi (mặc dù tôi biết kết nối đang đến bộ định tuyến do các bản ghi).

Mã rất đơn giản:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_TCP, SO_DEBUG, 1);

$server_connect = socket_connect($socket, "router_public_ip", 9100);

Trong bộ định tuyến của mình, tôi thiết lập cổng đó để được chuyển tiếp: nhập mô tả hình ảnh ở đây

Khi tôi cố gắng kết nối ném PHP socket_connect(): unable to connect [111]: Connection refusedvà nhật ký bộ định tuyến cho thấy rằng kết nối không thành công.

Tôi nhận thấy trong nhật ký bộ định tuyến rằng cổng bắt đầu là ngẫu nhiên và đã thử thay đổi cấu hình chuyển tiếp cổng của tôi thành: nhập mô tả hình ảnh ở đây

Điều này mang lại cho tôi kết quả tương tự và bộ định tuyến của tôi không cung cấp cho tôi nhiều thông tin để tiếp tục (về lý do tại sao kết nối không thành công, nó có bị chặn không?). Đây là tất cả những gì được hiển thị trong nhật ký:

nhập mô tả hình ảnh ở đây

Chỉnh sửa: Menu tiện ích cấu hình máy in dường như không đề cập bất kỳ điều gì về tường lửa hoặc các kết nối từ xa. nhập mô tả hình ảnh ở đây

answer

Sau đó, tôi tự hỏi về cổng 0.0.0.0 trong cấu hình mạng của máy in.

Nó có nghĩa là máy in của bạn có thể kết nối trực tiếp với bất kỳ địa chỉ IP nào. Trong các trường hợp bình thường, một hệ thống sẽ chỉ có thể giao tiếp trực tiếp với các hệ thống khác trong mạng con của nó (xem mặt nạ). Để có phạm vi tiếp cận rộng hơn, nó sẽ cần phải đi qua một cổng.