Vì sao proxy của Cloudflare không thể chở OpenVPN trên một tên
Bản ghi qua proxy xử lý HTTP và HTTPS. Hãy tách các tên, giữ hai trình lắng nghe và trao cho mỗi kết nối chứng chỉ mà đối phương của nó thực sự tin cậy.
Một máy vừa chạy trang web vừa chạy máy chủ OpenVPN, và cám dỗ là trỏ một tên máy chủ duy nhất vào đó rồi để đám mây cam lo liệu lưu lượng. Proxy lo HTTP và HTTPS. Nó không lo một phiên OpenVPN, bất kể phiên đó dùng cổng nào. Hai tên, một trực tiếp và một qua proxy, không tốn gì và loại bỏ toàn bộ nhóm nhầm lẫn này.
Hai tên, hai phương thức vận chuyển
Cho trang web một bản ghi qua proxy để lưu lượng HTTP và HTTPS của nó đi qua Cloudflare. Cho VPN một bản ghi chỉ DNS phân giải thẳng tới cổng vào VPN công khai, và để máy khách dùng cổng UDP hoặc TCP mà nó được cấu hình.
Cả hai tên đều có thể kết thúc ở cùng một máy gốc. Khác biệt nằm ở điều xảy ra giữa máy khách và máy đó, và chính khác biệt đó là ý nghĩa của việc tách ra.
Tài liệu tham chiếu cổng mạng của Cloudflare liệt kê những cổng mà proxy web thông thường chấp nhận. Danh sách đó nói về HTTP và HTTPS trên các cổng ấy, không nói về những giao thức tùy ý tình cờ dùng chung một con số.
Cổng không phải giao thức
Chuyển OpenVPN sang TCP 443 không biến nó thành HTTPS. Proxy vẫn chờ một yêu cầu HTTP ở đầu kết nối, còn máy khách OpenVPN gửi một thông điệp điều khiển nhị phân thay vào đó. Kết nối thất bại theo cách trông như bị chặn mạng vì không có gì hữu ích đến được nhật ký.
Nếu yêu cầu thực sự là đặt một sản phẩm Cloudflare vào đường dữ liệu của VPN, hãy đánh giá sản phẩm có tài liệu nêu rõ hỗ trợ giao thức bạn cần. Đừng cho rằng đám mây cam là một đường hầm TCP hay UDP tổng quát, vì nó là proxy ngược cho lưu lượng web với một nhiệm vụ cụ thể.
Bản ghi chỉ DNS là câu trả lời nhàm chán nhưng hiệu quả, và là thứ nên với tới trước tiên.
Một máy vẫn cần hai trình lắng nghe
Các tên tách rời không cho phép hai tiến trình cùng lúc chiếm cùng một địa chỉ, cổng và phương thức vận chuyển. Nếu máy chủ web đã giữ TCP 443 trên mọi địa chỉ, một thực thể OpenVPN không thể lấy luôn cổng đó mà không có sự sắp đặt có chủ đích.
Gắn trình lắng nghe VPN vào cổng khác, hoặc địa chỉ khác, hoặc đặt một bộ ghép kênh có tài liệu ở phía trước và chấp nhận chi phí vận hành đi kèm. Mỗi lựa chọn đó nên hiển hiện trong các quy tắc tường lửa, vì trình lắng nghe không ai ghi lại chính là thứ bị bỏ sót khi sự cố xảy ra. Hãy ghi cách gắn đã chọn vào cùng runbook mô tả đường hầm. Khi đó người tiếp theo sẽ không phải phát hiện lại nó lúc hai giờ sáng.
Chứng chỉ đi theo kết nối mà chúng bảo vệ
Kết nối TLS của trình duyệt tới Cloudflare và kết nối của Cloudflare tới nguồn của bạn là hai quan hệ riêng biệt với hai chứng chỉ riêng biệt. Trình duyệt thấy chứng chỉ ở biên. Nguồn trình bày chứng chỉ của riêng nó với Cloudflare, và chứng chỉ Cloudflare Origin CA được thiết kế chính xác cho quan hệ thứ hai đó.
Chứng chỉ nguồn đó được Cloudflare tin cậy ở chế độ Full (strict) và nó không phải chứng chỉ trình duyệt được tin cậy phổ quát. Nếu ai đó truy cập trực tiếp tên máy chủ chỉ DNS và nhận cảnh báo, đó là hậu quả được mong đợi của một đường tin cậy đã thay đổi, không phải bằng chứng rằng mã hóa đã dừng.
Vì vậy một trang web được truy cập trực tiếp cần một chuỗi chứng chỉ mà các trình duyệt của nó tin cậy. Điều đó có thể cùng tồn tại với một trang qua proxy mà nguồn của nó hoàn toàn không nhằm để truy cập.
OpenVPN mang danh tính máy chủ và xác thực máy khách của riêng nó, cùng cơ quan cấp chứng chỉ riêng và sự bảo vệ kênh điều khiển riêng. Một ổ khóa trên trang web không cung cấp gì trong số đó, và hai quy trình cung cấp nên tách biệt.
Mức phơi bày đi theo tên
Một bản ghi VPN chỉ DNS công bố địa chỉ mà nó trỏ tới. Nếu địa chỉ đó cũng là nguồn web, nguồn không bị ẩn, và mô tả nó là ẩn vì tên kia qua proxy là một sai lầm kéo dài cho đến khi ai đó quét nó.
Xác định những yêu cầu web nào có thể chạm tới nguồn trực tiếp và thực thi điều đó tại nguồn, rồi cho phép trình lắng nghe VPN theo điều kiện của chính nó. Các trang quản trị, tải hồ sơ và trình lắng nghe dữ liệu có thể có ba yêu cầu phơi bày khác nhau dù một gói cung cấp cả ba.
Giữ các liên kết được tạo trên tên web công khai và lược đồ HTTPS, giữ hồ sơ máy khách trên tên VPN với giao thức và cổng thật. Không dịch vụ nào nên phụ thuộc vào việc đảo cài đặt proxy của dịch vụ kia trong vận hành bình thường.
Thứ tự công việc: tên qua proxy cho trang, tên chỉ DNS cho VPN, các trình lắng nghe riêng, chứng chỉ theo từng quan hệ, rồi một bài kiểm tra chứng minh mỗi tên chỉ chạm tới dịch vụ mà nó phải chạm.