Ai sở hữu địa chỉ, tuyến, DNS và tường lửa trên VPN Linux?
Một VPN Linux cần một thẩm quyền cho mỗi đối tượng: thiết bị, địa chỉ, tuyến, DNS, tường lửa. Hãy viết bản đồ đó, rồi xác định việc khởi động, kết nối lại và tháo gỡ khôi phục những gì.
Hai script tranh nhau cùng một tuyến là dạng thường gặp của một sự cố VPN Linux bị ghi nhận là lỗi định tuyến. Một thành phần tạo thiết bị đường hầm, thành phần khác thêm tuyến mặc định, thành phần thứ ba viết lại cấu hình bộ phân giải, và thành phần thứ tư tải lại các quy tắc tường lửa. Bất kỳ thành phần nào cũng có thể hủy công việc của thành phần khác, và người thắng chỉ đơn giản là người chạy cuối cùng. Câu hỏi đáng trả lời không phải là cài gói nào, mà là thành phần nào có thẩm quyền với từng phần của trạng thái.
Viết bản đồ đó một lần, và phần lớn lỗi kết nối lại không còn bí ẩn. Bốn đối tượng quan trọng: thiết bị và các địa chỉ của nó, các tuyến và quy tắc chính sách, cấu hình DNS và tường lửa.
Thiết bị và các địa chỉ của nó
Thiết bị đường hầm được tạo bởi một trình quản lý biết hồ sơ hoặc bởi một daemon mà ai đó khởi động bằng tay. Cả hai cách đều tự hoạt động; trộn chúng thì không. Nếu NetworkManager sở hữu hồ sơ, hãy để nó sở hữu cả thiết bị, và đừng khởi động một OpenVPN không được quản lý nhắm vào cùng tên đường hầm.
Ghi lại ai gỡ thiết bị khi phiên kết thúc. Thiết bị sống lâu hơn phiên của nó là nguồn phổ biến nhất của địa chỉ cũ và sự nhầm lẫn theo sau.
Các tuyến và quy tắc chính sách
Chính trên các tuyến, xung đột quyền sở hữu gây thiệt hại nhìn thấy được. Một trình quản lý kết nối cài tuyến mặc định cho đường hầm cùng một tuyến cụ thể hơn cho mạng từ xa; sau đó một script viết tay thêm tuyến mặc định của riêng nó với số đo khác và âm thầm thắng hoặc thua tùy thời điểm. Hãy quyết định mục nào gắn với kết nối, mục nào là chính sách lâu dài, và thành phần nào làm mới chúng sau khi kết nối lại. Sau đó giữ các thành phần khác ngoài bảng đó.
Các quy tắc chính sách cũng đáng được rõ ràng như vậy, vì một quy tắc trỏ tới bảng mà không ai điền sẽ tạo ra một hố đen trông giống hệt đường hầm chết. Nếu có một quy tắc để ép lưu lượng đi đâu đó, thì bảng mà nó chọn phải được cùng chủ sở hữu duy trì.
DNS luôn là chủ sở hữu riêng
Một daemon phân giải chạy như tiến trình riêng dưới danh tính riêng, nên nó không thừa hưởng các quyết định định tuyến của đường hầm một cách tình cờ. Khi VPN đẩy máy chủ DNS, thứ gì đó phải dịch nó thành cấu hình theo từng liên kết mà bộ phân giải tôn trọng, và thứ gì đó phải gỡ nó sau đó.
Lầm tưởng ở đây là viết một máy chủ tên vào hồ sơ sẽ thay đổi nơi truy vấn đi. Nó thay đổi điều được nói với bộ phân giải, không phải socket mà bộ phân giải dùng ở thượng nguồn. Hãy kiểm tra bằng một truy vấn và một lần tra tuyến thay vì tin vào tệp.
Trạng thái tường lửa, và ai khôi phục nó
Các quy tắc tường lửa là đối tượng bị ghi đè thường xuyên nhất trên một máy chủ VPN. Trình quản lý có thể thêm quy tắc NAT hoặc chuyển tiếp cho mỗi kết nối, trong khi dịch vụ tường lửa lúc khởi động tải lại một bộ quy tắc đã lưu và xóa chúng. Hãy chọn một thẩm quyền cho chính sách và biến cái kia thành người tiêu dùng của nó, hoặc chấp nhận rằng một lần khởi động lại âm thầm thay đổi hành vi. Các ngoại lệ gắn với kết nối thuộc về một tệp mà cùng chủ sở hữu tải, không phải một lệnh iptables được gõ trong khi xử lý sự cố.
Nếu các quy tắc phải sống sót qua lần kết nối lại, hãy nói rõ điều đó. Nếu không phải, cũng hãy nói, vì kỹ sư tiếp theo sẽ giả định câu trả lời thuận tiện hơn.
Vòng đời: khởi động, kết nối lại, tháo gỡ
Hãy trao cho mỗi khoảnh khắc trong ba khoảnh khắc đó một chủ sở hữu. Khi khởi động, quyết định điều gì chuẩn bị các điều kiện tiên quyết và theo thứ tự nào. Khi khởi động lại mềm, hãy nhớ rằng thiết bị có thể sống sót trong khi trạng thái phiên thì không, nên một trình xác thực phải chạy thay vì một trình tạo. Khi tháo gỡ, chỉ gỡ bỏ những gì kết nối này đã tạo, vì đặt lại mọi tuyến hoặc xóa toàn bộ tường lửa không giống với việc cho một đường hầm ngừng phục vụ.
Để quan sát, ip monitor link address route hiển thị các thay đổi của nhân khi chúng xảy ra, nhưng nó báo cáo sự kiện thay vì ý định: một tuyến bị xóa không nói gì về tiến trình nào đã xóa nó. Ghép nó với bản đồ sở hữu, và một lần tắt máy khó hiểu trở thành danh sách ứng viên ngắn.
Các ngoại lệ cũng có giá của chúng. Đánh dấu cả một lớp thiết bị là không được quản lý để thoát khỏi xung đột là trao trạng thái đó cho không ai, đó là một quyết định chứ không phải một bản sửa.