OpenConnect có thể hoàn tất bắt tay đường hầm mà vẫn để bạn không có tuyến đường tới mạng con riêng, vì ứng dụng khách và trình trợ giúp thay đổi trạng thái mạng cục bộ là hai chương trình khác nhau. Xác thực chứng minh cổng đã chấp nhận phiên; nó không chứng minh gì về giao diện, tuyến đường hay cài đặt trình phân giải nào được cài sau đó. Phần lớn báo cáo gây nhầm lẫn đến từ việc thay trình trợ giúp bằng bản sao từ một câu trả lời cũ, điều này thay đổi hành vi của mọi kết nối trên máy. Hãy tìm trình trợ giúp mà ứng dụng khách đang chạy thực sự gọi trước khi sửa bất kỳ phần nào của nó.

Hai chương trình, hai trách nhiệm

Ứng dụng khách sở hữu việc truyền tải, xác thực và thiết bị đường hầm. Một trình trợ giúp riêng sở hữu những gì xảy ra trên hệ thống cục bộ khi đường hầm đã tồn tại: địa chỉ hóa trên giao diện, tuyến đường tới các mạng con mà cổng đã công bố, và cấu hình trình phân giải. tài liệu về trình trợ giúp OpenConnect mô tả sự tách biệt đó và môi trường mà trình trợ giúp nhận được. Sự khác biệt này quan trọng khi có sự cố, vì mật khẩu bị từ chối và tuyến đường bị thiếu không phải cùng một sự kiện, kể cả khi màn hình chỉ hiển thị một hộp thoại cho cả hai.

Ghi nhớ sự tách biệt này cũng giải thích vì sao một kết nối có thể báo thành công trong khi tên riêng vẫn không phân giải được. Đường hầm đều hoạt động trong cả hai trường hợp, và chỉ giai đoạn tích hợp cục bộ là khác.

Tìm trình trợ giúp mà ứng dụng khách đang chạy sử dụng

Đường dẫn được đặt khi gói được biên dịch và có thể bị ghi đè ở mỗi lần gọi, nên tệp bạn nhớ từ một bản phân phối khác có thể không liên quan gì tới kết nối này. Hãy hỏi tiến trình đang chạy, không phải tài liệu đang mở sẵn.

openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null

Nếu dòng tiến trình mang --script đối số, tệp đó thắng giá trị mặc định đã biên dịch. Các đường dẫn cũ như /etc/vpnc/vpnc-script có thể tồn tại mà vẫn không được dùng, nên việc xóa hay sửa chúng không thay đổi gì trên một bản dựng mới. Hãy xem cả ngày sửa đổi, vì một trình trợ giúp mà không ai chạm vào trong nhiều năm là dấu hiệu mạnh cho thấy giá trị mặc định của gói đang làm việc.

Tích hợp NetworkManager là chủ sở hữu thứ ba, với trình trợ giúp và cài đặt hồ sơ riêng. Chồng thêm một tập lệnh tuyến đường hoặc trình phân giải thứ hai lên tích hợp đó sẽ nhân đôi tuyến đường và để lại một trình phân giải mà hai chương trình đều cho là mình quản lý. Chọn một chủ sở hữu cho mỗi kết nối và tắt cái còn lại trước khi kiểm tra.

Đọc thao tác thất bại đầu tiên, không phải cảnh báo cuối cùng

Cấu hình giao diện, cài đặt tuyến đường, chọn trình phân giải và dọn trạng thái cũ là những bước riêng biệt, và cảnh báo được in sau cùng thường là than phiền về dọn dẹp chứ không phải lỗi đã làm đứt kết nối. Hãy đọc ngược lên tới thao tác cụ thể đầu tiên bị lỗi. Một lỗi trình trợ giúp nêu tên tệp hoặc địa chỉ đáng giá hơn mười dòng nhiễu tháo gỡ.

So sánh kết quả cục bộ mong muốn với kết quả quan sát được: thiết bị đường hầm tồn tại, tuyến đường tới một địa chỉ riêng đã biết đi qua nó, và trình phân giải trả lời cho một tên riêng. Trình trợ giúp thành công ở hai mục đầu và thất bại ở mục thứ ba cho thấy chính sách trình phân giải chứ không phải định tuyến. Trình trợ giúp không cấu hình thiết bị chút nào có lẽ chưa bao giờ được chạy, và đó là vấn đề quyền chứ không phải mạng. Xác nhận bit thực thi và tài khoản dịch vụ trước khi viết lại bất kỳ logic nào.

Kiểm tra kết nối, kết nối lại và ngắt kết nối

Việc thiết lập chỉ là một nửa hợp đồng, vì chính trình trợ giúp đó phải khôi phục hoặc gỡ trạng thái mà nó sở hữu khi đường hầm đóng lại. Một trình trợ giúp thêm tuyến đường mà không bao giờ gỡ sẽ để lại trên máy một đường dẫn cũ sống lâu hơn phiên.

ip -brief address show tun0
ip route get 10.24.8.15
resolvectl status tun0
journalctl -u NetworkManager -b --no-pager | grep -i -E 'vpnc|script'

Chạy ba dòng đầu khi đang kết nối, ngắt kết nối, rồi chạy lại và xác nhận tuyến đường cùng mục trình phân giải đã biến mất. Dòng thứ tư cho biết trình trợ giúp có được gọi hay không và dịch vụ đã dùng đường dẫn thực thi nào. Lưu cặp kết quả đó vào phiếu, vì chính so sánh trước và sau làm lộ ra lỗi dọn dẹp.

Giữ trình trợ giúp trong gói và có thể thực thi bởi tài khoản dịch vụ, vì một tập lệnh chạy trong shell của bạn vẫn có thể bị từ chối dưới chính sách dịch vụ hạn chế. Khi thực sự cần tùy biến, hãy ghi lại mục đích và chủ sở hữu rồi so sánh với bản đóng gói ở mỗi lần nâng cấp. Một nhánh fork không giải thích của trình trợ giúp là một trong số ít thứ có thể khiến một kết nối đang hoạt động hỏng sau một năm.

Bài viết liên quan