Các tác vụ VPN khôi phục tệp hosts xóa các chỉnh sửa về sau
Chụp nhanh tệp hosts khi kết nối và khôi phục khi ngắt kết nối, và mọi chỉnh sửa thực hiện trong khoảng giữa đều mất. Hãy cấp cho mỗi ánh xạ một chủ sở hữu thay vì ảnh chụp.
Tác vụ kết nối sao chép tệp hosts của Windows, thêm một địa chỉ riêng, và tác vụ ngắt kết nối sao chép bản đã lưu trở lại. Nó chạy tốt hàng tuần rồi một buổi chiều máy không truy cập được một trang nội bộ chẳng liên quan gì đến VPN. Việc khôi phục đã làm đúng điều được sai bảo: nó trả lại một tệp từ trước chỉnh sửa của người khác. Lỗi nằm ở mô hình, không ở lệnh sao chép.
Mọi quy trình chụp nhanh một tệp dùng chung rồi khôi phục về sau đều thừa hưởng mọi thay đổi xảy ra ở khoảng giữa như một mất mát.
Bản sao lưu được khôi phục sau đó không phải bản sao lưu của hiện tại
Hãy đi qua một trình tự thông thường. Tác vụ lưu tệp và thêm một mục cho đường hầm. Về sau một quản trị viên thêm một chỉnh sửa không liên quan, và một hồ sơ thứ hai thêm mục của riêng nó. Khi ngắt kết nối, việc khôi phục trả lại ảnh chụp ban đầu, xóa cả mục của hồ sơ thứ hai lẫn chỉnh sửa của quản trị viên. Cả hai đều không thuộc VPN, và giờ cả hai đã biến mất.
Một tên tệp sao lưu cố định duy nhất làm mọi thứ tệ hơn. Một sự kiện kết nối về sau có thể sao chép tệp đã bị sửa lên bản được cho là gốc, nên nền tảng khôi phục trôi dạt về phía diện mạo tệp ở sự kiện cuối cùng.
Mỗi sự kiện là một thông báo, không phải giao dịch
Tác vụ được kích hoạt bởi sự kiện là một thông báo. Việc kết nối lại, một lần tắt máy bị cắt ngang hoặc một hồ sơ thứ hai có thể định hình lại trạng thái cần thiết trong khi tác vụ trước vẫn đang ghi. Không gì tuần tự hóa hai việc này, và không gì hoàn lại một thay đổi dở dang. Ngoài ra chỉ một mã sự kiện không cho biết nó thuộc hồ sơ nào nếu thiếu nhà cung cấp và dữ liệu của nó. Coi tác vụ như một giao dịch chính là giả định thất bại.
Các sự kiện kết nối lặp lại là nửa còn lại: thêm vào mà không kiểm tra tạo ra mục thứ hai giống hệt, và một số trình phân giải khi đó thấy hai câu trả lời cho một tên.
Cấp cho mỗi ánh xạ một chủ sở hữu
Mỗi dòng trong tệp hosts ánh xạ một tên máy chủ tới một địa chỉ và không nói gì về việc đường hầm nào đang bật. Nếu không thể tránh tự động hóa, hãy chỉ định một chủ sở hữu cho các ánh xạ do VPN quản lý. Chủ sở hữu đó chỉ nên cập nhật các mục của chính mình, giữ nguyên nội dung hiện tại không liên quan, tránh trùng lặp khi sự kiện lặp lại, và đối chiếu với các kết nối thực sự đang hoạt động chứ không với một danh sách đã ghi nhớ.
Khi hai đường hầm đang sống cần cùng một ánh xạ, một lần ngắt kết nối không được xóa nó trong khi chủ sở hữu kia vẫn cần. Điều đó đòi hỏi đếm tham chiếu hoặc một bản ghi sở hữu rõ ràng, không phải một giá trị boolean.
Bản sao lưu vẫn có giá trị cho việc khôi phục đã được xem xét. Nó không nên là hành động ngắt kết nối thông thường, và không nên là bản ghi duy nhất về những gì tệp chứa.
Khi DNS có điều kiện là nhu cầu thực sự
Nếu yêu cầu thực sự là một không gian tên riêng chỉ phân giải khi đường hầm đang bật, hosts là cơ chế sai. Windows NRPT có thể chọn một trình phân giải cho một không gian tên, và nó không tự tạo bản ghi địa chỉ; trình phân giải vẫn phải trả lời. Đó là một thiết kế khác với chủ sở hữu khác, và nó loại bỏ hoàn toàn việc chỉnh sửa tệp ở mỗi lần chuyển trạng thái.
Nếu hosts được giữ có chủ đích cho một dịch vụ cố định duy nhất, hãy chắc rằng địa chỉ của nó vẫn truy cập được qua tuyến đường dự định và tên máy chủ vẫn ổn định để các kiểm tra danh tính của ứng dụng tiếp tục hoạt động. Xóa bộ nhớ đệm DNS không thể sửa một mục lỗi thời mà lần tra cứu kế tiếp sẽ đọc lại.
Hãy thử các kết nối lặp lại, hai hồ sơ đồng thời và một lần ngắt kết nối sau chỉnh sửa không liên quan. Kết quả phải là ánh xạ của VPN đi theo chủ sở hữu của nó mà không tua ngược phần còn lại của máy.