صحنهٔ آموزشی آزمایشگاه شبکه با اپراتور نشسته و نمودار مفهومی هاب و شعبه‌ها.

WIUNIX ACADEMY

شبکهٔ hub-and-spoke با WireGuard و BGP فیلترشده در FRR

دو تونل شعبه را بسازید، prefix دقیق LAN را با eBGP مبادله کنید و نصب و حذف مسیر کرنل را با حفظ مسیر مدیریت بررسی کنید.

پیشرفته75 دقیقه مطالعهبه‌روزرسانی
محیطت را انتخاب کن

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخه را انتخاب کن تا مراحل، دستورها و راه‌حل‌ها برای همان محیط نمایش داده شوند.

Debian 12بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر می‌کنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری می‌شوند و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شوند. پیش از اجرا، DNS، گواهی‌ها و سیاست شبکهٔ واقعی را بررسی کن.

آی‌پی، دامنه یا پورت مثال‌ها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای به‌روز‌شده را کپی کن.

تنظیم مقادیر برای محیط من19 مقدار قابل‌تغییر

از اینجا شروع کن

در پایان چه چیزی خواهی داشت؟

ارتباط 10.71.10.0/24 و 10.72.20.0/24 از AS65000 با policy دقیق و بررسی حذف مسیر.

01A · AS6501010.71.10.0/24 → 10.254.1.2
02هاب · AS6500010.254.1.1 / 10.254.2.1 · eBGP در تونل WireGuard
03B · AS6502010.254.2.2 → 10.72.20.0/24
سیستم‌عامل‌ها و نسخه‌های پوشش‌داده‌شده

مسیرهای OS مستندمحورند؛ شواهد اجرای ایزولهٔ زیر دامنهٔ محدودتری دارند.

قبل از شروع

  • سه VM تازهٔ لینوکس، sudo و Bash، کنسول مستقل، LAN متصل و مبادلهٔ احرازشدهٔ کلید عمومی.
  • نبود هم‌پوشانی مدیریت، LAN و تونل؛ آمادگی مدیر فایروال برای همتاهای دقیق و سرویس منتخب.

مسیریابی دو شعبه از یک هاب

این تمرین برای مدیر لینوکسی است که مسیر و کلیدهای WireGuard را می‌شناسد. دو لینک رمزنگاری‌شدهٔ مستقل می‌سازیم و شبکهٔ هر شعبه را با eBGP به دیگری می‌رسانیم. هاب این مثال شبکهٔ محلی برای اعلان ندارد و خرابی آن ارتباط شعبه‌ها را قطع می‌کند. تمرین IPv4 است؛ برای مهاجرت روی شبکهٔ فعال یا تأیید HA نوشته نشده است.

پیش از کپی، مقادیر عمومی را تنظیم کنید

تنظیمات بالا را باز کنید، مقدارها را ویرایش کنید و پس از «اعمال در آموزش» کپی بگیرید. ریشهٔ مطلق /srv/academy-wgbgp باید تازه و بدون symlink باشد؛ نام‌های wg-ac-a و wg-ac-b هم روی هاب آزاد باشند. شبکه‌های 10.71.10.0/24 و 10.72.20.0/24 و دو زیرشبکهٔ /30 تونل نباید با مسیرهای واقعی یا شبکهٔ مدیریت هم‌پوشانی داشته باشند. فرم فقط رابطه‌های تعریف‌شده را کنترل می‌کند؛ مالکیت آدرس و دسترسی را باید جداگانه بررسی کنید. مسیر مدیریت وارد BGP نمی‌شود. مقدارهای شخصی و پیشرفتشان فقط در sessionStorage همین تب، زبان، مقاله و محیط می‌مانند؛ پیشرفت پیش‌فرض localStorage است. URL اشتراک و سرور تغییر نمی‌کنند. رمز و کلید اینجا وارد نکنید؛ شخصی‌سازی شاهد اجرای آزمایش نیست.

AllowedIPs جدول مسیر BGP نیست

ابتدا جدول مسیر کرنل رابط خروجی را انتخاب می‌کند. سپس WireGuard روی همان رابط با AllowedIPs همتای مقصد را پیدا می‌کند و مبدأ بستهٔ دریافتی را هم با آن می‌سنجد. bgpd مسیر BGP را انتخاب می‌کند و zebra آن را در کرنل می‌نویسد. گزینهٔ Table = off مانع ساخت مسیر خودکار LAN از AllowedIPs می‌شود؛ مسیر متصل /30 همچنان از Address به وجود می‌آید. مسیر ثابت برای LAN دوردست نسازید، چون حذف مسیر BGP را پنهان می‌کند.

دو رابط تونل و سه ASN خصوصی

هاب با AS65000 روی wg-ac-a آدرس 10.254.1.1/30 و روی wg-ac-b آدرس 10.254.2.1/30 دارد. شعبهٔ A با AS65010 و آدرس 10.254.1.2/30 مالک 10.71.10.0/24 و دروازهٔ 10.71.10.1 است؛ شعبهٔ B با AS65020 و 10.254.2.2/30 مالک 10.72.20.0/24 و دروازهٔ 10.72.20.1 است. ASNهای خصوصی متفاوت‌اند؛ این ارتباط eBGP است و route reflector ندارد. next-hop-self روی هاب، next-hop شعبهٔ دیگر را به آدرس قابل‌دسترسی هاب تبدیل می‌کند. هر peer روی هاب فقط مبدأ LAN خودش را می‌پذیرد؛ peer هاب روی شعبه شبکهٔ شعبهٔ مقابل را هم حمل می‌کند. مسیر پیش‌فرض و اعلان کلی شبکه‌های خصوصی مجاز نیست.

01

قدم بعدی

سه VM قابل‌حذف را بررسی کنید

روی هر سه دروازهٔ تازه با کنسول مستقل اجرا کنید. هاب به endpoint قابل‌دسترسی 198.51.100.10 برای UDP نیاز دارد. شعبه‌ها آغازکننده‌اند و می‌توانند پشت NAT باشند. آدرس و مسیر متصل LAN باید قبلاً با مدیر شبکهٔ معمول تنظیم شده باشد. اگر FRR موجود، رابط یا مسیر متداخل یا ترافیک تولیدی دیدید، متوقف شوید؛ روتر فعال را برای این تمرین خاموش نکنید. مالکیت فایروال و مسیر مدیریت را پیش از نصب ثبت کنید. همین ترمینال و انتخاب ROLE را برای پنل‌های وابسته به نقش نگه دارید؛ در shell تازه نقش را دوباره آگاهانه انتخاب کنید.

bash

دروازه‌های تازهٔ آزمایش؛ Bash

set -eu
cat /etc/os-release
ip -br address
ip route show table all
sudo ss -lntup
if command -v nft >/dev/null; then sudo nft list ruleset; else printf '%s\n' 'nft not installed: inspect the existing firewall owner before proceeding'; fi
test ! -e '/srv/academy-wgbgp'
test ! -L '/srv/academy-wgbgp'
test ! -e /etc/frr
! ip link show 'wg-ac-a' 2>/dev/null
! ip link show 'wg-ac-b' 2>/dev/null
read -r -p 'Lab role (h/a/b): ' ROLE
case "$ROLE" in h|a|b) ;; *) exit 1;; esac
از کجا بدانم درست انجام شد؟

ریشه، نام تونل و تنظیم FRR موجود نیست؛ مسیر LAN و مدیریت ثبت شده و پورت‌های UDP آزادند.

02

قدم بعدی

بسته‌های همان توزیع را نصب کنید

از بسته‌های امضاشدهٔ همین توزیع استفاده کنید و candidate را ثبت کنید. کنترل نسخهٔ OS باید موفق باشد. تنظیم این راهنما با خانوادهٔ FRR 8.4 و 10.x سازگار است؛ وصلهٔ امنیتی توزیع اولویت دارد. این انتخاب ادعای تازه‌ترین نسخهٔ بالادستی یا نصب همهٔ OSها نیست. اجرای واقعی فقط همان محیط محدود گزارش‌شده است. بسته ممکن است سرویس خالی را روشن کند؛ فقط سرویس تازهٔ همین آزمایش را پیش از تنظیم متوقف کنید.

bash

دروازه‌های تازهٔ آزمایش؛ Bash

set -eu
. /etc/os-release
test "$VERSION_CODENAME" = 'bookworm'
sudo apt-get update
apt-cache policy frr wireguard-tools
sudo apt-get install --no-install-recommends frr wireguard-tools nftables iproute2 iputils-ping curl python3 nano
sudo systemctl stop frr
/usr/lib/frr/bgpd --version
wg --version
از کجا بدانم درست انجام شد؟

کنترل OS موفق است و نسخهٔ نصب‌شدهٔ bgpd و wg با candidate امضاشدهٔ ثبت‌شده هماهنگ است.

همهٔ آموزش‌های آکادمی ↗