حذف یک رکورد قدیمی VPN از پایگاه داده resolvconf
روی میزبانهایی که resolvconf دبیان مالک وضعیت است، حذف یک ورودی آسان است. نخست ثابت کنید رکورد قدیمی و بیمالک است، سپس بازنویسی را بررسی کنید.
یک نام داخلی هنوز یک روز پس از بسته شدن تونل به سرور VPN تجزیه میشود، و فایل حلکننده همچنان با همان ورودی برمیگردد. جایی که resolvconf دبیان مالک وضعیت است، آن فایل از رکوردهای تأمینکنندگان ساخته میشود و یکی از آنها باقیمانده است. حذف رکورد یک دقیقه وقت میگیرد؛ اثبات اینکه حذفش ایمن است کار اصلی است. این دروازهها به ترتیب اجرا میشوند و دروازهای که شکست بخورد رویه را پایان میدهد، نه اینکه شما را به گام بعدی بفرستد.
تأیید کنید که resolvconf مالک وضعیت است
نخست مالک را مشخص کنید، چون همین نشانه زیر systemd-resolved به فرمانها و تعمیر دیگری نیاز دارد. بسته resolvconf پایگاه دادهای زیر /run/resolvconf نگه میدارد و /etc/resolv.conf را به فایلی اشاره میدهد که از همان پایگاه میسازد. دو خواندن این پرسش را روشن میکند: مقصد پیوند نمادین، و اینکه بسته نصب و فعال است یا نه. مقصدی زیر /run/systemd/resolve یعنی طراحی دیگر، جایی که هیچچیز در ادامه اعمال نمیشود.
dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service
اگر پیوند جای دیگری را نشان دهد یا بسته نباشد، همینجا بایستید. پوشش سازگاری که نام را قرض گرفته و مدیر حلکننده دیگری آن را عرضه میکند، مالک این پایگاه داده نیست.
پایگاه داده ورودیها را نگه میدارد، نه پاسخ را
پایگاه داده ورودیها را نگه میدارد و فایل خروجی است، پس فهرست کردن ورودیها تنها راه دیدن این است که کدام برنامه ورودیای را نصب کرده که میخواهید حذف شود. رکوردها کوتاهاند و کلیدهایشان همان دستگیرههایی هستند که بعداً لازم دارید. پیش از تصمیمگیری درباره اینکه کدام قدیمی است آنها را بخوانید، چون نامی که شبیه رابط VPN است میتواند به کارخواه دیگری تعلق داشته باشد. نشانیهای خصوصی و دامنههای جستجوی داخلی را از عیبیابی مشترک بیرون نگه دارید؛ معمولاً خود کلید رکورد را مشخص میکند.
sudo resolvconf --list
sudo resolvconf -i
فرمان نخست رکوردهای تأمینشده را بدون پردازش چاپ میکند و دومی رابطهایی را فهرست میکند که اکنون پیکربندی DNS را فراهم میکنند. کلیدها معمولاً از نام رابط بههمراه برنامه تأمینکننده ساخته میشوند. راهنمای resolvconf پایگاه دادهای را توصیف میکند که این کلیدها به آن اشاره دارند.
کلید را از خروجی کپی کنید، نه اینکه دوباره بسازیدش. یک ورودی فقط به این دلیل tun0 نامیده نمیشود که اسکریپت قدیمی از آن نام استفاده کرده است.
ثابت کنید رکورد مالک ندارد
رکورد زمانی برای حذف ایمن است که هیچ اتصال زندهای آن را نصب نکرده باشد. کلید را با اتصالی که آن را ساخته مرتبط کنید، سپس تأیید کنید که آن اتصال رفته است. همین ارتباط کل دروازه است و همان گامی است که در مسیر فرمان حذف بیشتر از همه نادیده گرفته میشود. اگر شواهد مبهم است، رکورد را زنده بدانید و بایستید.
نام فرایندها شاهد ضعیفی هستند. OpenConnect فرمان vpnc-script را فرا میخواند، بنابراین بررسی وجود فرایند vpnc چیزی درباره اینکه کدام رکورد جاری است نمیگوید. اتصال تازه میتواند نام رابطی را که اتصال قدیمی جا گذاشته دوباره به کار ببرد و این کلید را قدیمیتر از آنچه هست نشان دهد. نشانی سرور درون رکورد را با نشانی تونلهایی که هنوز برپا هستند مقایسه کنید و اگر یکسان بودند بایستید.
قطع معمولی از طریق مدیر مالک نخستین چاره است. آنچه را آن اتصال نصب کرده پس میگیرد و سایر تأمینکنندگان را دستنخورده میگذارد.
حذف و بازنویسی را بررسی کنید
پس از تأیید قدیمی بودن رکورد، آن را با کلید دقیق حذف کنید و سپس نتیجه را بخوانید، نه اینکه فرضش کنید. این فرمان وضعیت حلکننده را برای هر برنامهای روی میزبان تغییر میدهد، پس آن را در پنجرهای که کنترل میکنید اجرا کنید. کلید را در گیومه بگذارید، چون نویسههایی دارد که پوسته در غیر این صورت گسترش میداد. جاینگهدار در بلوک به کلیدی اشاره دارد که از فهرست کپی کردهاید، نه به یک رشته تحتاللفظی.
sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example
حذف زمانی که بهروزرسانی فعال است اسکریپتهای بهروزرسانی را اجرا میکند؛ با بهروزرسانیهای غیرفعال، بهروزرسانی را به تعویق میاندازد، پس رکورد حذفشده و فایل بازنویسیشده دو رویداد جداگانهاند. فهرست را دوباره بخوانید و پیش از نگاه کردن به فایل تأیید کنید که کلید رفته است. سپس نامی را که باید هنوز از طریق تأمینکنندگان باقیمانده تجزیه شود و یک نام عمومی را جویا شوید و هر دو را با آنچه پیش از تغییر دیدید مقایسه کنید. اگر نامی خصوصی کاملاً از تجزیه باز بماند، آن رکورد هنوز آن را حمل میکرد.
resolvconf -u فقط همان اسکریپتهای بهروزرسانی را اجرا میکند. هرگز رکورد قدیمی را شناسایی یا حذف نمیکند و بازسازی از ورودیهای قدیمی همان فایل ناخواسته را بازتولید میکند.
قلاب قطع شدهای که کشته میشود رکورد را جا میگذارد
پاکسازی یکباره وضعیت امروز را برمیگرداند و خاموششدن ناتمام بعدی رکورد را برمیگرداند. مسیر جداسازی را بپیمایید: قلاب قطع اتصال کارخواه، کمکی که آن قلاب فرا میخواند، و آنچه رخ میدهد وقتی هر یک از این دو کشته شود. خاموششدن ناتمام منشأ معمول است، چون قلاب اصلاً اجرا نشده. وضعیت خروج قلاب را یک بار ثبت کنید تا بدانید آیا بیصدا شکست میخورد.
راهاندازی و پاکسازی را زیر یک مالک نگه دارید. اسکریپت دومی که نام رابطها را حدس میزند سرانجام رکورد اتصال دیگری را حذف میکند و این بدتر از رکورد قدیمیای است که با آن شروع کردید. مالک باید تصمیم بگیرد چه زمانی رکورد قدیمی است، چون میداند کدام اتصال آن را نصب کرده.
سپس چرخه عمر را بیازمایید: وصل شوید، قطع کنید، رکوردها را دوباره فهرست کنید. ناپدید شدن خودبهخودی ورودی تنها اثبات پایداری تعمیر است.