Xóa một bản ghi VPN cũ khỏi cơ sở dữ liệu resolvconf
Trên một máy chủ nơi Debian resolvconf nắm giữ trạng thái, việc xóa một mục rất dễ. Trước hết hãy chứng minh bản ghi đã cũ và không có chủ, rồi kiểm tra việc ghi lại.
Một tên nội bộ vẫn phân giải tới máy chủ VPN một ngày sau khi đường hầm đóng lại, và tệp phân giải cứ quay lại với mục đó. Ở nơi Debian resolvconf nắm giữ trạng thái, tệp đó được lắp ghép từ các bản ghi của nhà cung cấp, và một trong số đó là phần còn sót lại. Việc xóa bản ghi chỉ mất một phút; chứng minh rằng xóa nó là an toàn mới là công việc thật sự. Những cổng này chạy theo thứ tự, và một cổng thất bại sẽ kết thúc quy trình thay vì đưa bạn sang bước tiếp theo.
Xác nhận resolvconf nắm giữ trạng thái
Trước hết hãy xác định chủ sở hữu, vì cùng một triệu chứng dưới systemd-resolved lại cần lệnh khác và cách sửa khác. Gói resolvconf giữ một cơ sở dữ liệu dưới /run/resolvconf và trỏ /etc/resolv.conf tới tệp mà nó dựng từ cơ sở dữ liệu đó. Hai lần đọc sẽ giải quyết câu hỏi: đích của liên kết tượng trưng, và gói có được cài đặt và đang hoạt động hay không. Một đích dưới /run/systemd/resolve nghĩa là thiết kế kia, nơi không có gì bên dưới áp dụng.
dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service
Nếu liên kết trỏ đi nơi khác hoặc thiếu gói, hãy dừng ở đây. Một lớp bọc tương thích đã mượn cái tên, do một trình quản lý phân giải khác cung cấp, không sở hữu cơ sở dữ liệu này.
Cơ sở dữ liệu giữ đầu vào, không phải câu trả lời
Cơ sở dữ liệu giữ đầu vào và tệp là đầu ra, vì vậy liệt kê đầu vào là cách duy nhất để thấy chương trình nào đã cài mục bạn muốn bỏ đi. Các bản ghi ngắn, và khóa của chúng là những tay nắm bạn sẽ cần sau này. Hãy đọc chúng trước khi quyết định cái nào đã cũ, vì một cái tên trông giống giao diện VPN có thể thuộc về một máy khách khác. Giữ địa chỉ riêng và miền tìm kiếm nội bộ ra khỏi chẩn đoán chia sẻ; chỉ riêng khóa thường đã nhận diện bản ghi.
sudo resolvconf --list
sudo resolvconf -i
Lệnh đầu tiên in các bản ghi được cung cấp mà không xử lý chúng, và lệnh thứ hai liệt kê các giao diện hiện đang cung cấp cấu hình DNS. Khóa thường được dựng từ tên giao diện cộng với chương trình cung cấp. Hướng dẫn resolvconf mô tả cơ sở dữ liệu mà những khóa đó trỏ tới.
Sao chép khóa từ đầu ra thay vì dựng lại nó. Một mục không được gọi là tun0 chỉ vì một tập lệnh cũ đã dùng cái tên đó.
Chứng minh bản ghi không có chủ
Một bản ghi an toàn để xóa khi không có kết nối sống nào đã cài nó. Hãy liên hệ khóa với kết nối đã tạo ra nó, rồi xác nhận kết nối đó đã biến mất. Sự tương quan đó chính là toàn bộ cổng, và đó là bước thường bị bỏ qua nhất trên đường tới lệnh xóa. Nếu bằng chứng mơ hồ, hãy coi bản ghi là còn sống và dừng lại.
Tên tiến trình là bằng chứng yếu. OpenConnect gọi vpnc-script, nên việc kiểm tra một tiến trình vpnc không nói gì về bản ghi nào đang hiện hành. Một kết nối mới cũng có thể dùng lại tên giao diện mà kết nối cũ để lại, khiến khóa trông cũ hơn tuổi thật của nó. Hãy so sánh địa chỉ máy chủ bên trong bản ghi với địa chỉ của những đường hầm còn hoạt động, và dừng lại nếu chúng khớp nhau.
Ngắt kết nối bình thường qua trình quản lý sở hữu là biện pháp đầu tiên. Nó thu hồi những gì kết nối đó đã cài và để các nhà cung cấp khác không bị đụng tới.
Kiểm tra việc xóa và việc ghi lại
Khi bản ghi đã được xác nhận là cũ, hãy xóa nó bằng khóa chính xác rồi đọc kết quả thay vì giả định. Lệnh này thay đổi trạng thái phân giải cho mọi ứng dụng trên máy chủ, nên hãy chạy nó trong một cửa sổ bạn kiểm soát. Hãy đặt khóa trong dấu ngoặc kép, vì nó chứa những ký tự mà shell nếu không sẽ mở rộng. Phần giữ chỗ trong khối đại diện cho khóa bạn đã sao chép từ danh sách, không phải một chuỗi nguyên văn.
sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example
Việc xóa chạy các tập lệnh cập nhật khi cập nhật được bật; khi cập nhật bị tắt, nó hoãn việc cập nhật, nên một bản ghi bị xóa và một tệp được ghi lại là hai sự kiện riêng biệt. Hãy đọc lại danh sách và xác nhận khóa đã biến mất trước khi nhìn vào tệp. Sau đó truy vấn một tên vẫn nên phân giải qua các nhà cung cấp còn lại và một tên công khai, rồi so sánh cả hai với những gì bạn đã thấy trước khi thay đổi. Nếu một tên riêng ngừng phân giải hoàn toàn, bản ghi đó vẫn đang mang nó.
resolvconf -u chỉ chạy những tập lệnh cập nhật đó. Nó không bao giờ nhận diện hay xóa một bản ghi lỗi thời, và việc dựng lại từ đầu vào cũ sẽ tái tạo đúng tệp không mong muốn đó.
Một móc ngắt kết nối bị giết sẽ để lại bản ghi
Một lần dọn dẹp sẽ khôi phục trạng thái hôm nay, và lần tắt máy bị gián đoạn tiếp theo lại đặt bản ghi trở lại. Hãy đi theo con đường tháo dỡ: móc ngắt kết nối của máy khách, trình trợ giúp mà móc đó gọi, và điều gì xảy ra khi một trong hai bị giết. Tắt máy bị gián đoạn là nguồn gốc thường gặp, vì móc hoàn toàn không chạy. Hãy ghi lại trạng thái thoát của móc một lần và bạn sẽ biết nó có thất bại âm thầm hay không.
Giữ việc thiết lập và dọn dẹp dưới một chủ sở hữu. Một tập lệnh thứ hai đoán tên giao diện cuối cùng sẽ xóa bản ghi của một kết nối khác, điều đó tệ hơn mục cũ mà bạn bắt đầu. Chủ sở hữu cũng nên quyết định khi nào một bản ghi là cũ, vì nó biết kết nối nào đã cài nó.
Sau đó hãy thực hành vòng đời: kết nối, ngắt kết nối, liệt kê lại các bản ghi. Việc mục tự biến mất là bằng chứng duy nhất rằng bản sửa vẫn giữ.