گره خروجی ZeroTier کار نمیکند؟ مسیر، NAT و کلاینت را بررسی کنید
مسیر 0.0.0.0/0 در کلاینت بهمعنای خروج نیست. گره باید بستهها را هدایت و ترجمه کند، شبکه باید مسیر را اعلام کند و کلاینت باید آن را بپذیرد.
جدول مسیریابی یک مسیر پیشفرض از طریق رابط ZeroTier نشان میدهد، شبکه آنلاین گزارش میشود و مرورگر همچنان از نشانی ISP محلی خارج میشود. این ترکیب رایج است و اشکال کلاینت نیست. مسیر پیشفرض فقط میگوید بستهها باید کجا بروند؛ چیزی باید آنها را در طرف دیگر هدایت و ترجمه کند. سه بخش جداگانه باید درست باشند تا گره خروجی کار کند.
مسیر وجود دارد اما چیزی خارج نمیشود
ابتدا جدول مسیریابی کلاینت را بررسی کنید. خطی مانند default via 10.147.20.5 dev zt0 ثابت میکند مسیر نصب شده است، نه اینکه مقصد ترافیک را بپذیرد. گام بعدی باید عضوی باشد که مایل و توانا به هدایت آن باشد.
اگر همان درخواست همچنان از رابط فیزیکی خارج میشود، کلاینت مسیر را نصب نکرده یا با معیاری نصب کرده که به مسیر پیشفرض محلی باخته است. اگر درخواست پس از نصب مسیر ناپدید شود، عضو خروجی بستهها را دریافت میکند و در هدایت یا ترجمه آنها ناکام میماند. کلاینتی که مسیر پیشفرض فیزیکی را نگه میدارد اصلاً بستهای به خروجی نمیفرستد.
این تفاوت تعیین میکند کجا کار کنید. مقایسه یک نشانی عمومی پیش و پس از تغییر، مسیری را که هرگز استفاده نشده از مسیری که استفاده و دور انداخته شده جدا میکند، و به یک فرمان نیاز دارد نه بازبینی کل پیکربندی. مقایسه را پیش از تغییر هر چیز دیگری انجام دهید تا هر دو نتیجه از یک وضعیت آغازین بیایند.
سه بخش که همه باید درست باشند
خروج یک زنجیره است و ضعیفترین حلقه نشانه را تعیین میکند. جدول زیر حلقهها را به ترتیبی که معمولاً شکست میخورند فهرست میکند.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
سطر اول همان چیزی است که نام گزینه پنهان میکند. یک عضو تنها زمانی خروج میشود که هستهاش بستهها را بین رابط ZeroTier و رابط رو به اینترنت هدایت کند و مسیر پاسخ به تونل بازگردانده شود. بدون این هدایت، عضو یک همتا است نه دروازه.
سطر کنترلر اجازه است نه پیکربندی. اعلام 0.0.0.0/0 از طریق یک عضو به هر کلاینت میگوید خروج کجاست؛ اما آن عضو را توانا به حمل ترافیک نمیکند. همچنین بررسی نمیکند که عضو مسیر کاری به اینترنت دارد. مستندات گره خروجی ZeroTier همین تفکیک میان گره، مسیر و کلاینت را پوشش میدهد.
گره خروجی را برای هدایت و ترجمه تنظیم کنید
هدایت IPv4 را بهصورت پایدار فعال کنید، سپس NAT مبدأ را برای ترافیکی که از رابط WAN خارج میشود اضافه کنید. قواعد فیلتر باید جریان هدایتشده را در هر دو جهت مجاز کنند، زیرا هدایت و ترجمه از اجازه جدا هستند:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTzt0 و eth0 را با نامهای روی میزبان جایگزین کنید؛ قاعدهای که برای یک رابط نمونه ذخیره شده، بستهها را روی رابط واقعی دنبال نمیکند. تغییرات را از طریق مدیر دیوار آتش که مالک قواعد است پایدار کنید، زیرا فرمان در یک پوسته تعاملی در راهاندازی بعدی از بین میرود.
اگر میزبان مدیری مانند UFW یا firewalld اجرا میکند، قواعد را از طریق همان مدیر اضافه کنید نه اینکه خطوط iptables را کنار آن انباشته کنید. دو مالک که زنجیرههای یکسان را ویرایش میکنند، سیاستی میسازند که به ترتیب بوت وابسته است. ترتیب زمانی مهم است که مدیر زنجیرههای خودش را تولید میکند. پس از بارگذاری مجدد مدیر از کلاینت آزمایش کنید، نه پیش از آن.
مسیر را اعلام کنید و آن را در کلاینت بپذیرید
در کنترلر شبکه یک مسیر مدیریتشده برای 0.0.0.0/0 اضافه کنید که گام بعدی آن نشانی ZeroTier عضو خروجی باشد. سپس روی عضوی که باید از آن استفاده کند، بازنویسی را برای آن شبکه مجاز کنید. اجازه محلی است: اعضای دیگر را پیکربندی مجدد نمیکند و کنترلر را تغییر نمیدهد.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1فرمان آخر باید رابط ZeroTier و نشانی عضو خروجی را گزارش کند. اگر همچنان رابط فیزیکی را گزارش میکند، مسیر غایب است یا یک مسیر پیشفرض رقیب معیار بهتری دارد.
تنظیم را محدود به شبکهای نگه دارید که به آن نیاز دارد. فعال کردن پذیرش مسیر پیشفرض بهصورت سراسری، یا روی شبکهای که باید فقط یک زیرشبکه خصوصی فراهم کند، ترافیک را از خروجیای عبور میدهد که هرگز برای آن اندازهگیری نشده است.
خروجی را بررسی کنید و خانوادههای نشانی دیگر را ببینید
یک نشانی عمومی از سرویسی که مبدأ را گزارش میکند بخواهید و آن را با نشانی WAN گره خروجی مقایسه کنید. سپس یک سایت نامدار بارگذاری کنید تا تأیید شود DNS هنوز تحلیل میشود، و یک برنامه مهم را آزمایش کنید نه فقط مرورگر.
کلاینت دوپشته میتواند به استفاده از مسیر بومی IPv6 ادامه دهد در حالی که IPv4 از ZeroTier خارج میشود. اگر هدف پنهان کردن یا کنترل همه ترافیک است، یک مسیر جداگانه ::/0 و هدایت IPv6 روی خروجی لازم است، و آزمایش IPv4 درباره آنها چیزی نمیگوید.
فیلتر مسیر معکوس در Linux میتواند ترافیک معتبر خروجی را روی کلاینت دور بریزد. ZeroTier ملاحظهای درباره rp_filter برای اعضای مشارکتکننده مستند میکند؛ آن تنظیم را آگاهانه و فقط پس از تأیید مسیر و NAT تغییر دهید، نه بهعنوان نخستین آزمایش.
اگر نیاز دسترسی به NAS یا یک زیرشبکه اداری است، مسیر مدیریتشده برای آن پیشوند تغییر کوچکتر و ایمنتری از خروج کامل است. فرستادن همه مرور از دستگاه دیگر تصمیمی متفاوت از رسیدن به یک منبع خصوصی است و بازبینی جداگانه میخواهد.