TCP 443 là một đường dự phòng có điều kiện tiên quyết, không phải lớp ngụy trang đưa đường hầm lọt qua bất kỳ bộ lọc nào. Nó giúp ích khi nhà cung cấp đã công bố một bộ lắng nghe TCP trên cổng đó và đường truyền chịu được kết nối để mở hàng giờ. Nó thất bại, thường là hết thời gian chờ, khi thiếu một trong hai điều đó, và thông báo hết giờ hiếm khi nói thiếu cái nào. Quyết định có đổi hay không cần ba câu hỏi, và chỉ một trong số đó liên quan đến số cổng.

Số cổng không phải lời hứa về vận chuyển

Cổng đặt tên cho một điểm cuối; TCP biến nó thành một dòng byte có thứ tự; OpenVPN quyết định điều gì đi bên trong dòng đó. Một máy chủ web trên cùng con số dùng cách bố trí ứng dụng hoàn toàn khác, nên việc chia sẻ cổng 443 chỉ khiến hai thứ trông giống nhau với bộ lọc và không hơn thế. Con số là gợi ý mà bộ lọc đọc, không phải thuộc tính làm thay đổi nội dung gói tin. Coi hai thứ là một vì chúng chia sẻ một cổng chính là sai lầm đứng sau phần lớn sự nhầm lẫn ở đây.

Các thiết bị trung gian hiếm khi đưa ra quyết định cho phép hay chặn đơn giản về một cổng. Nhiều thiết bị kiểm tra các byte đầu, một số ghim đích đến, và một số đặt lại các kết nối để mở quá lâu. Đó là lý do cùng một hồ sơ có thể chạy từ mạng này và hết thời gian chờ từ mạng khác, và đó là lý do nên thử đường dự phòng như một tùy chọn được hỗ trợ thay vì tin nó như một lời hứa. Khi bộ lọc xem xét lưu lượng, số cổng chỉ là thứ đầu tiên nó nhìn.

Xác nhận bộ lắng nghe trước khi chạm vào hồ sơ

Máy chủ phải được cấu hình cho TCP trên cổng, và hồ sơ máy khách phải yêu cầu cùng kiểu vận chuyển. Việc viết lại hồ sơ UDP để yêu cầu TCP không tạo ra bộ lắng nghe, và thời gian chờ phát sinh không thể phân biệt với tường lửa vứt bỏ cổng. Hãy tải hồ sơ TCP riêng của nhà cung cấp khi có, vì một số dịch vụ công bố điểm cuối và cài đặt danh tính riêng cho từng kiểu vận chuyển. Sửa bằng tay phù hợp cho một thử nghiệm có kiểm soát và là cách tồi để đoán cấu hình mà nhà cung cấp dự định.

Hai phía của sự khớp đó xuất hiện trong cấu hình, và các tùy chọn liên kết của dự án OpenVPN ghi lại cả hai dạng. Cặp tối thiểu trông như sau:

# server: accept TCP on this port
proto tcp-server
port 443
# client: request the same transport
proto tcp
remote vpn.example.com 443

Ba điều kiện quyết định đường dự phòng có đáng giá không

Điều kiện thứ nhất là nhà cung cấp có cung cấp kiểu vận chuyển đó hay không; không có nó thì mọi thứ khác không quan trọng. Điều kiện thứ hai là đường truyền duy trì một phiên dài hạn, vì một số mạng đặt lại các kết nối để mở thay vì chặn cổng hoàn toàn. Điều kiện thứ ba là đường dự phòng là ngoại lệ có chủ đích hay là giải pháp tạm che giấu một lỗi mà bạn chưa khắc phục.

Mỗi điều kiện có một phép kiểm tra rẻ. Thất bại ở bất kỳ điều nào trong số đó trông giống nhau từ phía máy khách:

ConditionHow to check itWhat a failure decides
The server offers TCPThe operator's profile list, or a listening-socket check on the serverNo client-side edit can help
The path keeps long sessionsA test connection left open for an hourReconnects will look like server faults
The fallback is deliberateA change record naming the UDP faultThe underlying fault stays invisible

Trước khi so sánh các kiểu vận chuyển, hãy hoàn tất mọi lần đăng nhập trên cổng bắt giữ. Một mạng chưa chấp nhận thiết bị của bạn sẽ chặn cả hai kiểu vận chuyển, và khi đó việc so sánh đo cổng chứ không đo đường hầm. Hãy đăng nhập, xác nhận duyệt web thông thường hoạt động, và chỉ sau đó mới bắt đầu thử nghiệm.

Chi phí bạn chấp nhận: TCP bên trong TCP

TCP gửi lại các phân đoạn bị mất và giữ nguyên thứ tự của chúng. Khi một ứng dụng cũng dùng TCP chạy bên trong đường hầm TCP, hai lớp phục hồi phản ứng với cùng một mất mát, và chính sự tương tác đó khiến đường hầm có cảm giác chậm trên đường truyền có mất gói. Triệu chứng là độ trễ và rung, không phải hỏng hẳn, điều này khiến việc đổ lỗi cho đầu xa trở nên dễ dàng. Hãy đo từ phía máy khách với cả hai kiểu vận chuyển trước khi kết luận.

UDP tránh được việc lồng nhau này, và đó là lý do chính khiến nhà cung cấp thích nó và chỉ cung cấp TCP như một lựa chọn thay thế. Một kết nối TCP ổn định vẫn hữu ích hơn một kết nối UDP không thể tới, nên việc so sánh là giữa hai chi phí thật chứ không phải giữa một lựa chọn tốt và một lựa chọn tồi. Hãy giữ thiết bị và mạng truy cập không đổi trong khi so sánh, nếu không kết quả sẽ mô tả sai biến số.

Một số tính năng máy khách chỉ được ghi nhận cho một kiểu vận chuyển, nên hồ sơ dự phòng có thể âm thầm bỏ đi hành vi mà bạn dựa vào. Hãy đọc yêu cầu vận chuyển của tùy chọn trước khi coi hồ sơ TCP là một sự thay thế đơn giản.

Những lỗi mà kiểu vận chuyển khác không chạm tới

Một chứng chỉ hết hạn vẫn cần kiểm tra đồng hồ hoặc gia hạn, và một tài khoản bị từ chối vẫn cần thông tin đăng nhập đúng. Hãy giữ các kiểm tra danh tính máy chủ mà nhà cung cấp đã cung cấp, vì một số cổng quen thuộc không xác thực bất kỳ ai. Một cổng trả lời chỉ nói rằng có thứ gì đó đang lắng nghe.

Nếu đường hầm dựng lên mà đích vẫn hỏng, vấn đề còn lại là định tuyến hoặc phân giải tên sau khi kết nối, không phải vận chuyển. Hãy đi theo con đường đó thay vì xoay vòng qua các cổng, vì đó là cách một buổi chiều biến mất. Hồ sơ cho bạn biết nên thử kiểu vận chuyển nào; nó không bao giờ nói vì sao đường UDP thất bại.

Bài viết liên quan