کلاینت VPN مسیر اضافهشده شما را حذف میکند؟ از جدول سیاست استفاده کنید
کلاینت مسیرهایی را که مالک آنهاست دوباره اعمال میکند، بنابراین ورودی دستی در چند ثانیه از بین میرود. استثنا را در جدول سیاست با اولویت قاعدهای که برنده میشود بگذارید.
یک /24 برای یک چاپگر آزمایشگاهی بین دو فراخوانی ip route show ناپدید میشود و گزارش کلاینت فقط میگوید شبکه تغییر کرده است. هیچ مشکلی در دستور، پیشوند یا دسترسیهای شما نبود. کلاینت سازمانی که مدل مسیریابی میزبان را در اختیار دارد، هر بار کسی دیگر آن را ویرایش کند همان مدل را دوباره اعمال میکند، بنابراین ورودیای که اضافه کردهاید بهعنوان متجاوز حذف میشود. جنگیدن با آن در همان جدول یک موقعیت بازنده است. راهحل این است که رقابت برای آن جدول را کاملاً کنار بگذارید و استثنا را جایی بگذارید که پایشگر هرگز نگاه نمیکند.
پایشگر مسیر گمشده را توضیح میدهد
پیش از بازطراحی هر چیزی این را نشان دهید: جدول را بخوانید، پیشوند را اضافه کنید، چند ثانیه صبر کنید، دوباره بخوانید. اگر ورودی نیست و چیزی برای حذف آن تایپ نکردهاید، عاملی در حال نظارت است. فرآیندی را که این رفتار را دارد پیدا کنید و گزارش آن را حول لحظهای که مسیر ناپدید میشود بخوانید، زیرا همان سرویس معمولاً تونل، فیلترهای بسته و پیکربندی resolver را نگه میدارد. کشتن آن برای ماندن مسیرتان معاملهای است که در اتصال دوباره بعدی پشیمان میشوید.
ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route showپیشوند و رابط بالا جاینگهدار هستند. کپی کردن نام رابط از یک نمونه کارآمد روی ماشین دیگر شایعترین دلیل این است که این نمایش اصلاً چیزی تولید نمیکند.
جدول دوم برای پایشگر نامرئی است
عامل فقط جدولی را که مالک آن است بازمیسازد. به استثنا جدول خودش را بدهید بههمراه قاعدهای که مقصدهای منطبق را به آنجا میفرستد، و جدول اصلی هرگز تغییر نمیکند، بنابراین چیزی برای اصلاح عامل باقی نمیماند. تمام ایده همین است: یک فضای نام از مسیرها که کس دیگری نگه میدارد و یکی که فقط شما لمس میکنید.
معامله، نگهداری است. دو شیء میتوانند از هم فاصله بگیرند و جایگاه قاعده در فهرست بهاندازه مسیر داخل جدولی که انتخاب میکند اهمیت دارد.
استثنا را بسازید و سپس آن را برنده کنید
جدول را بسازید، مسیر را نصب کنید و قاعدهای اضافه کنید که آن جدول را برای آن مقصد انتخاب میکند. اولویت تعیین میکند که قاعده شما پیش از قواعدی که کلاینت درج کرده یا پس از آنها بررسی شود، و قاعدهای که دیرتر مرتب میشود هرگز بررسی نمیشود، بنابراین عدد بخشی از طراحی است نه تزیین. سپس از هسته بپرسید واقعاً چه کار میکند، که پرسشی متفاوت از آن چیزی است که پیکربندی کردهاید.
ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50ip route get مسیری را که هسته استفاده میکند حل میکند، از جمله دستگاه و آدرس مبدأ. شناسه جدول را چاپ نمیکند، بنابراین آن را با ip rule show جفت کنید وقتی باید تأیید کنید کدام جدول برنده شد. با هم به تنها پرسش مهم پاسخ میدهند: آیا ترافیک به آن آدرس از جایی که قصد داشتید خارج میشود؟
شکلهای دیگر همان ایده
الگو وقتی از اندیشیدن بر اساس مقصد دست بکشید تعمیم مییابد. یک زیرشبکه محلی میتواند در دسترس بماند در حالی که تونل مسیر پیشفرض را نگه میدارد. پاسخهای یک سرور SSH متصل به LAN میتوانند از همان رابطی که وارد شدهاند خارج شوند بهجای آنکه در تونل ناپدید شوند. و یک قاعده مبتنی بر رابط میتواند همه چیزهایی را که به یک رابط بیسیم میرسد به تونل براند، در حالی که ترافیکی که خود میزبان تولید میکند روی Ethernet میماند:
ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10آن مورد آخر با رابط ورودی مطابقت دارد نه با مقصد، که نوع قاعده دیگری و مدل ذهنی دیگری است. ترافیک ارسالشده همچنین به فعال بودن net.ipv4.ip_forward نیاز دارد، و طرف دور باید محدوده مبدأ را بازگردانی یا ترجمه کند؛ یک قاعده روی یک ماشین هرگز نیمه دیگر مسیر را نمیسازد.
با قاعده مانند چیزی یکبارمصرف رفتار کنید
قواعد و مسیرهای جدول در حافظه زندگی میکنند. پس از اتصال دوباره ممکن است نام دستگاه تونل تغییر کند، آدرس تخصیصیافته جابهجا شود و قاعدهای که مقدار قدیمی را دارد بیصدا از تطابق باز بماند. کل تغییر را از یک اسکریپت واحد که مالک آن است دوباره اعمال کنید، سپس پیش از اعتماد به استثنا، ip rule show، نام فعلی دستگاه و یک ip route get تازه را در برابر یک مقصد واقعی دوباره بررسی کنید.
دو مرز با هر میزان دقتی باقی میمانند. کلاینت همچنان قواعد فیلتر خود و پیکربندی resolver را کنترل میکند و یک استثنای مسیریابی هیچیک را نقض نمیکند. اگر کلاینت قاعده سیاست شما را هم حذف کند، مسیرهای پشتیبانیشده سیاست تونل تقسیمشده خودش یا کلاینتی است که به شما اجازه مدیریت مسیرها را میدهد، مانند OpenConnect؛ وصله کردن فایل دودویی فروشنده برای ساکت کردن پایشگرش تعهدی نگهداری با یک بررسی یکپارچگی همراه است.
شماره جدول، اولویت و مقصد را در یادداشتی کنار اسکریپت بنویسید. وگرنه نفر بعدی قاعدهای پیدا میکند که از تونل پیشی میگیرد و هیچ راهی برای دانستن دلیل ندارد.