چرا route -interface به میزبان خارج از پیوند نمیرسد
پرچم رابط به macOS میگوید که مقصد روی سیم است. هر چیزی فراتر از پیوند محلی به دروازهای قابلدسترس نیاز دارد و تونل هنوز میتواند آن را رد کند.
route نام رابط Wi-Fi را میپذیرد، بدون شکایت خارج میشود و میزبان دسترسناپذیر میماند. چیزی خراب نشده است؛ رابطه در مسیر بهسادگی نادرست است: پرچم رابط میگوید مقصد روی کدام پیوند قرار دارد، نه اینکه کدام روتر باید ترافیک مقصدی را که جای دیگری است دریافت کند. فرمان موفق میشود چون از نظر نحوی معتبر است، نه چون مسیری کارآمد را توصیف میکند.
همین تمایز تعیین میکند که استثنای مسیر در کنار VPN کار خواهد کرد یا فقط محتمل به نظر میرسد.
رابط خروجی است، گام بعدی تحویل است
روی Mac با نشانی 192.168.50.20 و روتری در 192.168.50.1، دستگاه دیگری روی همان پیوند مستقیماً در دسترس است. قاب به آن دستگاه نشانهگیری میشود و روی سیم قرار میگیرد. هیچ روتری دخالت ندارد و مسیری که به رابط محدود شده دقیقاً همین را بیان میکند. سر دور را به میزبانی در ساختمانی دیگر تغییر دهید و همان فرمان بیمعنا میشود. Mac نشانی لایه دومی برای گذاشتن روی سیم ندارد، پس چیزی نیست که پرچم رابط توصیف کند.
مقصد بیرون از پیوند متفاوت است. Mac نمیتواند قابی را روی سیم بگذارد که به میزبانی نشانهگیری شده که در لایه دوم به آن نمیرسد؛ بسته را به روتری میدهد که میتواند. بنابراین مسیر به دروازه نیاز دارد و خود دروازه باید روی پیوند متصل قابل دسترس باشد.
استفاده از پرچم رابط برای مقصد بیرون از پیوند به macOS میگوید با آن مقصد طوری رفتار کند که گویی روی سیم است. آنگاه هسته نمیتواند نشانی لایه دومی برای آن حل کند و بسته بدون هیچ چیز مفیدی در خطا دور انداخته میشود.
پرچم رابط در واقع چه چیزی را تصریح میکند
مرجع مسیرهای Apple شکل رابط را برای مقاصدی تعریف میکند که بدون واسطه مستقیماً در دسترساند. این بیانی درباره مدل پیوند است، نه ترجیحی درباره اینکه کدام آداپتور به کار رود. رسیدن به میزبان اینترنت از طریق Wi-Fi هنوز به روتری روی همان پیوند Wi-Fi نیاز دارد و مسیر باید آن را نام ببرد.
دامنه رابط یک ویژگی جداگانه است. مسیر را برای تصمیمهای دامنه مانند اینکه کدام نشانی مبدأ اعمال شود به رابط مشخصی پیوند میدهد، اما برای مقصدی که رابط خودش نمیتواند به آن برسد دسترسپذیری ایجاد نمیکند. این دو ویژگی به پرسشهای متفاوتی پاسخ میدهند.
به همین دلیل ممکن است فرمانی پذیرفته شود، در جدول ظاهر شود و باز هم شکست بخورد. هسته نیت شما را اعتبارسنجی نمیکند؛ آنچه تصریح کردهاید را ثبت میکند و تصریح این بود که مقصد روی پیوند است. موفقیت خاموش و سپس دورانداختن خاموش نتیجه مورد انتظار است، نه اشکال. پیش از سرزنش شبکه، تصریح را دوباره برای خود بخوانید.
مسیری که مقصد بیرون از پیوند نیاز دارد
برای مسیری تأییدشده به نشانی مستنداتی مانند 198.51.100.25 از طریق روتر LAN، رابطه مورد نظر یک مقصد، گام بعدی 192.168.50.1 و رابط LAN است که به آن گام بعدی میرسد. رابط از جستوجوی گام بعدی برمیآید نه اینکه با فرمان مسیر تحمیل شود.
در macOS بازرسی فقطخواندنی route -n get 198.51.100.25 است. خطوط دروازه و رابط را با هم بخوانید و بررسی کنید که دروازه نشانی باشد که Mac واقعاً میتواند به آن برسد. دروازهای در زیرشبکهای دیگر، یا دروازهای که از آخرین تغییر شبکه از میان رفته، مسیری میسازد که درست به نظر میرسد و چیزی را ارسال نمیکند.
en0 را در دستورالعملی ماندگار سختکد نکنید. نام رابطها با آداپتورها، داکها و کلاینتهای VPN تغییر میکنند و مسیری که نام اشتباه را میآورد به شکلی شکست میخورد که بهراحتی خرابی گستردهتر شبکه خوانده میشود.
پیش از جایگزینی، انتخاب فعلی را بخوانید
پیش از افزودن هر چیزی، بررسی کنید سیستم چه چیزی را قبلاً انتخاب کرده و چرا. آن خروجی میگوید ترافیک از تونل، از روتر LAN یا به هیچجا میرود، و خط پایهای برای مقایسه پس از تغییر میدهد. بدون آن نمیتوانید بگویید مسیر جدید اثر کرده است یا نه.
سپس خانواده نشانی را بررسی کنید. مسیری که برای IPv4 افزوده شده برای مقصد IPv6 کاری نمیکند و سرویسی که به هر دو خانواده حل میشود ممکن است متناوباً در دسترس به نظر برسد. جدول مسیر و حلکننده به پرسشهای متفاوتی پاسخ میدهند و هر دو باید با مسیر مورد نظر سازگار باشند.
سرانجام، به یاد داشته باشید مسیر یک انتخاب است، نه اجازه. نمایه VPN مدیریتشده یا فیلتر کلاینت میتواند مسیر مستقیم را حتی وقتی جدول به آن اشاره میکند ممنوع کند، پس با برنامه واقعی آزمایش کنید نه با فرض اینکه ورودی موفق در جدول تحقیق را پایان میدهد.
تونلها و سیاست شکل را تغییر میدهند
رابطهای نقطهبهنقطه مورد خودشان هستند. تونل میتواند مسیری بدون نشانی دروازه به سبک Ethernet حمل کند و این بهطور خودکار نادرست نیست. مدل پیوند واقعی رابط را اعمال کنید نه اینکه نمونه Wi-Fi را به هر ورودی جدولی که میبینید تعمیم دهید.
برای درخواستهای تغییر، مقصد، مسیر شبکه تأییدشده، دروازه و رابط فعلی و اینکه چه کسی انتظار میرود استثنا را نگه دارد بنویسید. مالک اهمیت دارد چون مسیر یکبارهای که در اعلان تایپ شده سیاست نیست و اتصال بعدی آن را پاک میکند.
اگر نیاز «رسیدن به این میزبان در حین فعال بودن VPN» است، پاسخ صادقانه معمولاً مسیر میزبان مشخصی از طریق روتر محلی است که مدیر شبکه مالک رابط آن را نصب میکند. اگر نیاز «رسیدن مستقیم به هر چیز» است، خود نیاز پیش از فرمان مسیر به بازبینی سیاست نیاز دارد.