چرا peer حذفشده WireGuard پس از راهاندازی دوباره بازمیگردد
دو وضعیت فهرست peer را نگه میدارند: رابط در حال اجرا و آنچه هنگام بوت آن را مینویسد. آن را از هر دو حذف کنید و پیش از هر ویرایشی SaveConfig را بررسی کنید.
هویت از رابط در حال اجرا ناپدید میشود و تغییر تمامشده به نظر میرسد. پس از راهاندازی دوباره سرویس، بازمیگردد و اینگونه خوانده میشود که WireGuard فرمان را نادیده میگیرد. آنچه در واقع رخ داد سادهتر است: پیکربندی هنگام بوت هنوز peer را در خود دارد.
دو وضعیت این فهرست را نگه میدارند. لغو تنها زمانی واقعی است که هر دو آن را از دست بدهند.
wg set در واقع چه چیزی را تغییر میدهد
فرمان wg set wg0 peer <public-key> remove رابط در حال اجرا را درون هسته ویرایش میکند. هیچ چیزی روی دیسک نمینویسد. پرونده پیکربندی، پروفایل NetworkManager یا وضعیت ذخیرهشده روتر دستنخورده میمانند. این طراحی است، نه باگ.
این جداسازی آگاهانه است، چون ابزار هیچ تصوری از مالک رابط ندارد. یک فرمان زمان اجرا باید نسبت به رابطی که چیز دیگری آن را مدیریت میکند ایمن باشد. نمیتواند حدس بزند نسخه پایدار کجا زندگی میکند. نتیجه آسان بیان میشود: حذف در زمان اجرا بهحکم ساختار موقتی است.
پس peer در راهاندازی بعدی بازمیگردد و با پیشوندهای مجاز اصلی خود بازمیگردد. هر چیزی که از آن مسیریابی میشود نیز دوباره ساخته میشود. بنابراین هویتی که گمان میرود لغو شده است میتواند پس از بارگذاری دوباره به مقصدهای پیشین خود برسد. هیچ چیز در خروجی زمان اجرا کسی را هشدار نداده بود.
پیش از ویرایش پرونده، نویسنده را پیدا کنید
رابط یک مالک دارد. ممکن است wg-quick باشد که پروندهای را میخواند، NetworkManager که پروفایلی را اعمال میکند، پیکربندی رابط خود روتر، یا نقطه ورود یک کانتینر که رابط را هنگام شروع دوباره میسازد. ویرایش پروندهای که مالک هرگز آن را نمیخواند هیچ تغییر پایدار ایجاد نمیکند.
از رابط در حال اجرا شروع کنید و کلیدهای عمومی را مشخص کنید، چون نامها و نشانیها شناسههای ضعیفتری از خود کلید هستند. سپس آن فهرست را با پیکربندی ذخیرهشدهای که مالک واقعاً میخواند مقایسه کنید.
wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard
رابط زندهای که فهرست peer و محتوای پروندهاش با هم نمیخوانند، تمام تشخیص است. پیکربندی ذخیرهشده هنگام بوت برنده میشود و وضعیت زمان اجرا میبازد. پیش از تغییر هر کدام، آن دو را مقایسه کنید.
تله SaveConfig
wg-quick چینی اضافه میکند که کسانی را که پروندهها را دستی ویرایش میکنند گرفتار میکند. وقتی SaveConfig فعال باشد، رفتار مستندش هنگام خاموش شدن، وضعیت کنونی زمان اجرا را روی پرونده پیکربندی مینویسد.
این جهت معمول پایداری را برعکس میکند. peer را از پرونده حذف میکنید، سپس سرویس متوقف میشود. وضعیت در حال اجرا روی ویرایش شما نوشته میشود و peerی را که همین حالا حذف کردید بازمیگرداند.
پس ترتیب اهمیت دارد: پرونده را وقتی رابط خاموش است ویرایش کنید، یا SaveConfig را پیش از ویرایش غیرفعال کنید، سپس رابط را دوباره بالا بیاورید و تأیید کنید چه چیزی بارگذاری شده است. ویرایش دستی وقتی رابط روشن است، مسابقهای با نوشتن هنگام خاموشی است.
هر دو وضعیت را تغییر دهید، سپس دوباره بارگذاری کنید
در زمان اجرا، peer را با کلیدش حذف کنید. در پیکربندی ذخیرهشده، همان بلوک را از طریق عملیات پشتیبانیشده مالک حذف کنید، نه با ویرایش در اطراف آن.
سپس بررسی کنید peer چه چیزی حمل میکرد. شبکه مسیریابیشدهای که به هویت لغوشده تعلق داشت باید آگاهانه دوباره تخصیص یابد یا حذف شود، نه اینکه بیصدا توسط peer بعدی که ویرایش میشود به ارث برسد.
اگر دروازه دسترسی مدیریتی شما را نیز حمل میکند، مسیر بازیابی را باز نگه دارید. راهاندازی دوبارهای که peer اشتباه را حذف کند، قطعی است که خودتان ایجاد کردهاید. همین برای راهاندازی دوبارهای که مسیر اشتباه را حذف کند نیز صادق است.
آزمون موفق چگونه است
سرویس را دوباره بارگذاری یا راهاندازی کنید، سپس فهرست peer را دوباره بخوانید. کلید قدیمی باید غایب باشد و peerهایی که میخواستید نگه دارید باید هنوز حاضر و کارکننده باشند.
wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers
هر جا موقعیت اجازه میدهد، تأیید کنید که هویت قدیمی دیگر به منابع پیشین خود نمیرسد. فهرست مرتب رابط پیش از راهاندازی دوباره نیمی از آزمون است. نیم دیگر آن است که هویت پس از آن هنوز چه کاری میتواند انجام دهد.
اگر مدیری همچنان peer را بازمیگرداند، تکرار حذف سطح پایین را متوقف کنید. انبارداریای را که آن نویسنده میخواند درست کنید، چون تا آن زمان هر راهاندازی دوباره دعوت دیگری برای ظهور مجدد هویت است.