ZeroTier تا یک شبکه محلی: قواعد مسیر UFW، نه اجازهٔ پورت
اجازه دادن به یک پورت روی دروازه با هدایت به میزبانِ پشت آن یکی نیست. مسیر مدیریتشده را تنظیم کنید، عبور را فعال کنید و مسیر بازگشت را انتخاب کنید.
رسیدن به چاپگر در شبکه محلی دفتر از طریق یک عضو ZeroTier شبیه یک قاعده است، اما در واقع سه تصمیم در سه جای متفاوت است. لایه همپوشان باید بداند شبکه محلی کجاست، میزبان Linux باید مایل به هدایت بستهها باشد، و شبکه محلی باید بداند پاسخ را چگونه بازگرداند. قاعدهٔ ورودی که پورتی را روی دروازه باز میکند به هیچیک از اینها دست نمیزند. این ابزار اشتباه است که روی میزبان درست به کار میرود.
سه کار، سه مسئول
مسیر مدیریتشده متعلق به پیکربندی شبکهٔ ZeroTier است. به اعضا میگوید که یک پیشوند از طریق نشانی عضو مشخصی قابل دسترسی است.
هدایت متعلق به هستهٔ Linux و به هر کسی است که سیاست دیوار آتش آن را در دست دارد. این تصمیم میگیرد که بستهای که روی لایه همپوشان میرسد دوباره از رابط فیزیکی خارج میشود یا نه. میزبانی که هدایت نمیکند بسته را پس از پذیرش بیصدا دور میریزد. فرستنده یک پایان مهلت میبیند و در گزارش سرویس چیزی ظاهر نمیشود.
مسیر بازگشت متعلق به شبکه محلی است. میزبانها و مسیریاب آن باید بدانند که پیشوند لایه همپوشان از طریق نشانی محلی دروازهٔ شما قابل دسترسی است، وگرنه چیزی باید ترافیک را ترجمه کند تا این پرسش هرگز پیش نیاید.
هر یک از اینها میتواند درست باشد در حالی که بقیه شکست میخورند، و به همین دلیل آزمونی که فقط دروازه را پینگ میکند هیچ چیزی را درباره سرویس پشت آن ثابت نمیکند.
مسیر مدیریتشده را به سمت عضو بگیرید
مسیری برای پیشوند محلی مورد نظر از طریق نشانی همپوشان دروازه اضافه کنید، نه از طریق نشانی محلی آن. نشانی همپوشان همان است که اعضای دیگر میتوانند به آن برسند؛ نشانی محلی فقط روی سیم معنا دارد.
اعضا برای کارکرد این طرح باید مسیرهای مدیریتشده را بپذیرند، و شبکههای محلی خودشان نباید از قبل از پیشوندی که اعلام میکنید استفاده کنند. لپتاپ دوردستی که در خانه روی 192.168.60.0/24 قرار دارد هم نمیتواند 192.168.60.0/24 را از طریق لایه همپوشان مسیریابی کند.
پیشوند اعلامشده را تا جایی که کار اجازه میدهد باریک نگه دارید. اعلام یک تجمیع بزرگتر برای اثر گذاشتن بر ترجیح ممکن است فضای نشانیای را هم مطالبه کند که مالک آن نیستید، و تعارض حاصل روی دستگاههایی ظاهر میشود که به هر دو شبکه وصل هستند. همچنین میتواند عضوی را به ترجیح مسیری وادار کند که به جایی نمیرسد. مسیر را صادق نگه دارید و بقیه را به سیاست بسپارید.
پیشوند و نشانی عضو را در همان یادداشتی بنویسید که قواعد دیوار آتش در آن است، چون شایعترین خرابی مسیری است که به عضو اشتباه اشاره میکند.
عبور را در هسته فعال کنید
پیش از هر تغییری مقدار جاری هدایت را بخوانید، سپس تنظیم را از طریق سازوکاری که سیستم شما از قبل استفاده میکند پایدار کنید، نه با فرمانی یکباره که در راهاندازی مجدد از میان میرود.
اگر سیاست در اختیار UFW است، قواعد مسیر آن هدایت را برای جفت مبدأ، مقصد و رابط بیان میکند. اینها از قواعد ورودی که سرویسی را روی خود دروازه باز میکنند جدا هستند:
sysctl net.ipv4.ip_forward
sudo ufw route allow in on zt3f2a1c9d out on eth0 proto tcp to 192.168.60.20 port 443
sudo ufw status verbose
نام رابط همان دستگاه همپوشان واقعی روی آن میزبان است که میتوانید آن را از ip link بخوانید؛ در همهٔ نصبها رشتهای ثابت نیست. اگر میزبان بهطور پیشفرض هدایت کند و UFW در مسیر نباشد، قاعدهٔ مسیر نادیده گرفته میشود و تنظیمات هسته چیزی است که اهمیت دارد.
انتخاب کنید پاسخها چگونه بازمیگردند
با حفظ مبدأ، سرویس شبکه محلی نشانی همپوشان واقعی را میبیند و به آن پاسخ میدهد. این به مسیری روی میزبان شبکه محلی یا مسیریاب آن نیاز دارد که پیشوند همپوشان را به دروازهٔ شما اشاره دهد، و این تغییری بیرون از جعبهٔ Linux است.
وقتی آن مسیر را نمیتوان افزود، ترجمهٔ محدود مبدأ باعث میشود درخواست چنان به نظر برسد که از دروازه در شبکه محلی آمده است. آنگاه پاسخها بهصورت محلی بازمیگردند و هیچ تغییری در مسیریابی شبکه محلی لازم نیست، به بهای از دست رفتن مبدأ اصلی در گزارشهای سرویس.
ترجمه را به مبدأ همپوشان و مقصد مشخص محلی محدود کنید. ترجمهٔ هر چیزی که از رابط محلی خارج میشود نسخهٔ گستردهای است که بعداً هر کسی را که قواعد را میخواند غافلگیر میکند، و ترافیکی را هم پنهان میکند که باید مسدود میشد.
هیچیک از این دو گزینه دسترسی ناخواسته از شبکه محلی به اعضای دلبخواه همپوشان نمیدهد. اگر چنین چیزی خواسته شود، قاعدهای جداگانه با بازبینی خودش است.
از یک عضو واقعی آزمون کنید
از عضو دیگر وصل شوید، نه از دروازه، و یک سرویس مجاز را درخواست کنید. سپس سرویسی را امتحان کنید که باید بسته بماند، و هر دو آزمون را پس از اتصال دوباره و پس از راهاندازی مجدد دروازه تکرار کنید.
عضوی که وضعیت ONLINE را گزارش میکند، یا پینگ موفق به نشانی همپوشان دروازه، مسیر، قاعدهٔ هدایت یا مسیر بازگشت را اعتبارسنجی نمیکند:
zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered
فرمان دوم نشان میدهد بسته برای میزبان محلی از کدام رابط استفاده میکند، و سومین نشان میدهد آیا قاعدهٔ مسیر به همان شکلی که در نظر داشتید وجود دارد. اگر هر دو درست به نظر برسند و سرویس هنوز به پایان مهلت برسد، مسیر بازگشت تنها مظنون باقیمانده است.