Bản nâng cấp Ubuntu có làm hỏng L2TP/IPsec? So sánh các đề xuất IKEv1
Hồ sơ và mật khẩu không đổi, nhưng giai đoạn 1 giờ lại thất bại. Các đề xuất được chấp nhận của máy khách đã dịch chuyển, và máy chủ vẫn cung cấp những gì nó luôn cung cấp.
Kết nối hoạt động vào thứ Năm, bản nâng cấp chạy vào thứ Sáu, và đến thứ Hai máy khách quay vòng ở “connecting” rồi bỏ cuộc. Cùng laptop, cùng máy chủ, cùng tài khoản, cùng khóa chia sẻ trước. Không có gì trong hồ sơ bị sửa, vì thế những nghi phạm hiển nhiên, mật khẩu và firewall, làm bạn mất thời gian.
Điều đã thay đổi là danh sách các phép biến đổi mà máy của bạn sẵn sàng cung cấp. Cả hai ngăn xếp IPsec dùng trên Ubuntu, strongSwan và Libreswan, loại bỏ các thuật toán mà chúng không còn coi là an toàn, và plugin NetworkManager đứng trước chúng có danh sách riêng, di chuyển theo một lịch khác. Một máy chủ bị ghim vào 3DES, SHA1 và nhóm Diffie-Hellman 1024 bit có thể cuối cùng không nghe thấy gì nó chấp nhận.
Bản nâng cấp thực sự đã thay đổi điều gì
Hai tầng nuôi dưỡng đề xuất IKEv1. Daemon cung cấp một bộ đề xuất mặc định được biên dịch sẵn, và plugin L2TP hoặc dựa vào nó hoặc cung cấp danh sách riêng. Trước NetworkManager-l2tp 1.2.16, plugin dựa vào nó, nên đề xuất của bạn là những gì daemon đã cài đặt thấy hợp lý. Từ 1.2.16 trở đi, plugin gửi một danh sách được ghi chép, mô phỏng theo máy khách Windows và Apple, và danh sách đó rộng hơn mặc định cũ nhưng không còn chứa mọi tổ hợp cũ ở đầu hàng đợi.
Sự tách biệt đó giải thích một kiểu hỏng mà mọi người thấy khó hiểu: hai máy trên cùng một bản phát hành Ubuntu có thể cư xử khác nhau vì một máy có gói của bản phân phối và máy kia có backport, và phiên bản daemon trên cả hai trông giống nhau trong một báo cáo lỗi. Hãy kiểm tra phiên bản plugin, không chỉ phiên bản daemon, trước khi kết luận rằng bản nâng cấp không thay đổi gì liên quan.
Có một cái bẫy nhỏ hơn trong cùng khu vực. Hai daemon viết các nhóm Diffie-Hellman đường cong elliptic khác nhau, một cái viết ecp384 và cái kia viết ecp_384. Dán cách viết sai vào hộp thoại Advanced và daemon sẽ từ chối cài đặt vì không phân tích được, điều này hiện ra trong nhật ký như một vấn đề thương lượng chứ không phải lỗi đánh máy trong cấu hình.
Đọc lỗi trước khi thay đổi bất cứ điều gì
Hãy bắt đầu bằng việc bạn đang chạy backend nào, vì câu trả lời quyết định cả cú pháp lẫn vị trí nhật ký.
ipsec --version
nmcli connection show "Your VPN name" | grep -i ipsec
Sau đó hãy đọc chính cuộc trao đổi. Trên strongSwan, daemon ghi vào journal trên bản phát hành hiện tại và vào /var/log/syslog trên bản cũ hơn, và phần thú vị là đề xuất nó gửi đi, không phải dòng cuối. Bạn đang tìm cách diễn đạt về việc không có đề xuất khớp, đó là vấn đề thuật toán; lỗi xác thực, chỉ vào khóa hoặc tài khoản; hoặc một timeout đơn thuần, chỉ vào khả năng tiếp cận.
Ba kết quả này quá thường bị coi là một triệu chứng duy nhất. Một timeout với nhật ký daemon trống nghĩa là các gói không đến. Việc đề xuất bị từ chối nghĩa là chúng đã đến và bị từ chối. Nếu nhật ký của bạn im lặng, hãy nâng mức gỡ lỗi của plugin cho một lần thử rồi hạ xuống sau đó, vì đầu ra chi tiết nhanh chóng làm đầy journal.
Giai đoạn 1 và giai đoạn 2 là hai ván cược riêng
IKEv1 thương lượng hai lần. Chế độ chính xây dựng hiệp hội bảo mật IKE từ một thuật toán mã hóa, một thuật toán toàn vẹn, một nhóm Diffie-Hellman và một phương thức xác thực. Chế độ nhanh sau đó xây dựng hiệp hội ESP sẽ mang L2TP. Máy chủ được tự do chấp nhận cái đầu và từ chối cái sau, nên một hồ sơ đúng một nửa thất bại muộn hơn bạn tưởng và trông như một lỗi khác.
Phase 1: 3des-sha1-modp1024!
Phase 2: 3des-sha1!
Dấu chấm than là cú pháp strongSwan cho một mục nghiêm ngặt: chỉ cung cấp tổ hợp này và không gì khác. Không có nó, mục sẽ gia nhập một danh sách dự phòng, điều này tốt khi đối tác là hiện đại và phản tác dụng khi đó là thiết bị chỉ có một chính sách mã hóa cứng. Hãy coi cặp ở trên như một minh họa về hình thức, không phải khuyến nghị cho bất cứ thứ gì bạn đang xây hôm nay.
Thay đổi một trường, rồi lặp lại bài kiểm tra
Trên một plugin hiện tại, bài kiểm tra đầu tiên nhanh nhất là xóa hoàn toàn cả hai trường đề xuất và kết nối lại, vì danh sách mặc định đi kèm đã bao gồm các tổ hợp Windows và Apple thông dụng. Trên một plugin cũ hơn, việc xóa chúng trao quyền kiểm soát lại cho một daemon có thể đã bỏ thuật toán mà máy chủ của bạn khăng khăng, và lỗi trở nên tệ hơn.
Nếu xóa không giúp ích, hãy đặt cặp nghiêm ngặt mà máy chủ của bạn ghi chép, từng giai đoạn một. Thay đổi giai đoạn 1, kết nối lại và đọc nhật ký trước khi chạm vào giai đoạn 2. Khi một tổ hợp cuối cùng hoạt động, hãy ghi nó bên cạnh mẫu máy chủ và phiên bản plugin, vì các giá trị mặc định sẽ lại dịch chuyển và chính ghi chú đó biến lần nâng cấp tiếp theo thành một lần kiểm tra năm phút.