← شروع آموزش

WIUNIX ACADEMY

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

صفحهٔ 3 از 6؛ مراحل قبلی و پیش‌نیازها را پیش از ادامه مرور کن.

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

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

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

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

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

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

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

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

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

قدم بعدی

پیش از FRR دسترسی BGP را محدود کنید

در مدیر فایروال موجود، UDP51871 و UDP51872 هاب را برای آدرس خروجی واقعی شعبه‌ها یا سیاست roaming مشخص باز کنید و پاسخ روی شعبه‌ها مجاز باشد. TCP179 فقط بین 10.254.1.1 و 10.254.1.2 روی wg-ac-a و بین 10.254.2.1 و 10.254.2.2 روی wg-ac-b مجاز است؛ روی رابط عمومی هرگز باز نشود. forwarding را به 10.71.10.0/24 و 10.72.20.0/24 و سرویس موردنیاز با پاسخ established محدود کنید. ICMP مربوط به PMTUD باید عبور کند. مدیریت را حفظ و LANها را NAT نکنید. accept در یک base chain، drop بعدی را خنثی نمی‌کند. محافظ افزایشی زیر فقط BGP عمومی را می‌بندد و جای فایروال موجود یا قوانین allow را نمی‌گیرد. برخورد نام جدول یعنی توقف.

bash

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

sudo nft list table inet academy_bgp 2>/dev/null && exit 1
sudo nft -f - <<'NFT'
table inet academy_bgp {
 chain input {
  type filter hook input priority -10; policy accept;
  tcp dport 179 iifname != { "wg-ac-a", "wg-ac-b" } counter drop
 }
}
NFT
sudo nft list table inet academy_bgp
از کجا بدانم درست انجام شد؟

BGP عمومی مسدود است؛ قوانین بررسی‌شدهٔ فایروال اصلی فقط همتاها، UDP و ترافیک منتخب LAN را مجاز می‌کنند.

11

قدم بعدی

تونل را روشن و مالکیت مسیر را بررسی کنید

خطوط هاب را فقط روی هاب و خط متناسب را روی هر شعبه اجرا کنید. هنوز نباید مسیر LAN دوردست وجود داشته باشد. handshake تازه فقط تبادل رمزنگاری را ثابت می‌کند؛ BGP یا عبور ترافیک را نه. MTU1380 نقطهٔ شروع محافظه‌کارانه برای underlay با MTU۱۵۰۰ است؛ مسیر کوچک‌تر به مقدار کمتر در دو سر نیاز دارد. rp_filter سخت‌گیرانه ممکن است مسیر نامتقارن معتبر را حذف کند. دروازه‌های تازهٔ آزمایش ابتدا forwarding و سپس بررسی reverse-path در حالت loose می‌گیرند؛ سیاست تولید نیازمند بررسی جداست. مقدار قبلی در ریشهٔ آزمایش ثبت شده است.

bash

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

sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2
case "$ROLE" in
 h) sudo wg-quick up 'wg-ac-a'; sudo wg-quick up 'wg-ac-b' ;;
 a) sudo wg-quick up 'wg-ac-a' ;;
 b) sudo wg-quick up 'wg-ac-b' ;;
 *) exit 1 ;;
esac
sudo wg show
ip route show proto kernel
ip route show proto bgp
از کجا بدانم درست انجام شد؟

رابط‌های همان نقش UP هستند و مسیر متصل /30 دارند؛ ترافیک handshake تازه می‌سازد. تا نصب توسط BGP، مسیر LAN دوردست وجود ندارد.

12

قدم بعدی

تنظیم یکپارچهٔ مسیریابی را باز کنید

روی هر VM تازه فقط فایل همان نقش را از بخش بعد قرار دهید. تنظیم اولیهٔ بسته پشتیبان دارد. zebra را فعال نگه دارید و bgpd=yes را در فایل daemon توزیع تنظیم کنید؛ پروتکل دیگری روشن نشود. در این طرح redistribute connected، default-originate، route reflector، permit کلی یا دورزدن policy نداریم. prefix-list فقط CIDR دقیق را می‌پذیرد و بقیه implicit deny می‌شوند. maximum-prefix لایهٔ دوم برای شمار مسیرهای پذیرفته‌شده است؛ جای فیلتر یا تضمین مقابله با فشار کنترل‌پلین نیست.

bash

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

sudo nano /etc/frr/daemons /etc/frr/frr.conf
از کجا بدانم درست انجام شد؟

فایل یکپارچه با نقش نود هماهنگ است؛ zebra و bgpd فعال‌اند و پروتکل نامرتبط روشن نشده است.

13

قدم بعدی

فایل مسیریابی هاب

این فایل فقط برای هاب است. شبکهٔ اعلان‌شده باید روی مالک مسیر متصل دقیق داشته باشد؛ برای عبور از کنترل import-check مسیر blackhole نسازید.

text · /etc/frr/frr.conf

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

frr defaults traditional
service integrated-vtysh-config
hostname academy-hub
ip prefix-list FROM-A seq 10 permit 10.71.10.0/24
ip prefix-list FROM-B seq 10 permit 10.72.20.0/24
router bgp 65000
 bgp router-id 10.254.1.1
 bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 neighbor 10.254.1.2 remote-as 65010
 neighbor 10.254.1.2 update-source 10.254.1.1
 neighbor 10.254.1.2 timers 3 9
 neighbor 10.254.2.2 remote-as 65020
 neighbor 10.254.2.2 update-source 10.254.2.1
 neighbor 10.254.2.2 timers 3 9
 address-family ipv4 unicast
  neighbor 10.254.1.2 activate
  neighbor 10.254.1.2 prefix-list FROM-A in
  neighbor 10.254.1.2 prefix-list FROM-B out
  neighbor 10.254.1.2 maximum-prefix 1
  neighbor 10.254.1.2 next-hop-self
  neighbor 10.254.2.2 activate
  neighbor 10.254.2.2 prefix-list FROM-B in
  neighbor 10.254.2.2 prefix-list FROM-A out
  neighbor 10.254.2.2 maximum-prefix 1
  neighbor 10.254.2.2 next-hop-self
 exit-address-family
از کجا بدانم درست انجام شد؟

هر دو همتا prefix-list دقیق ورودی و خروجی، maximum-prefix1 و next-hop-self دارند؛ هاب شبکهٔ محلی یا default اعلان نمی‌کند.

14

قدم بعدی

فایل مسیریابی شعبهٔ A

این فایل فقط برای شعبهٔ A است. شبکهٔ اعلان‌شده باید روی مالک مسیر متصل دقیق داشته باشد؛ برای عبور از کنترل import-check مسیر blackhole نسازید.

text · /etc/frr/frr.conf

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

frr defaults traditional
service integrated-vtysh-config
hostname academy-a
ip prefix-list OWN seq 10 permit 10.71.10.0/24
ip prefix-list REMOTE seq 10 permit 10.72.20.0/24
router bgp 65010
 bgp router-id 10.254.1.2
 bgp ebgp-requires-policy
 bgp network import-check
 no bgp default ipv4-unicast
 neighbor 10.254.1.1 remote-as 65000
 neighbor 10.254.1.1 update-source 10.254.1.2
 neighbor 10.254.1.1 timers 3 9
 address-family ipv4 unicast
  network 10.71.10.0/24
  neighbor 10.254.1.1 activate
  neighbor 10.254.1.1 prefix-list REMOTE in
  neighbor 10.254.1.1 prefix-list OWN out
  neighbor 10.254.1.1 maximum-prefix 1
 exit-address-family
از کجا بدانم درست انجام شد؟

A فقط 10.71.10.0/24 را اعلان و فقط 10.72.20.0/24 را از AS65000 می‌پذیرد؛ network import-check روشن است.

15

قدم بعدی

فایل مسیریابی شعبهٔ B

این فایل فقط برای شعبهٔ B است. شبکهٔ اعلان‌شده باید روی مالک مسیر متصل دقیق داشته باشد؛ برای عبور از کنترل import-check مسیر blackhole نسازید.

text · /etc/frr/frr.conf

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

frr defaults traditional
service integrated-vtysh-config
hostname academy-b
ip prefix-list OWN seq 10 permit 10.72.20.0/24
ip prefix-list REMOTE seq 10 permit 10.71.10.0/24
router bgp 65020
 bgp router-id 10.254.2.2
 bgp ebgp-requires-policy
 bgp network import-check
 no bgp default ipv4-unicast
 neighbor 10.254.2.1 remote-as 65000
 neighbor 10.254.2.1 update-source 10.254.2.2
 neighbor 10.254.2.1 timers 3 9
 address-family ipv4 unicast
  network 10.72.20.0/24
  neighbor 10.254.2.1 activate
  neighbor 10.254.2.1 prefix-list REMOTE in
  neighbor 10.254.2.1 prefix-list OWN out
  neighbor 10.254.2.1 maximum-prefix 1
 exit-address-family
از کجا بدانم درست انجام شد؟

B فقط 10.72.20.0/24 را اعلان و فقط 10.71.10.0/24 را از AS65000 می‌پذیرد؛ network import-check روشن است.

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