Ai đó chạy một lần kiểm tra cổng, thấy từ mở và coi như máy chủ đã được giải quyết. Ý nghĩa thực sự của kết quả đó rất hẹp: từ vị trí của trình kiểm tra, tại thời điểm đó, một kết nối TCP đến địa chỉ và cổng ấy đã được chấp nhận. Nó không nói gì về bắt tay giao thức Minecraft, xác thực tài khoản, hay việc máy chủ có cho người chơi vào một thế giới hay không.

Đó là bốn lớp khác nhau, và thất bại ở bất kỳ lớp nào cũng tạo ra cùng một câu từ người chơi: nó không hoạt động.

Một phép dò chỉ kiểm tra những gì nó thấy

Một kết nối TCP hoàn tất khi cả hai bên kết thúc bắt tay ba bước, vốn nằm dưới mọi thứ mà trò chơi biết. Phép dò báo rằng có một bộ lắng nghe và nó đã trả lời từ vị trí mạng của nó. Nó không thể nói rằng bộ lắng nghe chính là trò chơi, vì bất kỳ tiến trình nào cũng có thể chiếm một cổng và chấp nhận kết nối.

Vị trí quan trọng như kết quả. Một trình kiểm tra trên internet công cộng thử một đường đi từ một mạng. Một trình kiểm tra do người vận hành chạy từ bên trong cùng mạng đó thử một đường đi hoàn toàn khác, và kết quả tích cực ở đó hầu như không nói gì về những gì người chơi ở xa trải nghiệm. Hai trình kiểm tra khác nhau ở hai nhà cung cấp khác nhau thậm chí có thể không đồng ý vì những lý do không liên quan gì đến máy chủ của bạn.

Thời điểm cũng quan trọng. Kết quả của phép dò mô tả thời điểm nó chạy, và một kết nối gia đình với địa chỉ động hoặc quy tắc chuyển tiếp đã thay đổi có thể dịch chuyển câu trả lời thật vài phút sau đó. Ghi lại địa chỉ công cộng, cổng, họ địa chỉ và thời gian cùng với phán quyết, nếu không thì quan sát không thể tái lập. Lặp lại việc kiểm tra từ một mạng thực sự khác, không phải từ điện thoại trên cùng kết nối.

Bốn lớp giữa một socket và một người chơi

Hãy hình dung trình tự mà một máy khách đang tham gia thực sự thực hiện. Đầu tiên nó phân giải địa chỉ, sau đó mở kết nối TCP đến cổng đã công bố, sau đó nói giao thức riêng của trò chơi để thương lượng và xác thực, và cuối cùng máy chủ quyết định danh tính đó có được vào thế giới hay không. Mỗi lớp có chữ ký thất bại riêng, và chỉ lớp đầu tiên là hiển thị với trình kiểm tra cổng.

Cổng mặc định của Java Edition là 25565, nhưng người vận hành có thể công bố một cổng ngoài khác và chuyển tiếp nó vào trong, nên con số người chơi gõ không nhất thiết là con số máy chủ thấy. Một trình kiểm tra nhắm vào cổng ngoài sai sẽ báo đóng trong khi máy chủ hoàn toàn khỏe mạnh, và đó là báo động giả phổ biến nhất trong toàn bộ lĩnh vực này.

Tên thêm một bước nữa phía trên cổng. Nếu người chơi gõ một tên máy chủ, phân giải phải trả về địa chỉ đã công bố, và trên một máy bên trong mạng nó có thể trả về địa chỉ riêng thay vào đó. Đó không phải lỗi tường lửa và không lượng chuyển tiếp cổng nào sẽ thay đổi điều đó.

Vì sao người chơi bên trong đi một đường khác

Một người chơi trên cùng LAN, hoặc trên VPN đến được LAN đó, cố gắng đến địa chỉ công cộng từ bên trong. Yêu cầu đi đến địa chỉ ngoài của router và router phải dịch nó trở lại vào trong, đây là cách sắp xếp thường được gọi là hairpinning hay phản chiếu NAT. Cả phần dịch đi lẫn đường về đều phải khớp để việc này hoạt động, và nhiều router gia đình không triển khai nó chút nào.

Đó là lý do khách từ bên ngoài vào được còn người ngồi cạnh máy chủ thì không. Đường ngoài thực sự ổn; thứ thất bại là đường vòng bên trong, và nó thất bại theo cách từ màn hình người chơi trông như vấn đề của máy chủ. Nhật ký của chính máy chủ quyết định cái nào đã xảy ra, vì một kết nối chưa bao giờ được dịch sẽ không bao giờ đến được nó.

Có hai cách sửa trung thực và một thói quen xấu. Các lựa chọn tốt là cho người chơi bên trong dùng địa chỉ riêng hoặc một tên split-DNS được phân giải nội bộ thành địa chỉ riêng, hoặc bật phản chiếu trên router nếu tính năng đó tồn tại và hoạt động đúng. Thói quen xấu là mở thêm cổng hoặc tắt tường lửa của máy chủ, điều không thể ảnh hưởng đến một phép dịch mà router chưa bao giờ thực hiện.

Tài liệu của Netgate về phản chiếu NAT mô tả chi tiết hơn sự khác biệt giữa ngoài và trong cùng lựa chọn thay thế split-DNS. Hãy đọc nó như mô tả cơ chế chứ không phải lời hứa rằng bất kỳ nhà cung cấp VPN hay router cụ thể nào cũng hỗ trợ mọi biến thể loopback.

Thu thập bằng chứng từ mọi góc nhìn

Với mỗi bài kiểm tra, ghi lại ai đã chạy, từ đâu, lúc nào, nhắm vào địa chỉ và cổng nào, và máy chủ đã ghi gì. Việc trò chơi từ chối với lý do rõ ràng trong bảng điều khiển máy chủ là một phát hiện khác với một kết nối chưa bao giờ đến, và hai điều đó dẫn đến những hướng ngược nhau.

Nếu những người chơi từ xa được phép vào được còn một người chơi cục bộ thì không, đường cục bộ là câu hỏi còn lại và nó xứng đáng được điều tra riêng: máy khách đã dùng địa chỉ nào, router đã làm gì với phép dịch, và máy chủ có ghi lại bất kỳ nỗ lực kết nối nào không. Hãy trao ba sự thật đó cho người sở hữu mạng thay vì mở lại cổng một cách ngẫu nhiên.

Bài viết liên quan