Ba thứ phải khớp nhau trước khi một đường hầm Kerio truyền lưu lượng: địa chỉ trên giao diện kvnet, giá trị mà ứng dụng khách đã ghi nhật ký, và điều mà chính sách máy chủ hoặc DHCP mong đợi. Khi chúng không khớp, đường hầm vẫn xác thực và vẫn lên, và chính điều đó khiến sự cố trở nên khó hiểu. Giao diện được tạo cho từng kết nối, nên một địa chỉ đặt thủ công chỉ thuộc về phiên đó và không gì khác. Đó là hình dạng của vấn đề, và cách sửa là một móc chứ không phải tệp cấu hình. Phần còn lại là đọc giá trị ở đâu và áp dụng nó ở đâu.

Vì sao địa chỉ cứ quay lại

kvnet là một bộ điều hợp ảo mà ứng dụng khách tạo khi kết nối bắt đầu và gỡ bỏ khi kết nối kết thúc. Vì vậy một ip link set thủ công chỉ tồn tại đúng bằng phiên mà nó được áp dụng, và kết nối tiếp theo bắt đầu từ những gì ứng dụng khách cấp. Trên một máy mà ứng dụng khách không áp dụng được địa chỉ mong đợi, mỗi lần kết nối lại đưa vào cùng sự không khớp, và quy tắc thuê hoặc truy cập lại từ chối thiết bị.

Mẫu đó tự nó đã mang tính chẩn đoán. Một đường hầm chạy được một phiên và hỏng ở phiên sau không phải vấn đề thông tin đăng nhập, vì thông tin đăng nhập không đổi giữa các lần kết nối.

Đọc giá trị từ ứng dụng khách, không phải từ giao diện

Ứng dụng khách Linux ghi chi tiết thương lượng vào nhật ký gỡ lỗi của nó, và địa chỉ mà nó định dùng xuất hiện ở đó như mã thông báo hình địa chỉ cuối cùng trong chuỗi kết nối. Hãy so sánh với điều hạt nhân thực sự giữ, cách một readlink: cat /sys/class/net/kvnet/address.

Nếu hai thứ khác nhau, ứng dụng khách biết giá trị đúng mà không áp dụng được, và một móc áp dụng nó sau khi giao diện tồn tại sẽ lấp khoảng trống đó. Nếu nhật ký không có địa chỉ nào, vấn đề nằm sớm hơn và thuộc về phiên bản ứng dụng khách hoặc hồ sơ máy chủ chứ không phải một tập lệnh.

Áp dụng nó sau khi giao diện tồn tại

Người dùng NetworkManager có thể đặt một tập lệnh vào thư mục điều phối của nó và chỉ hành động khi giao diện VPN lên. Ứng dụng khách do systemd quản lý cần cẩn thận hơn: một drop-in chạy lúc khởi động dịch vụ thường kích hoạt trước khi bộ điều hợp tồn tại, nên móc phải chờ giao diện thay vì giả định nó. Đặt địa chỉ khi đó, và nếu hạt nhân từ chối trong khi liên kết đang lên, hạ nó xuống, đặt địa chỉ rồi nâng lại. Đọc lại mã thông báo đã trích xuất qua một mẫu MAC trước khi chuyển cho ip link, để một dòng nhật ký bất ngờ không thể trở thành đối số.

Bất cứ thứ gì chạy với quyền root từ nhật ký của ứng dụng khách đều đáng được sở hữu hẹp: một tệp thuộc sở hữu root, người khác không ghi được, và không có nội suy shell nào ngoài địa chỉ đã xác thực. Giữ việc kiểm tra mẫu bên trong tập lệnh. Đừng để nội dung nhật ký quyết định lệnh nào chạy.

Xác minh hợp đồng thuê chứ không phải liên kết

ip -4 -o addr show dev kvnet sẽ hiển thị một địa chỉ trong dải mong đợi, ip neigh show dev kvnet sẽ hiển thị cổng, và một dịch vụ phía sau VPN sẽ phản hồi. Sau đó ngắt và kết nối lại một lần; nếu địa chỉ quay lại, móc đang kích hoạt sai sự kiện hoặc không kích hoạt gì cả.

Một giao diện xuất hiện với địa chỉ đúng mà không bao giờ nhận được hợp đồng thuê chỉ về phía máy chủ. Đó là một kiểm tra khác và thường là một nhóm khác. Xác nhận rằng tài khoản được phép và nhóm địa chỉ vẫn còn một địa chỉ trước khi sửa móc lần nữa.

Xem lại cách lách sau khi nâng cấp

Một bản dựng ứng dụng khách đặt địa chỉ đúng sẽ để móc của bạn áp dụng một giá trị cũ, đó là một lỗi mới do một bản sửa đưa vào. Cũng đừng bao giờ sao chép MAC từ máy khác hay bài đăng diễn đàn; hãy dùng giá trị mà ứng dụng khách này ghi nhật ký cho tài khoản này, và ghi lại ngày bạn đã xác minh.

Giữ tập lệnh đủ ngắn để đọc trong một chỗ ngồi. Những cách lách phân tích nhật ký vốn dĩ tạm thời. Những thứ tồn tại là những thứ một người đọc tương lai hiểu được mà không cần chủ đề gốc.

Bài viết liên quan