ipsec.conf hay swanctl.conf? Chọn một frontend strongSwan
ipsec.conf và swanctl.conf thuộc các bộ nạp strongSwan khác nhau. Xác định dịch vụ đang chạy trước khi dịch một hồ sơ IKEv1 cũ.
Một hồ sơ IKEv1 đang hoạt động lấy từ hướng dẫn cũ được đưa lên Ubuntu 24.04, và lần thử đầu tiên thất bại vì daemon chưa bao giờ đọc tệp đó. Phản ứng thường thấy là chỉnh sửa hồ sơ một lần nữa. Câu hỏi thật sự là frontend strongSwan nào đang được cài và dịch vụ đang chạy dùng cái nào. Cho đến khi điều đó được trả lời, mọi chỉnh sửa đều nhắm vào một bộ nạp có thể không tồn tại.
Hai tệp, hai bộ nạp, một daemon
Cách bố trí starter cũ đọc ipsec.conf và chuyển các kết nối cho charon qua tích hợp quản lý cũ của nó. Điểm vào vận hành của nó là lệnh ipsec.
Cách bố trí swanctl nạp định nghĩa qua VICI, đọc swanctl.conf và được điều khiển bằng lệnh swanctl. Daemon charon gốc của systemd tích hợp với cách tiếp cận đó.
Cả hai đều có thể được cài trên cùng một máy, và đó là nơi sự nhầm lẫn bắt đầu. Một tệp dưới /etc chỉ chứng minh rằng ai đó đã viết nó, không chứng minh tiến trình đang chạy đã nạp nó. Cài mọi phương án để xem cái nào hoạt động sẽ tạo ra một máy chủ có hai đường quản lý và không có chủ sở hữu rõ ràng. Chọn một cách bố trí và gỡ bỏ hoặc tắt cách còn lại.
Đọc các gói và unit đã cài
Bắt đầu ở chế độ chỉ đọc. Tên gói trên Ubuntu 24.04 tách biệt: strongswan-starter, strongswan-swanctl và charon-systemd. Một gói thiếu là thông tin hữu ích, không phải chỉ dẫn cài nó.
Kiểm kê các gói và unit trong một lượt:
dpkg-query -W strongswan-starter strongswan-swanctl charon-systemd
systemctl list-unit-files '*strongswan*'
Sau đó xem unit đang hoạt động và lệnh khởi động của nó. Tên unit cho biết daemon nào sở hữu cấu hình, và dòng lệnh xác nhận những tệp nào nó được yêu cầu đọc. Một unit đã bật nhưng không hoạt động kể câu chuyện khác với unit đang chạy bây giờ.
Nếu unit đang hoạt động là strongswan-starter thì tệp quan trọng là ipsec.conf. Nếu đó là charon-systemd với swanctl thì ipsec.conf chỉ là trang trí.
Dùng đường điều khiển tương ứng
Mỗi frontend có góc nhìn riêng về các kết nối và liên kết. swanctl --list-conns hiển thị các định nghĩa đã nạp và swanctl --list-sas hiển thị các liên kết đang hoạt động. Đường cũ dùng ipsec statusall.
Trộn chúng tạo ra những lỗi gây hiểu lầm. Thiếu socket VICI hoặc yêu cầu điều khiển bị từ chối là vấn đề của đường quản lý, không phải bằng chứng rằng đối tác đã từ chối xác thực.
Đọc góc nhìn thuộc về daemon đang chạy, rồi diễn giải kết quả. Nếu kết nối không có trong góc nhìn đó thì vấn đề là nạp, không phải thương lượng.
Định dạng không phải phiên bản IKE
Hồ sơ cũ chọn IKEv1 bằng keyexchange=ikev1. Kết nối swanctl dùng một thiết lập phiên bản, trong đó 1 chọn IKEv1. Đây là hai từ vựng cho cùng một ý tưởng, không phải chuyển đổi.
Địa chỉ đối tác, danh tính cục bộ và từ xa, nguồn thông tin xác thực, đề xuất và bộ chọn child đều phải được ánh xạ có chủ đích. Dán một khối left/right vào cú pháp swanctl không làm được điều nào trong số đó.
Chỉ đổi phiên bản giao thức là kiểu nửa di trú phổ biến nhất. Nó tạo ra một tệp nạp được rồi thất bại xác thực vì những lý do không liên quan đến phiên bản. Bản thân IKEv1 đã bị RFC 9395 coi là lỗi thời, nên một đối tác hiện hữu vẫn đòi nó đáng được một giới hạn tương thích có ghi chép và một lộ trình di trú, không phải một giá trị mặc định mới.
Kiểm tra bộ nạp trước khi chạm vào hồ sơ
Chạy kiểm tra bộ nạp trước, sau đó nạp kết nối dự định, rồi đánh giá thương lượng, và cuối cùng là đường truyền được bảo vệ. Mỗi giai đoạn có một dấu hiệu thất bại khác nhau.
Hai đường điều khiển trả lời trực tiếp câu hỏi về việc nạp:
swanctl --list-conns
ipsec statusall
Chỉ một trong hai lệnh thuộc về máy chủ của bạn. Chạy cả hai và so sánh đầu ra là cách phát hiện cái nào đang nói dối bạn, không phải một phương pháp chẩn đoán.
Coi quyền sở hữu gói, việc nạp cấu hình và tính tương thích giao thức là ba câu hỏi riêng. Một tệp hợp lệ cho một frontend sẽ bị chỉnh sửa hết lần này đến lần khác trong khi một daemon khác đang chạy.