Một máy chủ VPN trả lời trên TCP 10443, ứng dụng khách tích hợp của Windows có thông tin đăng nhập đúng, vậy mà kết nối vẫn chết sau một khoảng dừng giống như hết thời gian chờ DNS. Nguyên nhân thường là trường địa chỉ: gõ vpn.example.com:10443 vào Tên máy chủ hoặc địa chỉ khiến Windows đọc toàn bộ chuỗi như một tên máy chủ, vì ô đó không phải là đầu vào host:port thông thường. Việc có thể biểu đạt một cổng ở đó hay không phụ thuộc vào loại đường hầm mà hồ sơ sử dụng, và chỉ một trong bốn loại coi giá trị đó là thứ nó có thể phân tích.

Tại sao trường địa chỉ không phải ô host:port

Thuộc tính hồ sơ nằm sau trường đó là ServerAddress, và mỗi loại đường hầm tự quyết định nó làm gì với chuỗi. Ba loại không có tham số cổng nào để điền, nên dấu hai chấm và một con số chỉ là ký tự trong một cái tên sẽ không bao giờ được phân giải. Loại thứ tư chạy qua HTTPS, nơi cổng là một phần của URL, nên giá trị phải được viết ở dạng được phân tích như một URL.

Đó là lý do lỗi trông giống như phân giải tên chứ không phải kết nối bị từ chối. Không có cổng sai nào để báo cáo, chỉ có một tên máy chủ không tồn tại, và lỗi đến sau khi trình phân giải bỏ cuộc. Trước khi động vào máy chủ, hãy kiểm tra hồ sơ khai báo dùng loại đường hầm nào.

Ba loại có cổng cố định

PPTP kết nối tới TCP 1723 rồi mang đường hầm trong GRE, giao thức IP 47. L2TP/IPsec dùng UDP 1701 cho đường hầm và UDP 500 cùng 4500 cho IPsec, trong đó 4500 là cổng xuyên NAT. IKEv2 cũng dùng UDP 500 và 4500. Không hồ sơ nào trong số đó hiển thị trường cổng ở bất kỳ đâu trong giao diện, và không hồ sơ nào sẽ thương lượng một cổng không chuẩn.

Một máy chủ lắng nghe trên cổng tùy chỉnh do đó không thể tiếp cận được với các hồ sơ đó, bất kể địa chỉ được viết thế nào. Các câu trả lời thực tế khá hẹp: công bố cổng chuẩn trên máy chủ, hoặc chuyển dịch cổng chuẩn sang cổng tùy chỉnh trên bộ định tuyến phía trước nó. Cả hai đều giữ nguyên hồ sơ máy khách, điều rất đáng giá khi hồ sơ được triển khai bằng chính sách thay vì gõ tay.

SSTP cần URL, không cần tên

SSTP là ngoại lệ vì nó chạy bên trong một phiên TLS. Trường phải được phân tích như URL: trước hết là lược đồ https://, rồi máy chủ, rồi dấu hai chấm và cổng. Không có lược đồ, Windows tiếp tục coi giá trị là một cái tên thông thường và kết nối thất bại trước khi bất kỳ trao đổi TLS nào diễn ra.

Lý do khiến điều này làm người ta ngạc nhiên là cổng mặc định chấp nhận tên máy chủ trần. Một hồ sơ chưa bao giờ cần cổng tùy chỉnh thì không bao giờ dạy quy tắc đó, và người đầu tiên thêm một cổng sẽ phát hiện ra bằng cách thất bại. Sau khi lưu, hãy đọc lại giá trị đã lưu thay vì tin vào hộp thoại:

Get-VpnConnection -Name "Corporate SSTP" | Select-Object Name, ServerAddress, TunnelType

ServerAddress hiển thị chính xác những gì đã lưu. Nếu nó được đọc như một tên máy chủ trần có dấu hai chấm, hồ sơ chưa bao giờ nhận được URL và không số lần thử lại nào sửa được điều đó.

Cú pháp của nhà cung cấp bị dán vào cùng ô đó

Một số cổng kết nối ghi lại các quy ước bổ sung cho trường đó, chẳng hạn một realm được thêm sau cổng hoặc tham số truy vấn làm thay đổi cách xử lý chứng chỉ. Chúng được máy chủ của nhà cung cấp đó hiểu và, trong một số bản dựng, cả ứng dụng khách của họ. Chúng không thuộc định dạng hồ sơ của Windows, và dán chúng vào một hồ sơ tích hợp thường tạo ra đúng lỗi tên im lặng như vậy.

Hãy coi tham số vô hiệu hóa kiểm tra chứng chỉ là cảnh báo chứ không phải cách sửa. Nếu một hồ sơ chỉ kết nối được với tham số đó, chứng chỉ không khớp với tên đang dùng, và cách sửa đúng nằm ở cổng kết nối, không phải ở máy khách. Một realm sau cổng cũng có tính chất tương tự: nó chỉ có tác dụng nếu máy chủ phía bên kia mong đợi nó.

Chứng minh cổng, rồi đọc giai đoạn thất bại

Xác nhận rằng có thứ gì đó chấp nhận TCP trên cổng đó từ mạng của máy khách trước khi đổ lỗi cho hồ sơ:

Test-NetConnection vpn.example.com -Port 10443

Thành công chứng minh có trình lắng nghe, không phải SSTP. Máy chủ web, proxy ngược hoặc bộ cân bằng tải có thể hoàn tất bắt tay TCP mà vẫn không nói SSTP, nên một bài kiểm tra xanh với VPN đỏ là tổ hợp có thật. Hãy so sánh chủ thể chứng chỉ với tên trong hồ sơ, và xem nhật ký RasClient trên các bản dựng có kèm nó, vì nó ghi lại giai đoạn thất bại thay vì một thời gian chờ chung chung.

Sau đó hãy xem xét phương án loại bỏ vấn đề thay vì ghi chép nó: chuyển tiếp TCP 443 từ bên ngoài tới 10443 trên máy chủ VPN. Khi đó máy khách dùng hồ sơ mặc định không có cổng nào, thường là cách bố trí gọn nhất cho một đội máy được quản lý và để cổng tùy chỉnh thành chi tiết nội bộ.

Bài viết liên quan