کلاینت VPN حذف شده است، اما تونل هنوز هنگام بوت شروع میشود
یک کلاینت VPN حذفشده میتواند یک واحد systemd، یک نمایه ذخیرهشده، یک کمککننده و یک مخزن apt بر جای بگذارد. پیش از پاک کردن هر چیز دیگری، هر چهار مورد را فهرست کنید.
توزیع شما بسته را حذف میکند، منوی شما ورودی خود را از دست میدهد، و تونل پس از راهاندازی مجدد بعدی همچنان بالا میآید. یک کلاینت VPN تجاری قطعههایی بر جای میگذارد که مدیر بسته هرگز آنها را ردیابی نکرده است، بنابراین حذف تمیز با دستگاه تمیز یکی نیست. چهار قطعه از این قطعهها تقریباً هر اتصال شبحوار را توضیح میدهند: یک واحد، یک نمایه اتصال، یک کمککننده دارای امتیاز و یک مخزن فروشنده. پیش از حذف هر چیزی هر چهار مورد را بخوانید، سپس هر یک را از طریق مؤلفهای که مالک آن است بردارید.
آنچه حذفکننده هرگز ثبت نکرد
مدیر بسته فایلهایی را که خودش ثبت کرده برمیدارد و هیچ چیز دیگری نه. هیچ سابقهای از نمایه اتصالی که کلاینت در زمان اجرا ساخته است، از واحدی که پس از نصب فعال شده، یا از کمککنندهای که هنگام اجرا با دسترسیهای بالا خود را ثبت کرده است ندارد. هر یک از اینها به زیرسیستم متفاوتی تعلق دارد و هر یک میتواند بسته را یک یا چند راهاندازی مجدد زنده بماند. همین شکاف توضیح میدهد چرا یک تونل میتواند سالم باشد در حالی که نرمافزاری که آن را تولید کرده رفته است.
باقیمانده همیشه یک مالک دارد، چه systemd باشد، چه NetworkManager، چه پیکربندی مخزن یا یک ورودی شروع خودکار برای هر کاربر. یافتن مالک در ابتدا همان چیزی است که مانع تبدیل یک پاکسازی به دستگاهی نیمهپیکربندیشده میشود. حذف مستقیم فایلها معمولاً تا زمانی کار میکند که مالک آنها را دوباره تولید کند، و به همین دلیل دستورهای زیر با پرسوجو آغاز میشوند.
چهار مالک، ابتدا فقط خواندن
با پرسوجو آغاز کنید نه با حذف، و نامهای دقیقی را که برمیگردند یادداشت کنید. فروشندگان اغلب یک محموله نسخهدار در کنار یک فرابسته ارسال میکنند، بنابراین یک محصول میتواند با دو نام ظاهر شود. نامی که در هر دو فهرست ظاهر میشود یک محصول با دو مالک است و هر دو باید حذف شوند. دسته اول بستهها و واحدها را در بر میگیرد، جایی که بیشتر باقیماندهها دیده میشوند.
dpkg -l | grep -i acmevpn
systemctl list-unit-files | grep -i acmevpn
systemctl list-units --type=service --state=running | grep -i acmevpn
دسته دوم دو مؤلفهای را در بر میگیرد که بیشتر از همه از پاکسازی جان سالم به در میبرند، یعنی نمایه اتصال و مخزن فروشنده. ستون UUID را بخوانید نه نام را، زیرا نامهای تکراری رایجاند و دستور حذف انتظار شناسه را دارد. خط مخزن ارزش خواندن دارد حتی وقتی امروز آن را برنمیدارید، چون میزبان مرده فروشنده میتواند ماهها بعد یک نصب بیارتباط را بشکند. هیچیک از دو فهرست چیزی را تغییر نمیدهد و همین دلیل اجرای آنها در ابتدا است.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show --active
grep -ril acmevpn /etc/apt/sources.list.d/ /etc/apt/sources.list
فرآیندی که پس از پاکسازی هنوز زنده است یا یک واحد فعال است یا فرزند برنامهای دیگر. پیش از مقصر دانستن سرویسی که دیگر وجود ندارد، جدول فرآیندها و زنجیره والد آن را بخوانید. ورودیهای شروع خودکار برای هر کاربر هم به همین بررسی نیاز دارند و فقط در یک پوسته ورود تازه ظاهر میشوند، نه در نشست root.
سه فعل که قابل جانشینی نیستند
توقف اجرای فعلی را پایان میدهد، غیرفعالسازی پیوندهای زمان بوت را برمیدارد، و ماسککردن واحد را به /dev/null نشانه میرود. تنها سومی فعالسازی از طریق سوکت، تایمر یا وابستگی را نیز مسدود میکند، که آن را قویترین این سه میکند. تا زمانی که هنوز تصمیم میگیرید با دستگاه چه کنید، ترتیب اهمیت دارد. ماسککردن در طول آن تصمیم وضعیت درست است، چون با صدای بلند شکست میخورد نه اینکه در بوت بعدی بیصدا شروع شود.
پیش از نصب مجدد ماسک را بردارید، وگرنه بسته جدید به دلیلی که هیچکس ثبت نکرده خراب به نظر میرسد. همان احتیاط برای تفاوتهای بستهبندی نیز صادق است: یک ساخت واحدی را تحویل میدهد که میتوان متوقفش کرد، در حالی که دیگری هیچ سرویسی بر جای نمیگذارد. پیش از انتخاب فعل، مشخص کنید کدام بستهبندی را دارید، چون مسیر پاکسازی میان آنها متفاوت است.
با نویسههای عام نمایه اشتباه را حذف میکنید
نمایه را با UUID که یادداشت کردهاید حذف کنید و هرگز با نویسه عام. پوشه keyfile همچنین همه نمایههای Wi-Fi و Ethernet دستگاه را در خود دارد، بنابراین تطبیق گسترده چیزهایی را که هنوز لازم دارید برمیدارد. keyfile که دستی حذف شده ممکن است توسط همان سیاستی که مالک آن است دوباره تولید شود، که حذف را بیاثر نشان میدهد.
nmcli connection delete uuid <uuid>
اگر آن نمایه تنها نسخهای است که هنوز دارید، ابتدا دروازه و هویت را صادر کنید، چون حذف محلی هیچ چیز را روی سرور باطل نمیکند. مخزن همان قاعده را دنبال میکند: تنها فایل فروشنده و کلیدآویز آن را بردارید، سپس فهرست بستهها را تازه کنید و نصب مورد نظر واقعی خود را دوباره امتحان کنید. گذاشتن یک ورودی کهنه شخص ثالث میتواند یک وابستگی قدیمی را سنجاق کند یا اصلاً پاسخ ندهد. هر دو حذف کوچکاند و هر یک را میتوان از نسخهای که نگه میدارید برگرداند.
چه چیزی پس از راهاندازی مجدد هنوز اجرا میشود
پیش از اعلام پیروزی راهاندازی مجدد کنید، سپس به دنبال آثار باشید نه برنامه. یک رابط تونل، یک مسیر تقسیمشده کهنه و DNS برای هر پیوند که کلاینت قدیمی جا گذاشته هر یک دستور خودش را میخواهد. هر سه میتوانند از پاکسازیای که همه بستهها را با موفقیت حذف کرد جان سالم به در ببرند.
ip link
ip route
resolvectl status
یک پوسته ورود تازه هم باز کنید، چون ورودی شروع خودکار فقط همانجا فعال میشود. سپس /etc/NetworkManager/dispatcher.d/ را برای اسکریپتی بخوانید که هر بار رابطی وضعیتش را عوض میکند یک اتصال را بالا میآورد، که بازگشت تونلی بدون سرویس پشت آن را توضیح میدهد. اگر چیزی هنوز به بیرون زنگ میزند، به جای حذف فایلها تا توقف نشانه، فرآیند را تا والدش دنبال کنید. پاک کردن دستگاه و باطل کردن حساب دو کار جدا باقی میمانند و وقتی راهاندازی مجدد آرام به نظر میرسد تنها یکی از آنها تمام شده است.