Routing
Routing
What is IP-Layer Routing?
פורטיגייט בתצורת NAT נמצא בשכבה השלישית במודל ה OSI.
Route Lookup
בכל סשן הפורטיגייט נבצע חיפוש בטבלת הניתוב:
- לפאקטה הראושנה שנשלחת על ידי יוזם הסשן.
- לפאקטה הראשונה שנשלחת על ידי המגיב.
הפרטים האלו נרשמים לתוך טבלת הסשנים.
שאר הפאקטות יעברו בהתאם לפרטים בטבלת הסשנים (ולא בטלת הניתוב). גם אם היה שינוי בטבלת הניתוב.
לפעמים יש דברים חרגים: אם היה שינוי בטבלת הניתוב, פורטיגייט יסיר את מידע הניתוב לסשן ויבצע חיפוש נוסף בטבלת הניתוב.
Static Routes
סטטיק ראוט מוגדר בצרוה ידנית על ידי האדמין
מבוצעת התאמה פשוטה של פאקטות לניתוב לפי כתובת ה IP אליה נשלחה הפאקטה.
אפשר להגדיר גם Distance ו Priority
אין צורך להגדיר Static Routes בסאבנטים שלפורטיגייט יש גישה ישירה אליהן בשכבה שנייה.
Static Routes With Names Addresses
אפשר להשתמש באוייבט מסוג FQDN או IP/Netmask בהגדרת ניתוב.
קודם כל צריך לאפשר Static Route Configuration בהגדרות הפירוול.
Dynamic Routes
פורטיגייט מגדיר בצורה אוטומטית ניתובים
פורטיגייט תומך ב RIP,OSPF,BGP ו IS-IS.
ניתובים שמתגלים מתווספים בצורה אוטומטית לטבלת הניתוב של הפורטיגייטולכן צריך לוודא שהראוטרים "השכנים" אמינים ומאובטחים.
כדי לראות את הגדרת הפרוטוקלים יש לאפשר את פיצ'ר ה Advanced Routing.
Policy-Based Routes
ברשתות קטנות בדרך לל משתמשים ב Static Routes, הם בנוסף פשוטים יותר.
פוליסי Routes יותר גמישים.
ברגע ש Policy Route מוגדר עם Action שנקרא Forward Traffic יהיה לו יותר עדיפות על ניתובים סטאטיים ודינאמיי. - לכן במידה ופאקטה מתאימה ל Policy ROute הפורטיגייט יעקוף את החיפוש בטבת הניתוב.
כמו ב Static Routes צריך שגם Policy Routes יהיו תיקניים, אלה דברים שאפשר לרשום בחוק:
פרוטוקול
כתובת מקור
פורט מקור
פורט יעד
סוג שירות ToS Bits.
הפאקטה חייבת להיות תואמת לפוליסי, חכו אם לא מחיבים את כל ההגדרות בפוליסי ניתן להשאיר אותן ריקות.
פוליסי Routes מתוחזקים בטבלת ניתוב נפרדת על הפורטיגייט ויש להן עדיפות על טבלאות ניתוב רגילות.
Policy-Based Routing Actions
כאשר פאקטה מתאימה ל Policy Route ייתצעו אחת משתי הפעולות האלו:
- יעביר את הטראפיק ל Interface שצויין ויעקוף את טבלת הניתוב
- או יפסיק לבדוק את ה Policy Route כך שהפאקטה תנותב לפי טבלת הניתוב.
יש לזוכר: אם ה Polcy Route נבצע ניתוב ל Interface הניתוב ל Interface צריך להיות פעיל, במדיה ולא - הוא לא יעבוד.
Internet Service Routing
אם לדוגמא צריך לבצע ניתוב של תקשורת לדוגמא של AWS או מיקרוסופט בדרך כלל צריך ליצור ניתוב סטטי ולעדכן את כתובות ה IP בכל פעם.
בפורטיגייט נתי ולהשתמש במנגנון ה ISDB.
למרות ש ISDB מוגדר כמו Static Routes - ה ISDB הוא בעצם Polciy Route ויהיה לו עדיפות על פני כל סוג שהוא של ניתוב בטבלת הניתוב.
ניתובי ISDB מתוופים לטבלת ה Policy Routing.
IPv6 Routing
כדי לאפשר הגדרת ניתוב לכתובות Ipv6 ב GUI צריך להפעיל את פיצ'ר ה IPv6.
לאחר מכן ניתן לייצר Static Routes ו Policy Routes עם כתובות IPv6.
בנוסף יהיה ניתן להגדיר באמצעות ה GUI פרוטוקול ניתוב דינאמי.
Knowledge Check
Q: Whice objects can you use to create satatic routes ?
A: ISDB Objects.
Q: When the Stop policy routing action is used in a policy route, which behavior is expected ?
A: FortiGate routes the traffic based on the regular routing table.
Routing Table Monitor
המוניטור של טבלת הניתוב ב GUI מציג ניתובים פעילים.
חוץ מ Static ROutes ניתן לראות גם:
סאבנטים שמחוברים ישיאות לפורטיגייט ומשוייכים ל interface עם סטטוס connected תחת עמודת הסוג type. - כדי שניתובים מסוג connected יוצגובמוניטור ה interface ריך להיות פעיל.
ניתן לראות גם Dynamic Routes - ברשתות גדולות הפורטיגייט יקבל ניתובים גם מראוטרים אחרים לדוגמא על ידי פרוטוקלים של BGP ו OSPF. תחת עמודת ה Type יהיה רשום באמצעות איזה פרוטוקול התווסף הניתוב.
ניתובים שלא מוצגים:
ניתובים לא פעילים - אם ה Interface למטה או שה Gateway נחשב ל"מת" הניתוב ייחשב ללא פעיל ולא יתווסף לרשימת הניתוב.
ניתובים בהמתנה / Standby Routes - אלה ניתובים כפולים עם מרחק גבוהה יותר.
ניתובים מסוג Policy Routes מוצגים בטבלה נפרדת.
ניתובים מסוג ISDB Routes נוספים גם לטבלת ה Polciy Roytes תחת ה Policy route monitor.
Routing Monitor
ממשק ה Routing Monitor מאפשר מאפשר מבט מורחב.
הפיצ'ר בודק גם טבלאות ניתוב של Policy Routes גם טבלאות ניתוב רגילות.
אם Route מתאים ל Policy Route אז המשתמש/אדמין יועבר לעמוד ה Policy Route ב GUI.
תחת Route Lookup אפשר לפרט את כתובת היעד, פורט היעד, כתובת ה IP השולחת, פרוטוקול, ואת Interface המקור.
Route Attributes
לכל ניתוב בטבלת הניתוב יש מספר Attributes (תכונות) עם ערך מסויים.
עמודת Network - נציג את כתובת ה IP של היעד ו Subnet Mask.
עמודת ה Interface - נציגה את ה Interface שבאמצעותו תשלח הפאקטה.
עמודת Dostance
עמודת Metric
עמודת Priority.
כדי להציג את טבל תהניתוב יש לרשום את הפקודה הבאה
get router info routing-table all
Distance
ה Distance הוא המסר שאומר איזה ניתוב עדיף לשימוש בשביל היעד המסויים.
אם יש שני ניתובים עם אותו יעד, הניתוב עם ה Distance הנמוך יותר יחשב כעדיף (Active) והניתוב עם ה Distance הגבוהה יותר יהיה במצב Standby ולא יהיה מותקן בטבלת הניתוב.
כברירת מחדל , ניתבוים שנלמדים על ידי פרוטוקול RIP יהיה עם Distance גבוהה יותר מאשר ניתובים שנלמדים על ידי פרוטוקול OSPF. פרוטוקול OSPF נחשב יותר מדויק מ RIP.
הערכים הבאים הם ה Default Distances בפורטיגייט:
• 0 - directly connected
• 5 - DHCP gateway
• 10 - static routes
• 20 - external BGP (EBGP) routes
• 110 - OSPF routes
• 120 - RIP routes
• 200 - internal BGP (IBGP) routes
Metric
עמודת ה Metric קובעת איזה ניתוב הכי טוב כאשר בודקים Dynamic Routes.
אם לשני ניתובים יש את אותו Distance אז ערך ה Metric ישמש כדי לדעת באיזה ניתוב לבחור.
הניתוב עם ערך ה Metric הנמוך ביותר ייבחר לטובת ביצוע הניתוב.
ערך ה Metric נקבע על ידי הפרוטוקול, לדוגמא בפרוטוקול RIP הערך ייקבע לפי מספר הקפיצות ( כמות הראוטרים שהפאקטה תעבור עד שתגיע ליעדה).
בםרוטוקול OSPF נשתמש ב cost שמסמך כמה רוחב פס יש לחיבור/קישור.
Priority
ערך ה Priority נמצא בשימוש ב Static Routes כדי להגיד איזה ניתוב הכי עדיף כאשר יש ניתובים עם אותו Distance.
ניתובים עם ערך Prority נמוך יותר תמיד יהיו עדיפים.
ערך ה Priority נמצא בשימוש רק ב Static Routes ומוגדר תחת ה Advanced OPtions ב GUI.
כברירית מחדל ערך ה Prority יהיה 0.
ערך ה Priority מוצג תחת הגדרת ה Static Route ובטבלת הניתוב ב CLI.
Knowledge Check

ECMP
מה קורה כאשר לשני ניתובים או יותר יש את אותם ערכים, לאיזה ניתוב הפאקטה תועבר ?
כל הניתובים נמצאים בטבלת הניתוב והפורטיגייט יבצע Load Balancing באמצעות כל הניתובים
פיצ'ר זה נקרא ECMP - equal cost multi-path.
הניתובים יכולים להיחשב בשביל ECMP כאשר הערכים הבאים יהיו זהים:
- Destination Subnet
- Distance
- Metric
- Priority
ECMP Methods
פיצ'ר ה ECMP ישתמש באחת מארבע השיטות הבאות:
שיטת Source IP (ברירת מחדל) - סשנים מאותה כתובת מקור IP ישתמשו באותו ניתוב.
שיטת Source-destination IP - סשנים עם אותה כתובת מקור ואותה כתובת יעד ישתמשו באותו ניתוב.
שיטת Weighted - הפורטיגיט נפיץ סשנים עם כתובות יעד שונות על ידי יצירת ערכים רדנומליים כדי לזהות באיזה ניתוב לבחור. ההסתברות של בחירה בניתוב אחד על פני ניתוב אחר מבוסס על ערך המשקל של הניתוב הוא ה Interface, ערכים עם משקל (Weight) יותר גבוהה הם אלו שייבחרו.
שיטת Usage/Spilover - בשיטה זו ייתבצע שימוש באותו ניתוב עד שיגיע ל Threshold מסויים ולאחר מכן ייתבצע שימוש בניתוב הזמין הבא.
אם אחד מניתובי ה ECMP נכשל ומוסר מטבלת הניתוב התעבורה תנותב דרך הניתובים הנותרים.
אין צורך בהגדרות מסויימות לטובת Route failover.
Configuring ECMP
הפורטיגייט משתמש בשיטת ה Source-IP-Based כברירת מחדל.
אפשר לשנות את הגדרה זו באמצעות ה CLI.
בשיטת ה Spilover צריך לבצע הגדרות נוספות ברמת Interface.
בשיטת ה Weight מריך להגדיר ערכי Weight ל Interface או לניתובים.
ניתן לבצע את הגדרות אלה באמצעות ממשק ה CLI.

ECMP Example
בדוגמא הזו, הניתובים ל 10.0.4.0 זהים, אם פורט1 ייפול אז העתבורה תעבור דרך פורט2.
פיצ'ר ה ECMP מאפשר תחזוקה של מספר קישורים/לינקים לאותו יעד ומאפשר failover מובנה.
אפשר להגדיר את שיטה זו בעל רשת שיש לה רוחס פס גבוהה.
כאשר מבצעים ECMP זה מאפשר לבצע קיבוץ Aggregate של מספר לינקים/קישורים ולבצע load balancing.
כאשר מגדירים ECMP צריך שחוקי ה הפירוול יהיו במקום וייאפשרו תעבורה לכל ה Interfaceים
למרות שניתן להשתמש ב ECMP גם ל WAN, יהיה יותר כדאי ונוח להשתמש ב SD-WAN .

Knowledge Check

RPF
לפעמים פאקטות נופלות בעקבות סיבות הקשורות לניתוב ואבטחה.
פיצ'ר ה RPF מגן על הפורטיגייט ועל הרשת מפני מתקפות IP Spoofing .
ה RPF בודק אם יש ניתוב חזרה לפאקטת המקור.
הבדיקה הזו נעשית לפאקטה הראשונה בכל סשן חדש.
יש שתי שיטות RPF:
שיטת ה loose
שיטת ה strict.
RPF Checking
בתרחיש הבא התעבורה שמגיע ל Wan1 מתקבלת בגלל שהגדרת ה Default ROute נכונה בשביל ניתוב חזרה לכתובת המקור.
אבל יש שני Interfaceho שלא מנתבים חלק מהתעבורה הנכנסת והם Port1 ו Wan2.
פורט1 לא מנתב את התעבורה מכיוון שהסאבנט של יוזר C הוא 10.0.4.0/24 ואין ניתובים פעילים בשביל הסאבנט בפורט1 ולכן התעבורה הנכנסת נופלת בגלל ה RPF Check.
למרות שפורט Wan2 מחובר פיזי לאינטרנט הכתבות היחידות שתקינות עבור כתובת המקור והיעד הן 10.0.2.0/24 לכן תעבורה נכנסה מכל מקום אחר תיכשל בבדיקת ה RPF והפאקטות ייפלו (dropped)

RPF Checking (contd)
אז איך אפשר לפתור את הבעיה שהצגנו בחלק הקודם?
נוסיף Static Route עם הפרטים הבאים 10.0.4.0/24 דרך Port1.
עכשיו שהפורטיגייט יבצע את בדיקת ה RPF ליוזר C הוא ייראה שיש ניתוב פעיל דרך פורט1 והפאקטה תתקבל.
הבעיה השנייה תיפתר גם על ידי הוספת Static Route ל WAN2 שהוא יהיה Default Routeוצריך שיהיה לו את אותו ערך Distance כמו שיש לניתוב של WAN1. כך נוודא ששני הניתוהים פעילים בטבלת הניתוב.
לשני ניתובים אלו אפשר שיהיה Priority שונה אך חייב שיהיה להם את אותו Distance כדי שיהיו פעילים.
התמונה מציגה את שני הניתובים עם אותו מרחק Distance אבל עם עדיפויות Priority שונים
ניתוב אחד יהיה הכי טוב (זה עם ה Priority הנמוך) אבל שניהם פעילים.
בניתוב הכי טוב יהיה זה שדרכו תצא תעבורה החוצה - אבל עדיין שניהם יכולים לקבל בקשות נכנסות בלי להיכשל בבדיקת ה RPF

RPF Methods
הפורטיגייט יכול לאכוף RPF בשתי צורות Loose ו Strict.
מצב Loose - הפאקטה מאושרת כל עוד יש ניתוב פעיל אחד לכתובת המקור דרך ה Incoming Interface.
במצב Strict - הפאקטה מאופשרת לעבור רק במידה וקיים Best Route לכתובת המקור דרך ה Incoming Interface.
אפשר לבטל את בדיקת ה RPF בשתי צורות.
אם מאפשרים ניתוב אסימטרי לכל המערכת. - צורה זו מורידה את רמת האבטחה של הרשת ופיצ'רים כמו IPS ו Antivirus יהפכו להיות לא אפקטיביים.
לכן, אם צריך לבטל את בידקת ה RPF ניתן לבצע זאת ברמת ה Interface על ידי הפקודות בתמונה.

Loose RPF Example
ש