Kênh điều khiển và kênh dữ liệu VPN: kiểm tra đúng tầng
Một đường hầm có thể thương lượng mà vẫn không mang gì. Kiểm tra kênh nào đã hỏng: thiết lập điều khiển, bảo vệ dữ liệu, hay tuyến đường và DNS phía sau cả hai.
Máy khách báo đã kết nối, máy chủ thấy một điểm ngang hàng, mà ứng dụng vẫn không đến được đâu. Lúc đó câu hỏi hữu ích không phải là đổi mật mã nào, mà là kênh nào đã hỏng. OpenVPN gọi tên rõ ràng hai chức năng: một kênh điều khiển thương lượng và quản lý phiên, và một kênh dữ liệu mang lưu lượng được bảo vệ. IKEv2 diễn đạt cách chia tương tự qua hiệp hội IKE và hiệp hội CHILD. Hãy thực hiện các kiểm tra dưới đây theo thứ tự, vì một bản sửa đường dữ liệu áp vào lỗi của đường điều khiển sẽ lãng phí cửa sổ thay đổi.
Đặt tên kênh trước khi gỡ lỗi
Phía điều khiển thương lượng vật liệu bảo mật, xác thực các điểm ngang hàng và quản lý kết nối. Phía dữ liệu mang lưu lượng đã chọn khi trạng thái cần thiết đã tồn tại.
Chúng hỏng theo cách khác nhau. Lỗi điều khiển thường để bạn hoàn toàn không có phiên dùng được, hoặc có một phiên thương lượng lại trong vòng lặp. Lỗi dữ liệu để lại một phiên trông có vẻ khỏe mạnh trong khi gói bị bỏ, bị định tuyến sai, hoặc bị bảo vệ bằng tham số mà phía bên kia sẽ không chấp nhận. Dòng nhật ký bạn đang đọc cho biết bạn ở trường hợp nào, nên hãy đọc nhãn trước phần nội dung lỗi.
Kiểm tra trao đổi điều khiển
Xác nhận rằng bắt tay hoàn tất và cả hai bên đồng ý về vận chuyển, phiên bản TLS và phương thức xác thực. Nhật ký OpenVPN in các dòng riêng cho kênh điều khiển và kênh dữ liệu, và chính dòng điều khiển là nơi xuất hiện sự không khớp về chứng chỉ, phiên bản TLS hoặc tls-crypt.
Nếu trao đổi điều khiển hỏng, hãy xem cổng có thể tới được, chuỗi chứng chỉ và ngày hiệu lực của nó, đồng hồ hệ thống, sự trùng lặp mật mã giữa máy khách và máy chủ, cùng bất kỳ khóa tls-auth hoặc tls-crypt nào. Một chuỗi chứng chỉ lớn cũng có thể hỏng ở MTU của đường đi trước khi bất kỳ xác thực nào hoàn tất, điều này trông như hết thời gian chứ không phải lỗi mật mã.
Sửa lỗi điều khiển bằng thiết lập điều khiển. Nâng mật mã dữ liệu hay nới lỏng chính sách xác thực dữ liệu sẽ không hoàn tất một lần bắt tay chưa bao giờ vượt qua trao đổi chứng chỉ.
Kiểm tra kênh dữ liệu riêng
Khi phiên đã lên, xác nhận mật mã và chế độ dữ liệu đã thương lượng, việc dẫn xuất khóa và hành vi khi gia hạn khóa. Trong OpenVPN, dòng kênh dữ liệu nêu mật mã và kích thước khóa thực sự được khởi tạo, và chúng có thể khác mật mã đầu tiên trong hồ sơ.
Sau đó kiểm tra xem phiên đã cài những gì. Một PUSH_REPLY có thể thêm tuyến đường, máy chủ DNS và chỉ thị redirect-gateway, và bất kỳ mục nào trong đó cũng có thể gửi lưu lượng tới nơi ứng dụng không dùng được. Với IKEv2, câu hỏi tương đương là các bộ chọn của hiệp hội CHILD có khớp với địa chỉ trong luồng thực hay không.
tls-auth và tls-crypt thuộc kênh điều khiển. Chúng xác thực hoặc mã hóa bắt tay và không chọn mật mã dữ liệu của ứng dụng. Nếu bạn thêm một trong số chúng với hy vọng đường dữ liệu thay đổi, thứ duy nhất bạn đã thay đổi là bắt tay.
Gắn tên với IKEv2 và OpenVPN
IKEv2 có một hiệp hội bảo mật IKE và một hoặc nhiều hiệp hội CHILD. Hiệp hội IKE mang các trao đổi điều khiển; hiệp hội CHILD mang lưu lượng được bảo vệ và các bộ chọn của nó. Chúng được thương lượng và gia hạn khóa theo lịch riêng, nên một cái có thể khỏe mạnh trong khi cái kia không.
ESP không có kênh điều khiển kiểu TLS bên trong. Giao thức điều khiển là IKE, và ESP là phần tải được bảo vệ. Gọi ESP là kênh dữ liệu là cách viết tắt lỏng lẻo trở nên khó hiểu khi đọc bản bắt gói, vì bản bắt cho thấy thông điệp IKE và gói ESP là hai giao thức khác nhau trên đường truyền.
Giữ sự tương ứng rõ ràng trong ghi chú của bạn: kênh điều khiển OpenVPN và IKE SA là phía quản lý, kênh dữ liệu OpenVPN và CHILD SA là phía lưu lượng, và các triển khai không thể hoán đổi cho nhau dù cách chia trông giống nhau.
Đừng sửa nhầm thiết lập nữa
Đi hết con đường theo một hướng: trao đổi điều khiển, bảo vệ dữ liệu, chuyển tiếp, rồi phân giải tên. Dừng ở giai đoạn đầu tiên hỏng và chỉ sửa giai đoạn đó. Một phiên đã kết nối có ping tới cổng hoạt động nhưng không có lưu lượng ứng dụng là vấn đề chuyển tiếp hoặc bộ chọn, không phải vấn đề bắt tay.
Viết bằng chứng cho từng giai đoạn riêng trong phiếu: dòng nhật ký điều khiển, tham số dữ liệu đã thương lượng, các tuyến đã cài và một yêu cầu thật. Cấu trúc đó ngăn việc làm yếu một phép kiểm tra danh tính đang hoạt động để sửa một vấn đề định tuyến về sau mà nó chưa từng gây ra, và ngăn việc bán một thay đổi mật mã dữ liệu như cách sửa lỗi chứng chỉ.
Tài liệu giao thức OpenVPN là tham chiếu cho cách chia điều khiển và dữ liệu; hãy dùng nó khi giao diện của nhà cung cấp dùng từ khác cho cùng hai chức năng.