هنگام راهاندازی VPN در لینوکس واقعاً چه اتفاقی میافتد
راهاندازی VPN در لینوکس یک رابط میسازد، مسیرها را نصب میکند و resolver را تغییر میدهد. دانستن اینکه هر مرحله متعلق به کدام سرویس است بیشتر خطاهای تنظیم را توضیح میدهد.
اتصال را فشار دهید و سه چیز در یک ماشین لینوکس تغییر میکند: یک رابط ظاهر میشود، مسیرها نصب میشوند و resolver شروع به پاسخدهی متفاوت میکند. بیشتر خطاهای تنظیم از این ناشی میشود که یکی از آن سه بدون بقیه رخ دهد، یا از اینکه دو برنامه بر سر اینکه مالک آنها کیست اختلاف داشته باشند. فهمیدن توالی خطا را سریعتر از خواندن خروجی گزارش یک کلاینت توضیح میدهد.
رابطی پیش از آنکه چیزی کار کند ظاهر میشود
کلاینت تونل یک رابط مجازی باز میکند و بستهها را به آن میدهد. دستگاه TUN بستههای IP را حمل میکند، که چیزی است که یک VPN مسیریابی نیاز دارد؛ دستگاه TAP قابهای Ethernet را حمل میکند، که چیزی است که طراحی پلسازی نیاز دارد. ماژول هسته دستگاه را فراهم میکند و کلاینت تا زمانی که نشست ادامه دارد مالک آن است.
بالا آمدن رابط همان کار کردن تونل نیست. میتواند با یک آدرس وجود داشته باشد در حالی که همتا در دسترس نیست، و به همین دلیل فهرست رابطها اولین بررسی است نه آخرین. دستگاهی که خود را بالا اعلام میکند دید هسته را از یک پیوند مجازی توصیف میکند، نه آمادگی همتا برای پاسخ دادن.
حالت رابط ارائهشده را دست نزنید. تبدیل یک پروفایل TUN به TAP یک سرور مسیریابیشده را به سرور پلسازی تبدیل نمیکند و معمولاً اتصالی تولید میکند که برقرار میشود و هیچ چیز را ارسال نمیکند.
مسیرها را کسی نصب میکند که مالک تونل است
مسیرها دومین تغییر هستند و مالکیت آنها مهمتر از محتوایشان است. یک پروفایل NetworkManager، یک واحد systemd و یک کلاینت دستی اجراشده همگی میتوانند مسیر نصب کنند، و وقتی دو تای آنها همزمان این کار را بکنند جدولی میسازند که بعداً هیچکس نمیتواند توضیح دهد.
ip -br addr show ip route show ip -6 route show
پروفایل تونل کامل مسیر پیشفرض را جایگزین میکند؛ پروفایل تونل تقسیمشده مسیرهای مشخصتری اضافه میکند و مسیر پیشفرض را دستنخورده میگذارد. هر دو عادیاند و دومی دلیل آن است که حذف مسیر پیشفرض آزمون اول بدی روی ماشینی است که از راه دور مدیریت میکنید. حذف آن همچنین سریعترین راه برای از دست دادن نشستی است که برای رفع مشکل استفاده میکنید.
جدول را بخوانید نه اینکه فرض کنید. یک مسیر مشخصتر یا یک قاعده سیاست میتواند ترافیک را به تونل بفرستد در حالی که مسیر پیشفرض هنوز به رابط فیزیکی اشاره میکند، که تا وقتی کل جدول را نخوانید متناقض به نظر میرسد. این ترکیب برای تونل تقسیمشده عادی و برای کسی که انتظار دارد یک خط طراحی را توصیف کند گیجکننده است. مسیری را جستجو کنید که با مقصد واقعی شما مطابقت دارد، نه آن که با نمودار مطابقت دارد.
resolver دست عوض میکند
DNS سومین تغییر است و آن که بیشتر از همه احتمال دارد جایی مدیریت شود که به آن نگاه نکردهاید. روی یک رومیزی، NetworkManager ممکن است تنظیمات resolver را برای هر اتصال اعمال کند. در سیستمی که از systemd-resolved استفاده میکند، تنظیمات برای هر پیوند اعمال میشود و /etc/resolv.conf ممکن است یک stub یا یک پیوند نمادین باشد نه فایلی که باید ویرایش کنید.
resolvectl status readlink -f /etc/resolv.conf cat /etc/resolv.conf
اگر ویرایش دستی فایل resolver پس از اتصال دوباره ناپدید شود، این نشانه آن است که مؤلفهای را که آن را نگهداری میکند پیدا کنید و به جای آن پروفایل را تغییر دهید. ویرایش فایل تولیدشده تغییری است که اتصال دوباره آن را پاک میکند.
نامهای خصوصی معمولاً به resolver داخلی و دامنههای جستجوی ارائهشده توسط اپراتور نیاز دارند. جایگزینی با resolver عمومی میتواند دقیقاً همان منبعی را که VPN برای رسیدن به آن وجود دارد بشکند، و نشانه شبیه خطای مسیریابی است نه خطای DNS. نام و آدرس را جداگانه آزمایش کنید، زیرا کار کردن یکی و شکست دیگری دقیقاً میگوید کجا را نگاه کنید. همان یک مقایسه یک ساعت اشکالزدایی مسیر را صرفهجویی میکند.
یک مدیر برای هر اتصال
قالب پروفایل تعیین میکند کدام برنامه میتواند از آن استفاده کند. پروفایل OpenVPN به OpenVPN یا یک افزونه سازگار نیاز دارد، و پیکربندی WireGuard قالب خودش را با کلیدهای همتا و پیشوندهای مجاز دارد. یک پنجره ورود یکی را به دیگری ترجمه نمیکند، هر چه پسوند فایل بگوید.
یک مدیر انتخاب کنید و بگذارید مالک اتصال باشد. بالا آوردن همان تونل از طریق دو ابزار جدول مسیر و رفتار اتصال دوباره را مبهم میکند، و دومی که شروع میشود معمولاً به روشهایی برنده میشود که بازتولیدشان سخت است.
بستههایی را نصب کنید که توزیع شما پشتیبانی میکند و پروفایل را از اپراتور بگیرید. با آن مانند یک اعتبارنامه رفتار کنید، زیرا معمولاً شامل یک کلید خصوصی یا مواد معادل است، و آن را جایی ذخیره کنید که بقیه اسرار شما زندگی میکنند. پروفایلی که در پوشه دانلودها رها شود کلیدی است که روی میز رها شده.
وقتی بالا آمده اما کار نمیکند چه چیزی را بررسی کنید
با رابط بالا و کلاینتی که موفقیت را گزارش میکند، به سمت بیرون کار کنید: آیا جدول مسیر تونل را برای مقصد انتخاب میکند، آیا resolver برای نام خصوصی پاسخ میدهد، و آیا طرف دور مسیر بازگشت دارد. هر کدام فرمان و مالک جداگانهای دارد.
nmcli connection show --active nmcli device status wg show
مرجع nmcli فرمانهای وضعیت و اتصال را مستند میکند اگر به مجموعه کامل نیاز دارید. آنچه اینجا مهم است تمایز میان فعال بودن یک پروفایل و حمل ترافیک توسط یک دستگاه است، زیرا این دو میتوانند اختلاف داشته باشند.
پیش از آنکه تنظیم را تمامشده بدانید یک بار از طریق همان مدیر دوباره متصل شوید، و بررسی کنید که DNS پس از قطع اتصال هنوز کار میکند. پیکربندیای که فقط تا اولین تغییر شبکه کار میکند تمام نشده است، فقط در این لحظه کار میکند.