Bạn thêm tun0 vào đúng vùng, ứng dụng bắt đầu hoạt động, và bản sửa lỗi bay hơi ở lần kết nối lại tiếp theo. Chạy lại cùng lệnh đó thì có tác dụng, khiến nó trông như firewalld đã quên. Nó không quên; một thứ gì đó có quyền mạnh hơn trên giao diện ấy đã gán lại nó.

Vùng tồn tại cho đến khi giao diện được tạo lại

Việc gán vùng firewalld cho một giao diện là một ràng buộc, và các ràng buộc gắn với đối tượng giao diện như nó tồn tại hiện nay. Một máy khách VPN phá bỏ thiết bị và tạo lại nó sinh ra một đối tượng mới, và đối tượng mới bắt đầu từ điều mà thành phần gán nói. Đó là lý do triệu chứng lặp lại ở mỗi lần kết nối lại chứ không phải ở mỗi gói tin.

Cùng logic đó giải thích hành vi khi khởi động lại: các ràng buộc thời gian chạy không sống sót qua lần khởi động lại, và các ràng buộc vĩnh viễn chỉ áp dụng cho thiết bị mà firewalld tin là của mình.

Trước khi thay đổi bất cứ điều gì, hãy tìm ra thành phần nào gán vùng.

Đọc ba điều trước khi thay đổi bất cứ điều gì

Ghi lại vùng mà giao diện đang có, các vùng đang hoạt động cùng giao diện của chúng, và danh sách giao diện vĩnh viễn cho vùng bạn định dùng. Chạy các truy vấn đó trước khi thay đổi, sau một lần kết nối lại và sau một lần khởi động lại. So sánh ba kết quả cho bạn biết ràng buộc đang bị thay thế, bị bỏ qua hay chỉ được áp dụng muộn. Nếu danh sách vĩnh viễn đã nêu tên thiết bị trong khi vùng thời gian chạy không đồng ý, thì có thứ gì đó đang lấn át chỉnh sửa của bạn.

Cũng ghi lại tên thiết bị thật ở mỗi bước, vì một đường hầm hôm nay hạ cánh trên tun0 có thể mai hạ cánh trên tun1.

Một ràng buộc đã lưu vào tên chung không phải là kiểm tra danh tính, và hai phút ghi chép tiết kiệm một giờ đoán mò.

Khi NetworkManager sở hữu kết nối

Nếu NetworkManager quản lý kết nối VPN, hồ sơ của nó mang vùng và chuyển vùng đó cho firewalld khi kết nối được kích hoạt. Ràng buộc giao diện vĩnh viễn trong firewalld cho cùng thiết bị khi đó có thể bị bỏ qua, vì NetworkManager là chủ sở hữu. Đặt vùng trên kết nối, và xác nhận rằng bạn đang sửa hồ sơ VPN chứ không phải một kết nối vật lý không liên quan hay một bản ghi tạm thời.

Thay đổi thuộc tính đó có thể ảnh hưởng ngay đến một kết nối đang hoạt động.

Giữ sẵn một đường quản trị và đọc chính sách của vùng đích trước khi áp dụng. Sửa trường ZONE của tệp ifcfg chỉ đúng ở nơi tệp đó vẫn là nguồn cấu hình.

Khi firewalld sở hữu ràng buộc

Với một đường hầm độc lập có tên giao diện cố ý ổn định, thay đổi giao diện vĩnh viễn là công cụ đúng. Áp dụng nó qua lần nạp lại hoặc vòng đời mà bản triển khai của bạn dùng, rồi kiểm tra trạng thái thời gian chạy, vì một chỉnh sửa chỉ vĩnh viễn mô tả ý định chứ không phải điều đang hoạt động. Hai thứ đó có thể lệch nhau suốt thời gian một lần nạp lại diễn ra.

Nếu tên giao diện là động, hãy duy trì việc gán trong suốt vòng đời kết nối thay vì chạy đua với đường hầm nào đòi tên trước.

Đừng ném giao diện vào trusted chỉ để ứng dụng hoạt động.

Kiểm tra lần nạp lại, lần kết nối lại và lần khởi động lại

Một thay đổi chỉ hoàn tất khi nó sống sót qua cả ba.

Nạp lại trước, vì đó là nơi các chỉnh sửa chỉ thuộc thời gian chạy biến mất. Sau đó kết nối lại đường hầm, vì đó là nơi một giao diện bị thay thế mất ràng buộc của nó. Sau đó khởi động lại, vì đó là nơi sự lệch chủ sở hữu cuối cùng lộ ra. Ghi lại vùng ở mỗi giai đoạn và so với ý định bạn đã viết, và ghi chú bước nào tạo ra khác biệt.

Nếu vùng đúng mà ứng dụng vẫn thất bại, vấn đề nằm ở quy tắc của vùng hoặc ở cách phân loại dựa trên nguồn, không phải ở tư cách thành viên. Tài liệu firewalld về kết nối và giao diện là tài liệu tham chiếu cho cách quyền sở hữu nên hoạt động.

Viết chủ sở hữu, giá trị và kết quả mong đợi vào runbook, và lần gán lại tiếp theo sẽ giải thích được.

Bài viết liên quan