Failover هوشمند با Track
مقدمه
در شبکههای سازمانی، نیاز به ارتباط امن و پایدار بین سایتهای مختلف با استفاده از چندین لینک ارتباطی، امری رایج است. در این کارگاه، نحوه پیادهسازی یک سیستم Failover و Load Balancing پیشرفته را با استفاده از ترکیب Track، WireGuard، VRF و Scripting در روتر SooDar فرا میگیرید.
این کارگاه یک سناریوی واقعی را پیادهسازی میکند که در آن:
سه لینک WireGuard بین دو روتر وجود دارد
سه شبکه (A، B، C) در VRF های جداگانه قرار دارند
Load Balancing اولیه: هر شبکه از یک لینک اختصاصی استفاده میکند
Failover هوشمند: در صورت قطع لینک، ترافیک بهصورت خودکار به لینکهای جایگزین منتقل میشود
Route Leakage بین VRF ها برای دسترسی متقابل
مرور سناریو
در این کارگاه یک سناریوی دو روتری با قابلیت Failover چندسطحی پیادهسازی میشود:
روترها:
R1: روتر SooDar اول
R2: روتر SooDar دوم
لینکهای WireGuard:
لینک 1 (WG1): شبکه
10.0.1.0/24- اختصاصی برای VRF-Aلینک 2 (WG2): شبکه
10.0.2.0/24- اختصاصی برای VRF-Bلینک 3 (WG3): شبکه
10.0.3.0/24- اختصاصی برای VRF-C
VRF ها:
VRF-A: شبکه محلی
1.1.1.0/24و2.1.1.0/24VRF-B: شبکه محلی
1.2.1.0/24و2.2.1.0/24VRF-C: شبکه محلی
1.3.1.0/24و2.3.1.0/24
منطق Failover:
در حالت عادی: A از لینک 1، B از لینک 2، C از لینک 3
اگر لینک 1 قطع شد: A به لینک 2 منتقل میشود
اگر لینک 1 دوباره وصل شد: A به لینک 1 برمیگردد
اگر لینک 2 قطع شد: B به لینک 3 منتقل میشود
اگر لینک 1 و 2 هر دو قطع شدند: A به لینک 3 منتقل میشود
توضیح توپولوژی

نودها و نقشها:
R1: روتر SooDar اول با سه VRF (A، B، C)
R2: روتر SooDar دوم با سه VRF (A، B، C)
Client-A1, Client-A2: کلاینتهای شبکه A
Client-B1, Client-B2: کلاینتهای شبکه B
Client-C1, Client-C2: کلاینتهای شبکه C
لینکها و آدرسدهی:
لینکهای فیزیکی (Public):
R1 ge0 ↔ R2 ge0: شبکه
100.1.2.0/24(برای WireGuard 100)R1 ge0:
100.1.2.1/24R2 ge0:
100.1.2.2/24
R1 ge1 ↔ R2 ge1: شبکه
200.1.2.0/24(برای WireGuard 200)R1 ge1:
200.1.2.1/24R2 ge1:
200.1.2.2/24
R1 ge2 ↔ R2 ge2: شبکه
200.1.3.0/24(برای WireGuard 300)R1 ge2:
200.1.3.1/24R2 ge2:
200.1.3.2/24
لینکهای WireGuard:
WG1: شبکه
10.0.1.0/24(برای VRF-A)R1 wireguard100:
10.0.1.1/32R2 wireguard100:
10.0.1.2/32
WG2: شبکه
10.0.2.0/24(برای VRF-B)R1 wireguard200:
10.0.2.1/32R2 wireguard200:
10.0.2.2/32
WG3: شبکه
10.0.3.0/24(برای VRF-C)R1 wireguard300:
10.0.3.1/32R2 wireguard300:
10.0.3.2/32
شبکههای LAN و کلاینتها:
VRF-A:
R1 ge5:
1.1.1.1/24R2 ge5:
2.1.1.1/24Client-A1:
1.1.1.10(متصل به R1)Client-A2:
2.1.1.10(متصل به R2)
VRF-B:
R1 ge6:
1.2.1.1/24R2 ge6:
2.2.1.1/24Client-B1:
1.2.1.10(متصل به R1)Client-B2:
2.2.1.10(متصل به R2)
VRF-C:
R1 ge7:
1.3.1.1/24R2 ge7:
2.3.1.1/24Client-C1:
1.3.1.10(متصل به R1)Client-C2:
2.3.1.10(متصل به R2)
پیشنیازها
دسترسی CLI به روترهای SooDar
آشنایی پایه با WireGuard، VRF، Track و Static Routing
دسترسی به اسکریپتهای sooshell در روتر
در تمام مراحل، اصل «چرایی قبل از چگونگی» رعایت شده است: ابتدا هدف هر بخش گفته میشود، سپس پیکربندی ارائه میگردد.
پیکربندی مرحلهبهمرحله
1) آمادهسازی VRF ها
چرا: برای جداسازی منطقی ترافیک شبکههای A، B و C، هر کدام باید در VRF جداگانهای قرار گیرند.
R1
configure terminal
vrf VRF-A
exit-vrf
!
vrf VRF-B
exit-vrf
!
vrf VRF-C
exit-vrf
!
end
R2
configure terminal
vrf VRF-A
exit-vrf
!
vrf VRF-B
exit-vrf
!
vrf VRF-C
exit-vrf
!
end
2) پیکربندی اینترفیسهای Public
چرا: سه لینک Public جداگانه برای ارتباط WireGuard لازم است. هر WireGuard از یک لینک Public اختصاصی استفاده میکند.
R1
configure terminal
interface ge0
ip address 100.1.2.1/24
no shutdown
exit
!
interface ge1
ip address 200.1.2.1/24
no shutdown
exit
!
interface ge2
ip address 200.1.3.1/24
no shutdown
exit
end
R2
configure terminal
interface ge0
ip address 100.1.2.2/24
no shutdown
exit
!
interface ge1
ip address 200.1.2.2/24
no shutdown
exit
!
interface ge2
ip address 200.1.3.2/24
no shutdown
exit
end
3) پیکربندی اینترفیسهای LAN در VRF ها
چرا: هر VRF باید اینترفیس LAN خود را داشته باشد.
R1
configure terminal
interface ge5
ip vrf forwarding VRF-A
ip address 1.1.1.1/24
no shutdown
exit
!
interface ge6
ip vrf forwarding VRF-B
ip address 1.2.1.1/24
no shutdown
exit
!
interface ge7
ip vrf forwarding VRF-C
ip address 1.3.1.1/24
no shutdown
exit
end
R2
configure terminal
interface ge5
ip vrf forwarding VRF-A
ip address 2.1.1.1/24
no shutdown
exit
!
interface ge6
ip vrf forwarding VRF-B
ip address 2.2.1.1/24
no shutdown
exit
!
interface ge7
ip vrf forwarding VRF-C
ip address 2.3.1.1/24
no shutdown
exit
end
4) پیکربندی WireGuard برای لینک 1 (VRF-A)
چرا: لینک WireGuard اول برای VRF-A اختصاص داده میشود. این لینک در حالت Routing Mode کار میکند (نه OSPF).
تولید کلیدهای WireGuard
ابتدا باید کلیدهای خصوصی WireGuard را در روترها تولید کنیم. برای هر لینک WireGuard، یک کلید خصوصی نیاز است.
R1 - تولید کلید WireGuard برای لینک 1
configure terminal
crypto key generate x25519 label wgkey-r1-100
exit
end
این دستور کلید خصوصی WireGuard را تولید و با نام wgkey-r1-100 ذخیره میکند.
برای مشاهده کلید عمومی (Public Key) که باید به طرف مقابل داده شود:
show crypto key wgkey-r1-100
کلید عمومی نمایش داده شده را یادداشت کنید. این کلید را در پیکربندی R2 استفاده خواهید کرد.
R1 - پیکربندی اینترفیس WireGuard برای VRF-A
configure terminal
interface wireguard100
ip vrf forwarding VRF-A
ip mtu 1420
wireguard mode routing
wireguard source 0.0.0.0
wireguard private-key wgkey-r1-100
wireguard port 10100
wireguard peer R2-WG1
public-key <کلید_عمومی_R2_را_اینجا_وارد_کنید>
endpoint 100.1.2.2 port 10100
vrf default
allowed-ip 10.0.1.2/32
no shutdown
ip address 10.0.1.1/32
exit
end
نکته: مقدار <کلید_عمومی_R2_را_اینجا_وارد_کنید> را با کلید عمومی که از R2 دریافت میکنید جایگزین کنید.
R2 - تولید کلید WireGuard برای لینک 1
configure terminal
crypto key generate x25519 label wgkey-r2-100
exit
end
برای مشاهده کلید عمومی:
show crypto key wgkey-r2-100
کلید عمومی را یادداشت کنید و در پیکربندی R1 استفاده کنید.
R2 - پیکربندی اینترفیس WireGuard برای VRF-A
configure terminal
interface wireguard100
ip vrf forwarding VRF-A
ip mtu 1420
wireguard mode routing
wireguard source 0.0.0.0
wireguard private-key wgkey-r2-100
wireguard port 10100
wireguard peer R1-WG1
public-key <کلید_عمومی_R1_را_اینجا_وارد_کنید>
endpoint 100.1.2.1 port 10100
vrf default
allowed-ip 10.0.1.1/32
no shutdown
ip address 10.0.1.2/32
exit
end
5) پیکربندی WireGuard برای لینک 2 (VRF-B)
چرا: لینک WireGuard دوم برای VRF-B اختصاص داده میشود.
R1 - تولید کلید WireGuard برای لینک 2
configure terminal
crypto key generate x25519 label wgkey-r1-200
exit
end
R1 - پیکربندی اینترفیس WireGuard برای VRF-B
configure terminal
interface wireguard200
ip vrf forwarding VRF-B
ip mtu 1420
wireguard mode routing
wireguard source 0.0.0.0
wireguard private-key wgkey-r1-200
wireguard port 10200
wireguard peer R2-WG2
public-key <کلید_عمومی_R2_را_اینجا_وارد_کنید>
endpoint 200.1.2.2 port 10200
vrf default
allowed-ip 10.0.2.2/32
no shutdown
ip address 10.0.2.1/32
exit
end
R2 - تولید کلید WireGuard برای لینک 2
configure terminal
crypto key generate x25519 label wgkey-r2-200
exit
end
R2 - پیکربندی اینترفیس WireGuard برای VRF-B
configure terminal
interface wireguard200
ip vrf forwarding VRF-B
ip mtu 1420
wireguard mode routing
wireguard source 0.0.0.0
wireguard private-key wgkey-r2-200
wireguard port 10200
wireguard peer R1-WG2
public-key <کلید_عمومی_R1_را_اینجا_وارد_کنید>
endpoint 200.1.2.1 port 10200
vrf default
allowed-ip 10.0.2.1/32
no shutdown
ip address 10.0.2.2/32
exit
end
6) پیکربندی WireGuard برای لینک 3 (VRF-C)
چرا: لینک WireGuard سوم برای VRF-C اختصاص داده میشود.
R1 - تولید کلید WireGuard برای لینک 3
configure terminal
crypto key generate x25519 label wgkey-r1-300
exit
end
R1 - پیکربندی اینترفیس WireGuard برای VRF-C
configure terminal
interface wireguard300
ip vrf forwarding VRF-C
ip mtu 1420
wireguard mode routing
wireguard source 0.0.0.0
wireguard private-key wgkey-r1-300
wireguard port 10300
wireguard peer R2-WG3
public-key <کلید_عمومی_R2_را_اینجا_وارد_کنید>
endpoint 200.1.3.2 port 10300
vrf default
allowed-ip 10.0.3.2/32
no shutdown
ip address 10.0.3.1/32
exit
end
R2 - تولید کلید WireGuard برای لینک 3
configure terminal
crypto key generate x25519 label wgkey-r2-300
exit
end
R2 - پیکربندی اینترفیس WireGuard برای VRF-C
configure terminal
interface wireguard300
ip vrf forwarding VRF-C
ip mtu 1420
wireguard mode routing
wireguard source 0.0.0.0
wireguard private-key wgkey-r2-300
wireguard port 10300
wireguard peer R1-WG3
public-key <کلید_عمومی_R1_را_اینجا_وارد_کنید>
endpoint 200.1.3.1 port 10300
vrf default
allowed-ip 10.0.3.1/32
no shutdown
ip address 10.0.3.2/32
exit
end
7) پیکربندی IP SLA برای مانیتورینگ لینکهای WireGuard
چرا: برای تشخیص قطعی تونلهای WireGuard، باید از IP SLA استفاده کنیم. IP SLA بهصورت دورهای به آدرس IP اینترفیس WireGuard طرف مقابل در همان VRF پینگ میزند و وضعیت تونل را بررسی میکند.
نکته مهم: IP SLA باید در همان VRF که WireGuard در آن قرار دارد اجرا شود تا بتواند به آدرس IP اینترفیس WireGuard طرف مقابل دسترسی داشته باشد.
R1 - IP SLA برای لینک 1 (WireGuard 100 در VRF-A)
configure terminal
ip sla 1
icmp-echo 10.0.1.2
vrf VRF-A
frequency 5
exit
!
ip sla schedule 1 start-time now life forever
exit
end
این IP SLA به آدرس 10.0.1.2 (آدرس IP اینترفیس wireguard100 روی R2) در VRF-A پینگ میزند. اگر تونل WireGuard فعال باشد، این پینگ موفق خواهد بود.
R1 - IP SLA برای لینک 2 (WireGuard 200 در VRF-B)
configure terminal
ip sla 2
icmp-echo 10.0.2.2
vrf VRF-B
frequency 5
exit
!
ip sla schedule 2 start-time now life forever
exit
end
این IP SLA به آدرس 10.0.2.2 (آدرس IP اینترفیس wireguard200 روی R2) در VRF-B پینگ میزند.
R1 - IP SLA برای لینک 3 (WireGuard 300 در VRF-C)
configure terminal
ip sla 3
icmp-echo 10.0.3.2
vrf VRF-C
frequency 5
exit
!
ip sla schedule 3 start-time now life forever
exit
end
این IP SLA به آدرس 10.0.3.2 (آدرس IP اینترفیس wireguard300 روی R2) در VRF-C پینگ میزند.
R2 - IP SLA برای لینک 1 (WireGuard 100 در VRF-A)
configure terminal
ip sla 1
icmp-echo 10.0.1.1
vrf VRF-A
frequency 5
exit
!
ip sla schedule 1 start-time now life forever
exit
end
این IP SLA به آدرس 10.0.1.1 (آدرس IP اینترفیس wireguard100 روی R1) در VRF-A پینگ میزند.
R2 - IP SLA برای لینک 2 (WireGuard 200 در VRF-B)
configure terminal
ip sla 2
icmp-echo 10.0.2.1
vrf VRF-B
frequency 5
exit
!
ip sla schedule 2 start-time now life forever
exit
end
R2 - IP SLA برای لینک 3 (WireGuard 300 در VRF-C)
configure terminal
ip sla 3
icmp-echo 10.0.3.1
vrf VRF-C
frequency 5
exit
!
ip sla schedule 3 start-time now life forever
exit
end
نکته مهم: IP SLA باید در همان VRF که WireGuard در آن قرار دارد اجرا شود. این باعث میشود که IP SLA بتواند به آدرس IP اینترفیس WireGuard طرف مقابل دسترسی داشته باشد و وضعیت تونل را بهدرستی بررسی کند.
8) پیکربندی Track Objects
چرا: Track Objects وضعیت IP SLA ها را ردیابی میکنند و در صورت قطع شدن، Script های مربوطه را اجرا میکنند.
R1 - Track Objects پایه
configure terminal
track 10 ip sla 1 reachability
exit
!
track 20 ip sla 2 reachability
exit
!
track 30 ip sla 3 reachability
exit
end
این Track Objects وضعیت هر لینک را بهصورت جداگانه ردیابی میکنند.
9) پیکربندی Track List برای منطق Failover
چرا: برای پیادهسازی منطق Failover پیچیده (مثل “اگر لینک 1 و 2 هر دو قطع شدند”)، باید از Track List با منطق boolean استفاده کنیم.
R1 - Track List برای A (لینک 1 قطع است)
configure terminal
track 11 list boolean or
object 10 not
exit
!
track 1 list boolean and upscript script:TRACK1_UP downscript script:TRACK1_DOWN
object 10
exit
!
track 2 list boolean and upscript script:TRACK2_UP downscript script:TRACK2_DOWN
object 10 not
object 20
exit
!
track 3 list boolean and upscript script:TRACK3_UP downscript script:TRACK3_DOWN
object 10 not
object 20 not
object 30
exit
end
توضیح منطق Track:
Track 1: وقتی لینک 1 (object 10) Up است → Script TRACK1_UP اجرا میشود (A از لینک 1 استفاده میکند)
Track 2: وقتی لینک 1 قطع است (object 10 not) و لینک 2 Up است (object 20) → Script TRACK2_UP اجرا میشود (A از لینک 2 استفاده میکند)
Track 3: وقتی لینک 1 و 2 هر دو قطع هستند (object 10 not, object 20 not) و لینک 3 Up است (object 30) → Script TRACK3_UP اجرا میشود (A از لینک 3 استفاده میکند)
R1 - Track List برای B (لینک 2)
configure terminal
track 4 list boolean and upscript script:TRACK4_UP downscript script:TRACK4_DOWN
object 20
exit
!
track 5 list boolean and upscript script:TRACK5_UP downscript script:TRACK5_DOWN
object 20 not
object 30
exit
end
توضیح منطق Track:
Track 4: وقتی لینک 2 (object 20) Up است → Script TRACK4_UP اجرا میشود (B از لینک 2 استفاده میکند)
Track 5: وقتی لینک 2 قطع است (object 20 not) و لینک 3 Up است (object 30) → Script TRACK5_UP اجرا میشود (B از لینک 3 استفاده میکند)
R1 - Track List برای C (لینک 3)
configure terminal
track 6 list boolean and upscript script:TRACK6_UP downscript script:TRACK6_DOWN
object 30
exit
end
توضیح منطق Track:
Track 6: وقتی لینک 3 (object 30) Up است → Script TRACK6_UP اجرا میشود (C از لینک 3 استفاده میکند)
10) ایجاد Script های Track
چرا: Script ها در هنگام تغییر وضعیت Track اجرا میشوند و Route ها را بهصورت خودکار اضافه یا حذف میکنند.
R1 - Script TRACK1_UP (A از لینک 1)
این Script وقتی لینک 1 Up است اجرا میشود و Route VRF-A را از طریق لینک 1 تنظیم میکند:
enable
conf t
no ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
no ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
no ip route 1.1.1.0/24 ge5 vrf VRF-B nexthop-vrf VRF-A
no ip route 1.1.1.0/24 ge5 vrf VRF-C nexthop-vrf VRF-A
exit
end
این Script:
Route قبلی به شبکه کلاینت R2 (2.1.1.0/24) از طریق لینک 2 یا 3 را حذف میکند
Route جدید به شبکه کلاینت R2 از طریق لینک 1 را اضافه میکند
Route برگشت به شبکه کلاینت R1 (1.1.1.0/24) را از VRF-B و VRF-C حذف میکند (با اشاره به ge5 که interface کلاینت A است)
R1 - Script TRACK1_DOWN (لینک 1 قطع شد)
این Script وقتی لینک 1 قطع میشود اجرا میشود:
enable
conf t
no ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
exit
end
این Script فقط Route به شبکه کلاینت R2 از طریق لینک 1 را حذف میکند. Track 2 یا 3 سپس Route جدید و Route برگشت را اضافه میکنند.
R1 - Script TRACK2_UP (A از لینک 2)
این Script وقتی لینک 1 قطع است و لینک 2 Up است اجرا میشود:
enable
conf t
no ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
no ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
ip route 1.1.1.0/24 ge5 vrf VRF-B nexthop-vrf VRF-A
exit
end
این Script:
Route به شبکه کلاینت R2 (2.1.1.0/24) را از طریق لینک 2 (که در VRF-B است) تنظیم میکند
Route برگشت به شبکه کلاینت R1 (1.1.1.0/24) را در VRF-B اضافه میکند (با اشاره به ge5 که interface کلاینت A است)
R1 - Script TRACK2_DOWN
enable
conf t
no ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
no ip route 1.1.1.0/24 ge5 vrf VRF-B nexthop-vrf VRF-A
exit
end
این Script Route و Route برگشت را از VRF-B حذف میکند.
R1 - Script TRACK3_UP (A از لینک 3)
این Script وقتی لینک 1 و 2 هر دو قطع هستند و لینک 3 Up است اجرا میشود:
enable
conf t
no ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
no ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
ip route 1.1.1.0/24 ge5 vrf VRF-C nexthop-vrf VRF-A
exit
end
این Script:
Route به شبکه کلاینت R2 (2.1.1.0/24) را از طریق لینک 3 (که در VRF-C است) تنظیم میکند
Route برگشت به شبکه کلاینت R1 (1.1.1.0/24) را در VRF-C اضافه میکند (با اشاره به ge5 که interface کلاینت A است)
R1 - Script TRACK3_DOWN
enable
conf t
no ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
no ip route 1.1.1.0/24 ge5 vrf VRF-C nexthop-vrf VRF-A
exit
end
R1 - Script TRACK4_UP (B از لینک 2)
enable
conf t
no ip route 2.2.1.0/24 10.0.3.2 vrf VRF-B nexthop-vrf VRF-C
ip route 2.2.1.0/24 10.0.2.2 vrf VRF-B nexthop-vrf VRF-B
exit
end
R1 - Script TRACK4_DOWN
enable
conf t
no ip route 2.2.1.0/24 10.0.2.2 vrf VRF-B nexthop-vrf VRF-B
exit
end
R1 - Script TRACK5_UP (B از لینک 3)
enable
conf t
no ip route 2.2.1.0/24 10.0.2.2 vrf VRF-B nexthop-vrf VRF-B
ip route 2.2.1.0/24 10.0.3.2 vrf VRF-B nexthop-vrf VRF-C
ip route 1.2.1.0/24 ge6 vrf VRF-C nexthop-vrf VRF-B
exit
end
این Script Route به شبکه کلاینت R2 (2.2.1.0/24) را از طریق لینک 3 منتقل میکند و Route برگشت به شبکه کلاینت R1 (1.2.1.0/24) را در VRF-C اضافه میکند (با اشاره به ge6 که interface کلاینت B است).
R1 - Script TRACK5_DOWN
enable
conf t
no ip route 2.2.1.0/24 10.0.3.2 vrf VRF-B nexthop-vrf VRF-C
no ip route 1.2.1.0/24 ge6 vrf VRF-C nexthop-vrf VRF-B
exit
end
R1 - Script TRACK6_UP (C از لینک 3)
enable
conf t
ip route 2.3.1.0/24 10.0.3.2 vrf VRF-C nexthop-vrf VRF-C
exit
end
R1 - Script TRACK6_DOWN
enable
conf t
no ip route 2.3.1.0/24 10.0.3.2 vrf VRF-C nexthop-vrf VRF-C
exit
end
11) ثبت Script ها در سیستم
چرا: Script ها باید در سیستم ثبت شوند تا Track Objects بتوانند به آنها ارجاع دهند و در زمان تغییر وضعیت، دستورات را اجرا کنند.
در روتر SooDar، برای مدیریت Script ها از دستورات زیر استفاده میشود:
- edit script:scriptname
برای ایجاد یا ویرایش یک Script. این دستور محیط ویرایشگر nano را باز میکند تا بتوانید دستورات را وارد یا ویرایش کنید.
- more script:scriptname
برای نمایش محتوای یک Script موجود.
- del script:scriptname
برای حذف یک Script از سیستم.
- dir script:
برای نمایش لیست تمام Script های موجود در سیستم.
R1 - ثبت Script TRACK1_UP
برای ثبت Script TRACK1_UP، دستور زیر را اجرا کنید:
edit script:TRACK1_UP
سپس در محیط nano که باز میشود، محتوای زیر را paste کنید:
enable
conf t
no ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
no ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
no ip route 1.1.1.0/24 ge5 vrf VRF-B nexthop-vrf VRF-A
no ip route 1.1.1.0/24 ge5 vrf VRF-C nexthop-vrf VRF-A
exit
end
برای ذخیره و خروج از nano: Ctrl+X، سپس Y، و Enter.
R1 - ثبت Script TRACK1_DOWN
edit script:TRACK1_DOWN
محتوای Script:
enable
conf t
no ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
exit
end
R1 - ثبت Script TRACK2_UP
edit script:TRACK2_UP
محتوای Script:
enable
conf t
no ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
no ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
ip route 1.1.1.0/24 ge5 vrf VRF-B nexthop-vrf VRF-A
exit
end
R1 - ثبت Script TRACK2_DOWN
edit script:TRACK2_DOWN
محتوای Script:
enable
conf t
no ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
no ip route 1.1.1.0/24 ge5 vrf VRF-B nexthop-vrf VRF-A
exit
end
R1 - ثبت Script TRACK3_UP
edit script:TRACK3_UP
محتوای Script:
enable
conf t
no ip route 2.1.1.0/24 10.0.1.2 vrf VRF-A nexthop-vrf VRF-A
no ip route 2.1.1.0/24 10.0.2.2 vrf VRF-A nexthop-vrf VRF-B
ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
ip route 1.1.1.0/24 ge5 vrf VRF-C nexthop-vrf VRF-A
exit
end
R1 - ثبت Script TRACK3_DOWN
edit script:TRACK3_DOWN
محتوای Script:
enable
conf t
no ip route 2.1.1.0/24 10.0.3.2 vrf VRF-A nexthop-vrf VRF-C
no ip route 1.1.1.0/24 ge5 vrf VRF-C nexthop-vrf VRF-A
exit
end
R1 - ثبت Script TRACK4_UP
edit script:TRACK4_UP
محتوای Script:
enable
conf t
no ip route 2.2.1.0/24 10.0.3.2 vrf VRF-B nexthop-vrf VRF-C
ip route 2.2.1.0/24 10.0.2.2 vrf VRF-B nexthop-vrf VRF-B
exit
end
R1 - ثبت Script TRACK4_DOWN
edit script:TRACK4_DOWN
محتوای Script:
enable
conf t
no ip route 2.2.1.0/24 10.0.2.2 vrf VRF-B nexthop-vrf VRF-B
exit
end
R1 - ثبت Script TRACK5_UP
edit script:TRACK5_UP
محتوای Script:
enable
conf t
no ip route 2.2.1.0/24 10.0.2.2 vrf VRF-B nexthop-vrf VRF-B
ip route 2.2.1.0/24 10.0.3.2 vrf VRF-B nexthop-vrf VRF-C
ip route 1.2.1.0/24 ge6 vrf VRF-C nexthop-vrf VRF-B
exit
end
R1 - ثبت Script TRACK5_DOWN
edit script:TRACK5_DOWN
محتوای Script:
enable
conf t
no ip route 2.2.1.0/24 10.0.3.2 vrf VRF-B nexthop-vrf VRF-C
no ip route 1.2.1.0/24 ge6 vrf VRF-C nexthop-vrf VRF-B
exit
end
R1 - ثبت Script TRACK6_UP
edit script:TRACK6_UP
محتوای Script:
enable
conf t
no ip route 2.3.1.0/24 10.0.2.2 vrf VRF-C nexthop-vrf VRF-B
ip route 2.3.1.0/24 10.0.3.2 vrf VRF-C nexthop-vrf VRF-C
exit
end
R1 - ثبت Script TRACK6_DOWN
edit script:TRACK6_DOWN
محتوای Script:
enable
conf t
no ip route 2.3.1.0/24 10.0.3.2 vrf VRF-C nexthop-vrf VRF-C
exit
end
بررسی Script های ثبت شده
بعد از ثبت تمام Script ها، میتوانید لیست آنها را مشاهده کنید:
dir script:
برای نمایش محتوای یک Script:
more script:TRACK1_UP
نکته مهم: تمام Script های بالا را برای R2 نیز باید ثبت کنید، با این تفاوت که شبکههای مقصد معکوس میشوند (به جای 2.x.1.0/24 از 1.x.1.0/24 استفاده کنید و Route های برگشت را برعکس تنظیم کنید).
صحتسنجی و تست
1) بررسی وضعیت WireGuard
برای بررسی وضعیت لینکهای WireGuard:
show interface wireguard100
show interface wireguard200
show interface wireguard300
تمام اینترفیسهای WireGuard باید Up باشند و Peer ها متصل باشند.
2) بررسی وضعیت IP SLA
برای بررسی وضعیت IP SLA ها:
show ip sla statistics 1
show ip sla statistics 2
show ip sla statistics 3
برای جزئیات بیشتر از IP SLA:
show ip sla statistics 1 details
show ip sla configuration 1
تمام IP SLA ها باید در وضعیت “Success” یا “reachable” باشند.
3) بررسی وضعیت Track
برای بررسی وضعیت Track Objects:
show track 1
show track 2
show track 3
show track 4
show track 5
show track 6
همچنین میتوانید وضعیت Track Objects پایه را بررسی کنید:
show track 10
show track 20
show track 30
Track 1، 4 و 6 باید Up باشند (لینکهای 1، 2 و 3 فعال). خروجی show track شامل وضعیت فعلی (Up/Down)، Object ها و Script های متصل است.
4) بررسی Routing Table
برای بررسی Route های نصب شده:
R1 - VRF-A
show ip route vrf VRF-A
باید Route 10.1.2.0/24 از طریق 10.0.1.2 (لینک 1) مشاهده شود.
R1 - VRF-B
show ip route vrf VRF-B
باید Route 10.2.2.0/24 از طریق 10.0.2.2 (لینک 2) مشاهده شود.
R1 - VRF-C
show ip route vrf VRF-C
باید Route 10.3.2.0/24 از طریق 10.0.3.2 (لینک 3) مشاهده شود.
5) تست Failover - قطع لینک 1
برای تست Failover، میتوانید لینک WireGuard 1 را shutdown کنید:
configure terminal
interface wireguard100
shutdown
exit
end
پس از چند ثانیه:
IP SLA 1 باید Fail شود
Track 10 باید Down شود
Track 1 باید Down شود و Script TRACK1_DOWN اجرا شود
Track 2 باید Up شود و Script TRACK2_UP اجرا شود
Route VRF-A باید از طریق
10.0.2.2(لینک 2) باشد
برای بررسی:
show ip route vrf VRF-A
باید Route 10.1.2.0/24 از طریق 10.0.2.2 با (vrf VRF-B) مشاهده شود (Route Leakage).
6) تست Failover - برگشت لینک 1
برای برگرداندن لینک 1:
configure terminal
interface wireguard100
no shutdown
exit
end
پس از چند ثانیه:
IP SLA 1 باید Success شود
Track 10 باید Up شود
Track 1 باید Up شود و Script TRACK1_UP اجرا شود
Track 2 باید Down شود
Route VRF-A باید به
10.0.1.2(لینک 1) برگردد
7) تست Failover - قطع لینک 2
برای تست Failover لینک 2:
configure terminal
interface wireguard200
shutdown
exit
end
پس از چند ثانیه:
Route VRF-B باید از طریق
10.0.3.2(لینک 3) باشدRoute VRF-A (اگر قبلاً از لینک 2 استفاده میکرد) باید از طریق لینک 3 باشد
8) تست اتصال با Ping
برای تست اتصال بین شبکهها:
ping vrf VRF-A 10.1.2.1
ping vrf VRF-B 10.2.2.1
ping vrf VRF-C 10.3.2.1
تمام Ping ها باید موفق باشند.
نکته: در SooDar، فرمت صحیح ping با VRF این است: ping vrf <VRF-NAME> <IP> [count <number>]
9) تست Route Leakage
برای بررسی Route Leakage:
show ip route vrf VRF-A
اگر VRF-A از لینک 2 یا 3 استفاده میکند، باید (vrf VRF-B) یا (vrf VRF-C) در Route مشاهده شود.
نکات مهم
1) Route Leakage با nexthop-vrf
وقتی یک VRF میخواهد از اینترفیس WireGuard در VRF دیگری استفاده کند، باید از nexthop-vrf استفاده شود. این باعث میشود Route Leakage بین VRF ها انجام شود.
2) منطق Track List
Track List با منطق boolean امکان پیادهسازی منطق پیچیده Failover را فراهم میکند. استفاده از not برای تشخیص قطع بودن لینک و and برای ترکیب شرایط ضروری است.
3) اولویت Script ها
Script های Track باید Route های قبلی را حذف کنند و سپس Route جدید را اضافه کنند تا از Conflict جلوگیری شود.
4) Metric در Route ها
میتوانید از Metric در Route ها استفاده کنید تا اولویت Route ها مشخص شود. Route با Metric کمتر اولویت بیشتری دارد.
جمعبندی
در این کارگاه، نحوه پیادهسازی یک سیستم Failover و Load Balancing پیشرفته با استفاده از ترکیب Track، WireGuard، VRF و Scripting در روتر SooDar را فرا گرفتید.
مزایای کلیدی این روش:
Failover خودکار: در صورت قطع لینک، ترافیک بهصورت خودکار به لینک جایگزین منتقل میشود
Load Balancing: هر شبکه از لینک اختصاصی خود استفاده میکند
Route Leakage: امکان استفاده از لینکهای VRF های دیگر در صورت نیاز
قابلیت Scripting: پیکربندیهای پیچیده با Script انجام میشوند
پایش مداوم: IP SLA وضعیت لینکها را بهصورت مداوم بررسی میکند
این روش برای شبکههای سازمانی که نیاز به ارتباط پایدار و امن بین سایتهای مختلف دارند، بسیار مناسب است.