Xóa key-method khỏi hồ sơ OpenVPN không thay đổi điều gì
Chỉ thị đó biến mất khỏi bộ phân tích, không phải khỏi giao thức. Hãy tách tùy chọn lỗi thời khỏi định dạng trao đổi khóa trước khi sửa hồ sơ.
Một hồ sơ đã chạy nhiều năm bỗng nhiên từ chối khởi động, và thông báo nêu tên một chỉ thị mà không ai nhớ đã thêm vào: key-method. Kết quả tìm kiếm tiếp theo gợi ý thêm key-method 2 để tương thích, nhưng đó là lời khuyên từ một thời đại khác. Bộ phân tích đã từ chối dòng đó là bản hiện hành, và nó hoàn toàn không có tùy chọn như vậy. Xóa dòng đó sẽ sửa được việc khởi động, và nó không thay đổi gì về cách hai bên bảo vệ phiên.
Chính khoảng cách giữa những gì hồ sơ chứa và những gì giao thức thực sự làm là toàn bộ chủ đề ở đây, và nó giải thích một số chỉnh sửa khác mà người ta làm cùng lúc. Nó cũng giải thích vì sao những chỉnh sửa đó thường đến thành một gói.
Triệu chứng là lỗi phân tích, không phải lỗi bắt tay
Các tùy chọn được đọc trước khi bất kỳ gói nào được gửi. Hồ sơ có chỉ thị không xác định sẽ thất bại ở giai đoạn đó, nên tiến trình không bao giờ chạm tới mạng và không bao giờ tạo ra lỗi bắt tay. Câu chữ thường chỉ ra tùy chọn và tệp, khiến đây là một trong những lỗi dễ quy nguyên nhân nhất. Không có gói, tuyến hay tường lửa nào liên quan.
openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
Nếu thông báo nêu tên chỉ thị, chẩn đoán đã xong: tệp chứa thứ mà bản dựng này không chấp nhận. Nếu thông báo nêu đường dẫn tệp, thì vấn đề là include hoặc khóa bị thiếu, đó là một phần khác của cùng giai đoạn khởi động.
Điều bạn không nên kết luận là máy khách hoặc máy chủ cần chế độ giao thức cũ hơn. Lỗi phân tích là vấn đề từ vựng giữa tệp của bạn và tệp nhị phân, và trong trường hợp này tệp nhị phân chỉ đơn giản đã bỏ một từ khỏi từ vựng của nó.
Chỉ thị và định dạng truyền tải là hai thứ khác nhau
Tùy chọn key-method cũ chọn cách đóng khung trao đổi khóa TLS, còn trao đổi hiện đại là phương thức nhiều gói mà tùy chọn đó từng yêu cầu. Tùy chọn biến mất vì nó không còn chọn gì nữa; định dạng mà nó nêu tên trở thành định dạng duy nhất. Vì vậy xóa dòng đó để phiên dùng đúng khung như trước. Một chỉnh sửa văn bản không thể thay đổi điều đó theo hướng nào.
Vì thế đưa một tệp nhị phân cũ trở lại để «khôi phục» phương thức 2 là cách sửa sai. Nó không khôi phục gì ngoài một bộ phân tích cũ hơn với giá trị mặc định cũ hơn, và nó lấy đi của bạn các bản sửa đến sau đó. Lập luận tương tự áp dụng cho việc làm yếu kiểm tra chứng chỉ hoặc danh sách mật mã với hy vọng kết nối trở lại.
Một kiểm tra hữu ích là phiên bản và cấu hình đã phân tích, không phải sự có mặt của từ đó trong tệp:
openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null
Cần xóa gì, và khỏi tệp nào
Chỉ sửa tệp mà tiến trình đang chạy thực sự đọc. Trên các hệ thống đóng gói, đó thường là hồ sơ trong thư mục máy khách hoặc máy chủ mà unit chỉ ra, không phải bản sao trong thư mục cá nhân bạn giữ để tham khảo. Hồ sơ được tạo có thể được dựng lại từ mẫu, nên thay đổi chỉ làm trên bản đã triển khai sẽ trở lại sau lần cấp phát tiếp theo.
Xóa dòng lỗi thời và để yên điểm cuối, chứng chỉ, chính sách mật mã và cài đặt kênh điều khiển. Đây là những tùy chọn được hỗ trợ mà tiến trình cần, và chúng không liên quan tới lỗi phân tích. Nếu cùng hồ sơ chứa chỉ thị khác mà bạn không nhận ra, hãy đối chiếu từng cái với phiên bản bạn chạy thay vì xóa cả nhóm cho tới khi tiến trình khởi động.
Sau đó khởi động phiên bản mong muốn và đọc đầu ra khởi động của nó. Khởi động sạch với trình lắng nghe hiện diện là xác nhận giai đoạn này đã xong; thử nghiệm máy khách sau đó trả lời một câu hỏi khác.
Hồ sơ bị từ chối và máy khách bị từ chối trông giống nhau
Hai lỗi tạo ra các chủ đề hỗ trợ tương tự và cần bằng chứng khác nhau. Máy chủ từ chối cấu hình của chính nó sẽ không bao giờ khởi động, nên không máy khách nào kết nối được. Máy chủ khởi động tốt và từ chối một máy khách thì đang chạy, và nhật ký của nó có lý do: sự cố chứng chỉ, một tùy chọn bị đẩy mà máy khách không chấp nhận, hoặc mật mã không khớp.
Tùy chọn đã xóa không phải chẩn đoán cho trường hợp thứ hai, và chạm tới nó lãng phí đúng một giờ hai lần. Nếu nhật ký máy khách cho thấy sự từ chối của máy chủ, hãy đọc sự từ chối đó; nếu nó cho thấy lỗi cục bộ, tệp cần xem là hồ sơ máy khách. Chạm tới một chỉ thị không còn tồn tại làm chậm cả hai cuộc điều tra như nhau.
Những câu hỏi tương thích mà dòng đó chưa bao giờ trả lời
Những hồ sơ lưu truyền cùng chỉ thị này thường mang một câu chuyện về một nền tảng cụ thể, và câu chuyện sống lâu hơn lý do kỹ thuật. Máy khách di động hoặc máy để bàn vẫn cần một hồ sơ đầy đủ được hỗ trợ: chuỗi chứng chỉ tin cậy, mật mã dữ liệu mà cả hai đầu chấp nhận, chế độ kênh điều khiển mà cả hai đầu triển khai, và không có chỉ thị nào mà bản dựng của máy khách từ chối. Không điều nào trong số đó được quyết định bởi việc có hay không dòng key-method cũ.
Nén là một câu hỏi chính sách riêng có cùng hình dạng. Xóa một dòng key-method không nói gì về việc một chỉ thị nén có được hỗ trợ hay chấp nhận trong triển khai của bạn hay không, và hai quyết định nên được đưa ra độc lập. Xóa nhiều cài đặt liên quan đến bảo mật cùng lúc cho tới khi có thứ gì đó kết nối được chính là cách một hồ sơ đang chạy trở thành một hồ sơ không giải thích được.
Giữ một ghi chép ngắn về những gì bạn đã xóa và vì sao: tùy chọn, phiên bản đã từ chối nó, và lệnh đã hiển thị lỗi. Người tiếp theo thừa kế hồ sơ sẽ cần đúng ba sự thật đó, và viết chúng ra bây giờ rẻ hơn là dựng lại sau này.