راهنماهاپیشنمایش
Subnet route
از طریق یک دستگاه که نردبون رویش نصب است، به کل یک شبکه، مثل شبکهی محلی دفتر یا یک VPC ابری، دسترسی پیدا کنید.
با subnet route، یکی از دستگاههای شبکهی نردبون شما دسترسی به زیرشبکهی پشت خودش را هم فراهم میکند. به این دستگاه subnet router میگوییم. دستگاههای آن زیرشبکه به نردبون نیازی ندارند: پرینترها، NASها و سرورهایی که نمیتوانید چیزی رویشان نصب کنید، از بقیهی دستگاههایتان با همان IP همیشگیشان در دسترساند.
سه طرف در این کار نقش دارند: روتر routeهایش را اعلام میکند، یکی از مدیرها آنها را تأیید میکند و هر کلاینت باید استفاده از آنها را فعال کند.
راهاندازی subnet router
IP forwarding را روی روتر فعال کنید
روتر بستهها را بین نردبون و زیرشبکه جابهجا میکند، پس Linux باید اجازهی IP forwarding بدهد. در بیشتر توزیعها:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-ip-forward.conf echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-ip-forward.conf sudo sysctl -p /etc/sysctl.d/99-ip-forward.confنردبون هیچوقت خودش این تنظیم را عوض نمیکند. اگر روتر routeهای تأییدشده را جابهجا کند و forwarding خاموش باشد،
nardeboon statusروی روتر این را میگوید.اگر روتر route نسخهی IPv6 را از router advertisement میگیرد (خروجی
ip -6 route show defaultبهproto raختم میشود)، تا وقتی forwarding نسخهی IPv6 روشن است Linux آنها را نادیده میگیرد و روتر با تمام شدن عمر routeاش IPv6 را از دست میدهد. اگر زیرشبکهی IPv6 جابهجا نمیکنید خط IPv6 را ننویسید، وگرنه اول دریافت آنها را روی همان interface نگه دارید:net.ipv6.conf.eth0.accept_ra = 2، با اسم interface خودتان بهجایeth0.اگر فایروالی مثل
ufwیاfirewalldروی روتر فعال است، مطمئن شوید که جلوی ترافیکی را که روتر forward میکند نمیگیرد.routeها را اعلام کنید
روی روتر، زیرشبکههایی را که به آنها دسترسی دارد بنویسید و با کاما از هم جدا کنید:
sudo nardeboon up --advertise-routes=10.0.0.0/24,192.168.50.0/24اجرای دوبارهی
upفقط گزینههایی را عوض میکند که به آن میدهید؛ پس بقیهی تنظیمات روتر دستنخورده میماند. دستورsudo nardeboon route advertise 10.0.0.0/24 192.168.50.0/24همین را تنظیم میکند، بدون اینکه دستگاه را وصل یا قطع کند.هر دستگاه حداکثر ۶۴ رنج میتواند پیشنهاد کند. route پیشفرض (
0.0.0.0/0) subnet route نیست: برای جابهجا کردن همهی ترافیک اینترنت، از نود خروجی استفاده کنید. رنجهایی که با آدرسهای خود شبکه همپوشانی دارند کنار گذاشته میشوند؛ رنجهای loopback، link-local و multicast هم همینطور.routeها را تأیید کنید
یکی از مدیرها routeها را در صفحهی روتر در داشبورد، در بخش مسیرهای subnet، تأیید میکند. تا آن موقع هیچ دستگاهی از آنها استفاده نمیکند.
روی هر کلاینت routeها را بپذیرید
دستگاهها تا خودشان نخواهند از subnet routeها استفاده نمیکنند. روی هر دستگاهی که به این زیرشبکه نیاز دارد:
sudo nardeboon route acceptدستور
sudo nardeboon up --accept-routesهم همین کار را میکند وsudo nardeboon route accept offاستفاده از آنها را متوقف میکند. روی Windows گزینهی استفاده از مسیرهای subnet را در تنظیمات اپ روشن کنید، یا همین دستورها را بدونsudoدر هر ترمینالی اجرا کنید.
روتر ترافیک را چطور جابهجا میکند
روتر آدرس ترافیکی را که جابهجا میکند ترجمه میکند (masquerading)؛ پس دستگاههای زیرشبکه به هیچ route برگشتی به نردبون نیاز ندارند و اتصالها را از طرف خود روتر میبینند. روتر این قاعدهها را در یک جدول nftables مخصوص خودش، nardeboon-snat، نگه میدارد و به بقیهی قاعدههای فایروال شما دست نمیزند؛ برای همین به nft (بستهی nftables) نیاز دارد.
دستگاهی که خودش داخل همان زیرشبکه است، مثل لپتاپی که در دفتر است، مستقیم به آن میرسد: نردبون هر routeی را که شبکهای را که دستگاه همین حالا رویش است پوشش بدهد کنار میگذارد و وقتی دستگاه به شبکهی دیگری رفت، دوباره از آن استفاده میکند.
دو روتر برای یک زیرشبکه
اگر یک route را روی دو دستگاه یا بیشتر تأیید کنید، با از کار افتادن یکی از آنها زیرشبکه در دسترس میماند. هر بار فقط یک روتر route را جابهجا میکند، که به آن روتر اصلی (primary) میگوییم، و همهی دستگاهها ترافیک زیرشبکه را به همان میفرستند. وقتی روتر اصلی ۱۰ ثانیه آفلاین بماند، route به یکی دیگر از روترهایش که آنلاین است منتقل میشود. وقتی روتر اول برگردد، route همانجا میماند تا اتصالهایی که از روتر جدید میگذرند دوباره قطع نشوند. روتری که فقط یک لحظه اتصالش قطع شود و فوراً برگردد، route را نگه میدارد.
روترهایی که منتظر نوبتاند آماده میمانند: هر کدام از همین حالا برای آن route کار forward و masquerade را انجام میدهد، پس به محض اینکه دستگاهها ترافیک را به آن بفرستند، جابهجایش میکند. اتصالهایی که از روتری میگذشتند که از کار افتاده، همراه با آن قطع میشوند، چون masquerade هر روتر مال خودش است؛ اتصالهای تازه از روتر بعدی میگذرند.
روی روتری که منتظر است، nardeboon route list میگوید الان کدام روتر route را جابهجا میکند:
ROUTE ROUTER STATUS
10.0.0.0/24 gateway-2 approved; standby while gateway carries it
10.0.0.0/24 gateway available (accept routes is off)هر روتر جزو سقف subnet routerهای پلن شما حساب میشود.
بررسی routeها
nardeboon route listروی روتر:
ROUTE ROUTER STATUS
10.0.0.0/24 gateway approved
192.168.50.0/24 gateway waiting for approvalروی یک کلاینت:
ROUTE ROUTER STATUS
10.0.0.0/24 gateway in use| وضعیت | معنی |
|---|---|
approved | این دستگاه route را پیشنهاد کرده و یکی از مدیرها تأییدش کرده است. |
approved; standby while … carries it | این دستگاه route را پیشنهاد کرده و تأیید هم شده، ولی الان روتر دیگری جابهجایش میکند. اگر آن روتر آفلاین شود، این یکی جایش را میگیرد. |
waiting for approval | این دستگاه route را پیشنهاد کرده، ولی هنوز هیچ مدیری تأییدش نکرده است. |
in use | دستگاه دیگری route را جابهجا میکند و این دستگاه ترافیکش را به آن میفرستد. |
available (accept routes is off) | دستگاه دیگری route را جابهجا میکند؛ nardeboon route accept استفاده از آن را شروع میکند. |
not used: this device is on that network | این دستگاه خودش داخل همان زیرشبکه است و مستقیم به آن میرسد. |
بعد همانطور که از داخل خود شبکهی محلی وصل میشوید، به دستگاههای زیرشبکه وصل شوید:
ping 10.0.0.20
ssh admin@10.0.0.20nardeboon ping هم برای این آدرسها کار میکند و میگوید کدام روتر echo را جابهجا کرده است:
pong from 10.0.0.20 (10.0.0.20): via gateway (subnet router), direct 203.0.113.7:41641, nb-udp, 12.3 msچه کسی میتواند از routeها استفاده کند
subnet routeها از سیاست دسترسی شما پیروی میکنند و هم کلاینت و هم روتر آن را اعمال میکنند. grantی که به همهچیز (*) دسترسی میدهد، مثل همانی که هر شبکه با آن شروع میشود، routeهای تأییدشده را هم شامل میشود. برای محدود کردنش، بهجای آن به یک رنج آدرس دسترسی بدهید، مثلاً cidr:10.0.0.0/24: فقط مبدأهای همان grant از طریق روتر به آن رنج میرسند.
دستور route
| دستور | کاری که میکند |
|---|---|
nardeboon route list | فهرست subnet routeها و وضعیتشان را نشان میدهد. |
nardeboon route advertise <ranges…> | subnet routeهایی را که این دستگاه پیشنهاد میکند تنظیم میکند؛ بدون رنج، دیگر هیچ routeی پیشنهاد نمیکند. |
nardeboon route accept [on|off] | routeهای تأییدشدهی دستگاههای دیگر را به کار میگیرد یا استفاده از آنها را متوقف میکند. |
route advertise و route accept فقط همان تنظیم را عوض میکنند: دستگاهی که وصل است وصل میماند و دستگاهی که قطع است قطع میماند. این دستورها هم مثل همهی دستورهای دیگر --json را میپذیرند. مرجع CLI را ببینید.
نکتهها
- فقط همان چیزی را اعلام کنید که لازم است. زیرشبکههای کوچکتر را راحتتر میشود بررسی و تأیید کرد.
- پس گرفتن پیشنهاد، تأیید را هم پس میگیرد. routeی که روتر دیگر پیشنهادش نکند، تأییدش را هم از دست میدهد؛ پیشنهاد دوبارهاش به تأیید تازه نیاز دارد.
- نامهای داخلی. اگر زیرشبکه سرور DNS خودش را دارد، با split DNS دامنههایش را به همان سرور بفرستید؛ مثلاً
corp.example.comرا به10.0.0.53. - تأیید بخشی از کنترل دسترسی است. subnet routeها و نودهای خروجی همیشه به تأیید مدیر نیاز دارند. کنترل دسترسی را ببینید.