Hầu hết hướng dẫn trình bày lựa chọn này như một vấn đề hình thức: hoặc để NetworkManager dựng đường hầm, hoặc bật một phiên bản systemd và xong. Hai con đường khác nhau ở một điều quyết định kết quả trên máy không màn hình, và điều đó không liên quan đến việc công cụ nào mới hơn. NetworkManager mở khóa bí mật thông qua một phiên; một phiên bản systemd không có phiên nào để mở khóa. Hãy chọn con đường có cách xử lý bí mật phù hợp với chiếc máy trước mặt bạn.

Mọi thứ còn lại, từ cài đặt tuyến đường đến hành vi kết nối lại, đều bắt nguồn từ quyết định đầu tiên đó.

Chùm chìa khóa là khác biệt không ai nhắc đến

Khi NetworkManager sở hữu một hồ sơ VPN, mật khẩu có thể nằm trong chùm chìa khóa đăng nhập, được mở khóa khi người dùng đăng nhập. Điều đó hoạt động tốt trên máy tính xách tay: người dùng có mặt, chùm chìa khóa mở, đường hầm dựng lên. Trên máy chủ khởi động không người giám sát thì không có ai để mở khóa bất cứ thứ gì, nên hồ sơ chờ một bí mật không bao giờ đến. Kết nối trông như đã được cấu hình và không bao giờ kích hoạt.

Phiên bản systemd tránh vấn đề đó bằng cách đọc tệp thông tin xác thực từ đĩa, khiến tệp trở thành thứ bạn bảo vệ. chmod 400 cùng quyền sở hữu của root là mức tối thiểu, và tệp nên nằm ngoài các bản sao lưu và mẫu ảnh mà bạn không kiểm soát.

Gắn VPN vào một kết nối không phải bảo đảm khởi động

Trong nm-connection-editor, hãy chọn kết nối có dây hoặc không dây thay vì VPN, mở thẻ General, đánh dấu tùy chọn tự động kết nối với VPN và đặt tên cho hồ sơ. Sau đó NetworkManager kích hoạt VPN như kết nối phụ khi kết nối chính đạt trạng thái đã kết nối. Đó là sự phụ thuộc, không phải quy tắc tường lửa. Các gói tin vẫn có thể ra ngoài trong những giây trước khi đường hầm dựng lên, và một bí mật đã lưu không mở khóa được sẽ để máy trực tuyến mà không có nó.

Nếu yêu cầu là không có gì ra ngoài khi thiếu đường hầm, hãy nói rõ và xây một công tắc ngắt, vì cài đặt này sẽ không cung cấp một cái. Hãy thử cả tạm dừng và tiếp tục, vì kết nối phụ được đánh giá lại trên đường quay lại.

Phiên bản systemd cần một tên tệp khớp

Đặt hồ sơ vào thư mục máy khách mà gói mong đợi, ví dụ /etc/openvpn/client/office.conf, và tham chiếu tệp thông tin xác thực từ bên trong bằng auth-user-pass office.cred. Tên phiên bản là tên tệp không có phần mở rộng, nên openvpn-client@office đọc tệp office.conf. Bật nó bằng sudo systemctl enable --now openvpn-client@office và xác nhận ánh xạ bằng systemctl cat openvpn-client@office thay vì tin vào một ví dụ trên blog.

Các đường dẫn bên trong hồ sơ được phân giải tương đối với thư mục làm việc của đơn vị, không phải với chính hồ sơ, nên một dòng tương đối ca hoặc auth-user-pass có thể thất bại khi khởi động dù vẫn chạy khi bạn thử bằng tay. Hãy dùng đường dẫn tuyệt đối cho mọi thứ đơn vị phải tìm thấy. Sau đó đọc journalctl -u openvpn-client@office -b sau một lần khởi động thật; một đơn vị báo đang hoạt động mà không có đường hầm thường nêu tên một tệp bị thiếu trong nhật ký đó.

Các gói cũ hơn cung cấp một tên mẫu khác, nên systemctl list-unit-files 'openvpn*' xác định cái nào tồn tại trên máy chủ này.

Hành vi kết nối lại là một quyết định riêng

Một hồ sơ có ping-restart sẽ dựng lại đường hầm sau khi nó rớt, và một đơn vị có chỉ thị khởi động lại làm điều tương tự ở cấp dịch vụ. Đó là những chính sách bạn chọn, không phải mặc định bạn thừa hưởng. Nếu kết nối chỉ nên dựng lên khi có yêu cầu, hãy chủ động bỏ hành vi khởi động lại và ghi lại lý do. Nếu đơn vị khởi động trước khi mạng dùng được, nó cần chính sách thử lại, vì một lần thất bại lúc khởi động không tự lặp lại.

Dừng cũng theo nghĩa đen như vậy: sudo systemctl disable --now openvpn-client@office dừng phiên bản đang chạy và gỡ liên kết khởi động. Chỉ vô hiệu hóa sẽ để đường hầm chạy đến lần khởi động lại tiếp theo, điều khiến bất kỳ ai thử bằng cách vô hiệu hóa và thấy giao diện vẫn dựng đứng phải ngạc nhiên.

Khởi động lại, rồi kiểm tra bốn điều theo thứ tự

Khởi động lại dịch vụ kiểm tra dịch vụ; khởi động lại máy kiểm tra đường khởi động. Sau khi khởi động lại, hãy xác nhận đơn vị đã lên, sau đó rằng có tuyến đường cho mạng con từ xa, sau đó máy trình bày địa chỉ nào với internet, và cuối cùng rằng tên được phân giải qua đường hầm. Bốn kiểm tra đó thất bại theo đúng thứ tự khi có gì sai, khiến lần thất bại đầu tiên trở nên hữu ích.

Một đơn vị đang hoạt động mà không có tuyến đường thường có nghĩa là hồ sơ đã kết nối nhưng máy chủ không đẩy tuyến nào, hoặc tuyến đã được cài trên một giao diện biến mất sau đó. Một tuyến không có phân giải tên hoạt động chỉ vào cấu hình DNS chứ không phải bản thân đường hầm.

Hãy quyết định trước điều gì phải xảy ra khi đường hầm không thể dựng lên. Quay về kết nối thông thường là một chính sách, và nên được ghi lại thay vì để cho trình quản lý nào khởi động trước.

Bài viết liên quan