WIUNIX ACADEMY
شبکهٔ hub-and-spoke با WireGuard و BGP فیلترشده در FRR
صفحهٔ 3 از 6؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من19 مقدار قابلتغییر
قدم بعدی
پیش از 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
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 را مجاز میکنند.
قدم بعدی
تونل را روشن و مالکیت مسیر را بررسی کنید
خطوط هاب را فقط روی هاب و خط متناسب را روی هر شعبه اجرا کنید. هنوز نباید مسیر LAN دوردست وجود داشته باشد. handshake تازه فقط تبادل رمزنگاری را ثابت میکند؛ BGP یا عبور ترافیک را نه. MTU1380 نقطهٔ شروع محافظهکارانه برای underlay با MTU۱۵۰۰ است؛ مسیر کوچکتر به مقدار کمتر در دو سر نیاز دارد. rp_filter سختگیرانه ممکن است مسیر نامتقارن معتبر را حذف کند. دروازههای تازهٔ آزمایش ابتدا forwarding و سپس بررسی reverse-path در حالت loose میگیرند؛ سیاست تولید نیازمند بررسی جداست. مقدار قبلی در ریشهٔ آزمایش ثبت شده است.
دروازههای تازهٔ آزمایش؛ 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 دوردست وجود ندارد.
قدم بعدی
تنظیم یکپارچهٔ مسیریابی را باز کنید
روی هر VM تازه فقط فایل همان نقش را از بخش بعد قرار دهید. تنظیم اولیهٔ بسته پشتیبان دارد. zebra را فعال نگه دارید و bgpd=yes را در فایل daemon توزیع تنظیم کنید؛ پروتکل دیگری روشن نشود. در این طرح redistribute connected، default-originate، route reflector، permit کلی یا دورزدن policy نداریم. prefix-list فقط CIDR دقیق را میپذیرد و بقیه implicit deny میشوند. maximum-prefix لایهٔ دوم برای شمار مسیرهای پذیرفتهشده است؛ جای فیلتر یا تضمین مقابله با فشار کنترلپلین نیست.
دروازههای تازهٔ آزمایش؛ Bash
sudo nano /etc/frr/daemons /etc/frr/frr.conf
فایل یکپارچه با نقش نود هماهنگ است؛ zebra و bgpd فعالاند و پروتکل نامرتبط روشن نشده است.
قدم بعدی
فایل مسیریابی هاب
این فایل فقط برای هاب است. شبکهٔ اعلانشده باید روی مالک مسیر متصل دقیق داشته باشد؛ برای عبور از کنترل import-check مسیر blackhole نسازید.
دروازههای تازهٔ آزمایش؛ 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 اعلان نمیکند.
قدم بعدی
فایل مسیریابی شعبهٔ A
این فایل فقط برای شعبهٔ A است. شبکهٔ اعلانشده باید روی مالک مسیر متصل دقیق داشته باشد؛ برای عبور از کنترل import-check مسیر blackhole نسازید.
دروازههای تازهٔ آزمایش؛ 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 روشن است.
قدم بعدی
فایل مسیریابی شعبهٔ B
این فایل فقط برای شعبهٔ B است. شبکهٔ اعلانشده باید روی مالک مسیر متصل دقیق داشته باشد؛ برای عبور از کنترل import-check مسیر blackhole نسازید.
دروازههای تازهٔ آزمایش؛ 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 روشن است.