14 באוג׳ 2011

IPSEC IOS Configuration for Cisco Client Ver 5.x

שלום לכולם,
הנושא שרציתי לשתף איתכם הפעם אלו הגדרות של IPSEC על גבי נתבי סיסקו,
לי באופן אישי קרה שהסתכלתי על הגדרות של IPSEC והצפנה בכלל ולא הבנתי מה כל מונח אומר,או איפה משתמשים בכל דבר והדבר הכי חשוב זה איך אנחנו משלבים את הכל ביחד...
אז ברצוני להראות לכם פה דוגמא של הגדרות IPSEC עבור קליינטים שמתחברים מרחוק (עם cisco vpn client),
לי זה עשה סדר בראש.. אני מקווה שגם לכם זה ייעשה...
הדוגמא המצורפת כאן היא דוגמא לקליינט מרוחק שמבצע התקשרות VPN על גבי האינטרנט,
בו בזמן שהוא מתחבר הוא מבצע הצפנה של התעבורה אשר עוברת בינו לבין רשת היעד,

להלן תמונה אשר ממחישה את תצורת החיבור:



להלן ההגדרות של ציוד הסיסקו אשר אמור לבצע טרמינציה לקליינטים שמנסים להגיע אל רשת ה-LAN אשר נמצאת מאחורי הנתב:


IPSEC Configurations – with Cisco Client 

  1.    create 2 groups in AAA:
aaa authentication login vpn_auth local
aaa authorization network vpn_auth local

  2.    Create ISAKMP Policy  (order matters first one takes over):
crypto isakmp policy 1 ----- Policy for ISAKMP
 encr 3des ---- Encryption Method
 authentication pre-share ---- Authentication Method
 group 2 ----- DH Group

  3.    Create ISAKMP client configuration:
crypto isakmp client configuration group IPSEC ----- Group that configured on client VPN
 key 123456 ---- Pre-Shared key for group authentication
 dns 194.90.1.5 212.143.212.143
 pool VPN --- DHCP Pool for client's requests
 acl 100----- define the networks the users can reach
 max-users 5 ----- Max Allowed users to connect simultaneity
 netmask 255.255.255.0

  4.    Create ISAKMP Profile PHASE I:
crypto isakmp profile ike-profile-1 ------------à Profile Name
   match identity group IPSEC ------à match to the group configuration
   client authentication list vpn_auth --à Match to the AAA Group
   isakmp authorization list vpn_auth --à Match to the AAA Group
   client configuration address respond -à Responds to client's requests
   virtual-template 2 ---à Attached to virtual template.

  5.    Create Transform-Set PHASE II:
crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac - Yellow'd is the name of the T-S

  6.    Create IPSEC Profile And attach ISAKMP and and transport set:
crypto ipsec profile IPSEC_Profile1 ----- Create new ipsec  profile
 set transform-set ESP-3DES-SHA ------  Configured above
 set isakmp-profile ike-profile-1-------  Configured above

  7.    Create Virtual-Template to attached encryption :
interface Virtual-Template2 type tunnel ------àNew Interface
 ip unnumbered Dialer1 --- Attached to a dialer interface
 no ip unreachables
 tunnel mode ipsec ipv4 --- Tunnel mode
 tunnel protection ipsec profile IPSEC_Profile1 --- Attache encryption of tunnel to virtual template

  8.    Configure Virtual-Template to initiate users requests:
interface Virtual-Template3 ------New Interface
 ip unnumbered Dialer1 ------ Attached to a dialer interface
 no ip unreachables
 ip nat inside ---à Applies NAT to interface
 ip virtual-reassembly
 peer default ip address pool VPN ------Applies DHCP to clients
 no keepalive
 ppp encrypt mppe auto --- Encryption Apply
 ppp authentication pap chap


9.    Create DHCP Pool for users requests:

ip local pool VPN 192.168.200.10 192.168.200.20 --- DHCP Pool for clients

  10.     Create Access-list that define the networks the users can reach:

access-list 100 permit ip 172.30.0.0 0.0.255.255 any ------ Attached Above
access-list 100 permit ip 4.4.4.0 0.0.0.255 any ------ Attached Above
access-list 100 permit ip 192.168.15.0 0.0.0.255 any ------ Attached Above
access-list 100 permit ip 172.16.5.0 0.0.0.255 any ------ Attached Above


 מקווה שעזרתי,
אבי













7 בינו׳ 2011

Routing Protocols - EIGRP




שלום לכולם,
מאמר זה הולך לדבר על פרוטוקול הניתוב EIGRP,
התמונה ממחישה EIGRP על גבי ענן Frame-Relay.
מאמר זה הוא הראשון בסדרה הקשורה לפרוטוקולי הניתוב השונים והם OSPF, BGP, RIP.

אז נתחיל..
כיום קיימים מספר סוגים של פרוטוקלי ניתוב אשר בשימוש והם בעצם הכותרת לפרוטוקולים עצמם והם:

Distance Vector:
פרוטוקולים הנמנים תחת כותרת זו הם BGP,IGRP, RIPv1/v2 - (זהו הפרוטוקול אשר נמצא בשימוש האינטרנט) וכמובן הפרוטוקול שעליו אנו מדברים והוא EIGRP, סיסקו מכנה את EIGRP כפרוטוקול Hybrid וזאת כיוון שקיימים בו תכונות של של פרוטוקולים מסוג Link-State (נרחיב על כך בהמשך..).
פרוטוקולים מסוג DV הם פרוטוקולים אשר מתבססים על "שמועות" ומה זה אומר בעצם..
פרוטוקולים אלו בעצם מעבירים את טבלת הניתוב אל הנתבים השכנים.
מידע בנוגע לטבלת הניתוב נשלח בכל פרק זמן קבוע (בהתאם לפרוטוקול עצמו), במצב זה הנתב מכיר אך ורק את הרשתות שפורסמו אליו ולא מכיר את הרשת כולה.
כל פרוטוקול משתמש בשיטת חישוב הדרך אל היעד בצורה שונה ובכך בעצם מושפעת בחירת הנתיב הטוב ביותר  (Best Route).
לדוגמא פרוטוקול RIP משתמש בשיטת Hop Count בעצם כמה יעדים הוא עובר עד להגעה לנתיב היעד.
פרוטוקול EIGRP לעומת זאת משתמש בחישוב של מספר פרמטרים עליהם נרחיב בהמשך..

Link-State:
פרוטוקולים הנמנים בקבוצה זו הם OSPF, IS-IS.
פרוטוקולים אלו משתמשים בשיטה שונה לגמריי מזו של ה-DV, בשיטה זו כל נתב מכיר את כל היעדים לכל נתב ונתב ברשת ובכך מכיר את כלל הטופולוגיה וע"י כך הוא יודע לבחור את הנתיב הטוב ביותר לרשת היעד.
היתרון בשימוש בשיטה זו הוא מהירות התגובה בעת נפילה של נתב באמצע הדרך.
כיוון שהנתב מכיר את כל הרשתות אל היעד הוא יודע להחליף ניתוב בצורה מהירה מאוד ולהתאושש מנפילה.
פרוטוקולים אלו משתמשים בחישוב רוחב הפס (Cost) על מנת למצוא את הנתיב הטוב ביותר אל היעד (ארחיב על פרוטוקולים אלו במאמר הבא).

מכאן אנו מגיעים לחלוקת הפרוטוקולים לקבוצות וקיימות 2 קבוצות אשר כוללות את כלל הפרוטוקולים והם:


Interior Gateway Protocol - IGP
פרוטוקולים אלו הם בעצם פרוטוקולים אשר משמשים לניתוב פנים ארגוני, משמע הם מחזיקים טבלאות לא גדולות (יחסית) והם מודדים מרחק מנקודה לנקודה בהתאם לפרמטרים שצויינו לעיל, דוגמא לפרוטוקולים אלו הם, OSPF,RIP וכמובן EIGRP.

Exterior Gateway Protocol - EGP
פרוטוקולים אלו אינם משמשים למדידת מרחק מנקודה לנקודה אלא מאפשרים להשפיע על נקודת הכניסה והיציאה מהרשת, פרוטוקולים אלו משמשים את ספקיות האינטרנט על מנת להעביר תעבורה בינהן או לחילופין בין ארגונים גדולים לדוגמא - BGP.

** גם EGP מתחלק ל2 סוגים של תעבורה:
* האחד הוא Transit AS - שהוא בעצם משמש ספקיות אינטרנט בדר"כ.
* או לחילופין Stub AS אשר בדר"כ משמש ארגונים גדולים אשר לא מעבירים דרכם את תעבורת האינטרנט
  אלא משתמשים בו לצרכי הארגון בין הסניפים.

מכאן נמשיך לפרוטוקול שלשמו המאמר - EIGRP

* כפי שציינתי פרוקוטול EIGRP הוא פרוטוקול אשר נמנה עם פרוטוקולי ה-Distance Vector.
  בדומה לפרוטוקול OSPF גם EIGRP ניחן בזמן התכנסות מאוד גבוה ומאפשר חזרה מהירה מקריסה.
  החסרון היחיד של פרוטוקול זה שהוא שייך לסיסקו ולכן ניתן להשתמש בו רק על ציודים של סיסקו.
  מה שסיסקו עשו הם בעצם לקחו את פרוטוקול ה-IGRP ושיפרו אותו ובכך בעצם הפכו אותו לייחודי לסיסקו.

* פרוטוקול זה מוגדר לעבוד בשכבת התעבורה (4) במודל ה-OSI (ראה מאמר קודם),
מספר הפרוטוקול ID שלו בתוך ה-IP Header הוא 88, בנוסף EIGRP מוגדר כפרוטקול אמין Connection Oriented כיוון שהוא מכיל מנגנון ACK משלו, הוא אינו מתבסס על TCP

* EIGRP עובד בכתובת Multicast 224.0.0.10 ליצירת קשרי שכנות ושמירה עליהם, מה שהופך אותו ליעיל ביותר בעת פרסום עדכונים או הקמת קשרי שכנות כיוון שהוא אינו עושה זאת בצורת Broadcast בניגוד לפרוטוקולים אחרים דוגמת RIPV1, יתרון נוסף שקיים לEIGRP הוא שליחת העדכונים רק במצב שקרה משהו לדוגמא רשת נפלה, או שנוסף ניתוב - רק אז EIGRP מוציא עדכון לשכנים מה שנקרא Triggered Updates.

* נוסף על כך פרוטוקול זה מאפשר לבטל את פונקציית ה-Auto Summary ולכן EIGRP
הוא פרוטוקול מסוג Classless משמע הוא מפרסם את ה SM המקורי שהגיע ובכך מאפשר לנו להשתמש ב-VLSM.
במילים פשוטות אם היינו מפרסמים רשת עם SM של 27/ היינו רואים את ה-MASK המקורי ולא את זה של הרשת עצמה.

בקצרה אספר על IGRP:
נתחיל מכך שהוא אינו בשימוש בארגונים יותר, בניגוד ל-EIGRP לא ניתן לבטל את אופציית ה- Auto Summary מה שהופך את IGRP לפרוטוקול מסוג Classfull משמע הוא מפרסם את ה-Class המקורי של הניתוב, לצורך הדוגמא אם לקחנו רשת  10.1.1.0 וחילקנו אותה למספר תתי רשתות, מה שהיה קורה זה שלא משנה לאיזה SM היינו מחלקים הרשת הנתב המרוחק שהיה מקבל את הניתוב היה רואה את הרשת כ- 10.0.0.0/8 דבר שהיה משפיע על הניתוב כיוון שהנתיב מציג את עצמו כאחראי הבלעדי לרשת 10 ולכן לא היינו יכולים למקם אף נתב אחר עם כתובת זו.


נמשיך..

הפעלת פרוטוקול EIGRP היא מאוד פשוטה והיא מתבצעת בפקודה:

Router(config)#router eigrp 1  הספרה 1 מייצגת מספר אוטונומוס סיסטם שחייב להיות דומה בכל הנתבים

אך לפני שאנו ניגשים להסברים איך מפעילים את EIGRP על הממשקים עצמם חובה להכיר מספר תנאים אשר חייבים להתקיים על מנת שיתקיימו קשרי שכנות והם:

1. מספר ה-AS חייב להיות זהה על כל הנתבים.
2. ערכי ה-K-Values (ערכים על-פיהם נקבע הניתוב) חייבים להיות תואמים.
3. כתובת ה-IP חייבת להיות זהה על גבי הממשק - אך אורך ה-SM לא חייב להיות זהה (על בסיס כתובת ה-Primary על גבי הממשק).

* K-Values - ציינתי את ערכים אלו כתנאי ליצירת קשרי שכנות, אז מה זה בעצם K-Values?
נוסחת חישוב ה-Best Route של EIGRP מתבססת על מספר פרמטרים ואלו נקראים K, והם:

Bandwidth
Reliability
Delay
Load
MTU

כאשר לכל ערך יש מיקום בנוסחה, אך חשוב לציין שלא לכל ערך יש משמעות כיוון שלא כולם פעילים בנוסחה.
למעשה סיסקו ממליצה שלא לשנות ערכים אלו כיוון שהם יכולים להשפיע לרעה על ביצועי הנתב.
הערכים שכן נכנסים לנוסחה הם K1 ו- K3 שהם Bandwidth - Delay.
זה מה שנקרא Metric.

אני תמיד הייתי מבלבל בין Administrative Distance ל- Metric, אז ככה להבהרה ה-AD הוא בעצם האמינות של הפרוטוקול ביחס לפרוטוקולים אחרים המספר של EIGRP הוא 90 מבחינת ה-AD, דוגמא אחרת שהיא OSPF ה-AD שלו היא 110, מה שהופך את EIGRP לאמין יותר.
והעניין השני הוא ה- Metric שהוא בעצם החישוב של הפרוטוקול אל היעד, כך זה נראה בטבלת הניתוב:

האדום הוא ה- AD
הירוק הוא ה- Metric.

Router#sh ip route

Gateway of last resort is not set

     10.0.0.0/32 is subnetted, 3 subnets
D       10.1.2.1 [90/130816] via 192.168.1.1, 00:00:06, GigabitEthernet0/0
D       10.1.3.1 [90/130816] via 192.168.1.1, 00:00:06, GigabitEthernet0/0
D       10.1.1.1 [90/130816] via 192.168.1.1, 00:00:06, GigabitEthernet0/0

והחלק הפחות אהוב עליי.. :) הנוסחה לחישוב:

10^7/bandwidth+delay*256=FD

עכשיו אתם בטח שואלים מה זה FD??
אני אסביר...
כפי שהזכרתי למעלה, EIGRP יודע להחזיק 2 נתיבים אל היעד ואפילו להציג אותם בטבלת ניתוב ואפילו יותר מזה גם לעשות בינהם Load-Balance.
ולמה אני מזכיר את זה..
מהסיבה הפשוטה שמה שאנו רואים בטבלת הניתוב נקרא Successor שהוא בעצם הנתיב הטוב ביותר אל היעד- ומה זה הנתיב הטוב ביותר אל היעד, זהו בעצם ה-FD.
 וכפי שציינתי EIGRP יודע להחזיק 2 ניתובים (בעלי Metric זהה או שהוגדרו בפקודת Variance) ולכן הניתוב שלא נבחר לשמש כ- Best Route נקרא Feasible Successor.

FD- מייצג את ראשי התיבות Feasible Distance ובתרגום פשוט מה שזה אומר שהמרחק ממני עד לרשת היעד הוא בעצם מיוצג על ידי ה-FD (כולל כל הנתבים בדרך ליעד).

קיים עוד נתון אשר עוד לא דיברנו עליו והוא ה-AD:

AD- מייצג את ראשי התיבות Administrative Distance ובתרגום מה שאומר AD הוא בעצם המרחק של השכן שאליו אני מחובר אל רשת היעד.

להלן דוגמא שתעזור להמחיש את הקונספט של AD ו FD.


שימו לב שהנתב E השמאלי הוא רשת המקור, היעד שלנו הוא NET X שמקושר לנתב A.
לצורך הדוגמא נבחר את המסלול העליון.
ה-FD שלנו הוא המרחק בין נתב E לנתב A ז"א כל המסלול ולכן הוא גם נקרא Sucssesor.
ה-AD שלנו הוא המרחק בין נתב B לנתב A משמע המרחק של השכן שלנו מרשת היעד.


פרוטוקול EIGRP מחזיק במספר טבלאות ואלו שהופכות אותו להיות דומה לפרוטוקלים מסוג Link State והם:

Neighbor Table - טבלת השכנים, טבלה זו מציגה את כל השכנים המחוברים ישירות אל הנתב דוגמא להצגת השכנים ב-EIGRP בפקודה:

Router#sh ip eigrp neighbors
IP-EIGRP neighbors for process 1
H   Address                 Interface       Hold    Uptime   SRTT RTO  Q  Seq Type
                                                            (sec)                    (ms)          Cnt Num
0   192.168.1.1             Gi0/0             12    00:23:42  120   720    0      2


מה שניתן לראות בפלט מפקודה זו הוא:
1. את השכנים - בכתובת 192.168.1.1
2. האות H מייצגת את המילה Handle משמע סדר השכנים - מי עלה קודם.
3. על איזה ממשק הוא עלה.
4. Hold Time כמה זמן עד שהשכן נחשב כלא פעיל.
5. Up Time כמה זמן השכן למעלה.
6. SRTT - כמה זמן לקח לשכן להגיע ליעד ולחזור.
7. RTO - כמה זמן יש להמתין במידה ולא הגיע פקטה של Hello.
8. Q - כמה פקטות ממתינו ב-Queue.


Routing Table - הטבלה השניה היא כמובן טבלת הניתוב, טבלה זו מכילה את כל הניתובים לרשתות השונות ואת הממשקים המחוברים ישירות לנתב לדוגמא: 
Router#sh ip route

Gateway of last resort is not set

     10.0.0.0/32 is subnetted, 3 subnets
D       10.1.2.1 [90/130816] via 192.168.1.1, 00:30:12, GigabitEthernet0/0
D       10.1.3.1 [90/130816] via 192.168.1.1, 00:30:12, GigabitEthernet0/0
D       10.1.1.1 [90/130816] via 192.168.1.1, 00:30:12, GigabitEthernet0/0
     192.168.1.0/30 is subnetted, 1 subnets
C       192.168.1.0 is directly connected, GigabitEthernet0/0
שימו לב שישנה אות ליד כל ניתוב, האות D מייצגת רשת שנלמדה ע"י EIGRP והאות C מייצגת רשת שמחוברת ישירות לנתב.
 
Topology Table- הטבלה השלישית שקיימת בEIGRP היא טבלת הטופולוגיה, טבלה זו מכילה את כל הניתובים אל כל הרשתות כולל אלו שלא נכנסו לטבלת הניתוב ואלו הם...... זוכרים??

ה-Feasible Successor שהם בעצם הניתוב המשני הטוב ביותר אל היעד.

כך נראית טבלת הטופולוגיה ב EIGRP : 

Router#sh ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(192.168.1.2)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 10.1.2.1/32, 1 successors, FD is 130816
         via 192.168.1.1 (130816/128256), GigabitEthernet0/0
P 10.1.3.1/32, 1 successors, FD is 130816
         via 192.168.1.1 (130816/128256), GigabitEthernet0/0
P 10.1.1.1/32, 1 successors, FD is 130816
         via 192.168.1.1 (130816/128256), GigabitEthernet0/0
P 192.168.1.0/30, 1 successors, FD is 2816
         via Connected, GigabitEthernet0/0


מה שאנחנו יכולים ללמוד מהטבלה הזו בעצם זה את כל הרשתות ש EIGRP מכיר, ואם קיימים ניתובים משניים - FS.
האות P משמאל מציינת שהניתוב הוא ב- Passive מה שאומר לנו שהכל תקין, במידה והייתה מופיעה לנו האות A משמע ACTIVE וזה אומר שהניתוב לרשת נפל והנתב מנסה בצורה אקטיבית לחפש דרכים חלופיות.

מה שמביא אותנו אל ה-Packets ש- EIGRP משתמש על-מנת להקים קשרי שכנות ולשמור עליהם ועוד...
והם:

1.Hello- הקמה ותחזוקת קשרי השכנות בין 2 נתבים - עובד בכתובת מולטיקאסט 224.0.0.10 ושולח פקטות של
   Hello כברירת מחדל כל 5 שניות ו-Hold Time כל 15 שניות בקווים מהירים (מעל 1.5M).
2. Update - מייצג עדכון לגבי רשת שנוספה\הוסרה, מייצג את טבלת הניתוב.
3. Query- תהליך תשאול שכנים לגבי רשת שנפלה, במצב זה אנו נראה A בטבלת טופולגיה.
4. Reply- תהליך קבלת תשובה משכן עבור רשת שנפלה.
5. Ack- מה שהופך את EIGRP לפרוטוקול אמין בזכות ה- ACK, עבור כל פקטה ישנו ACK למעט Hello ועל ACK עצמו.

קיים מצב שבו רשת נפלה והנתב מוציא פקטה של Query ע"מ למצוא נתיב חלופי לרשת היעד, כברירת מחדל הנתב ממתין 3 דקות ע"מ לשמוע Query Reply מכל השכנים ולאחר מכן כל קשרי השכנות מתאפסים ומתחדשים.

מצב זה נקרא SIA - Stuck In Active , אפילו שהנתב קיבל Query Reply מאחד השכנים, הוא עדיין ממתין כדי לקבל תגובה מכולם ובטבלת הטופולגיה אנו נראה A על יד הניתוב עצמו.

קיימים פתרונות למצב, וזאת ע"י מניעה מהנתב להוציא Packet של Query, כיוון שאנחנו כמנהלי הרשת יודעים בדיוק לאילו ניתובים ניתן להגיע ואילו נתבים מחזיקים בכל ניתוב וניתוב (ברוב המקרים).

הפתרון הראשון לבעיה זו הוא הגדרת הנתב כ- Stub, נתב שמוגדר כ- Stub בעצם מייצג את הנתב האחרון בשרשרת והוא אינו מכיל עוד נתבים אחריו ולכן אין צורך לתשאל אותו בנוגע לניתובים חסרים.
חשוב לציין שהגדרת Stub מבוצעת בטופולוגיות של Hub-And-Spoke (ראו תמונה).

שימו לב שנתבי A ו-B הם ה-Hub Routers ונתבי C,D,E הם ה-Spoke Routers ולכן מבחינה הגיונית אין צורך לתשאל אותם לגבי רשתות.


הפתרון השני הוא ע"י הגדרת Summary-Address, מה שעושה Summary-Address הוא בעצם מפרסם Supernet אחד כלפי הנתב ששכן מולו, ומה שקורה בעצם זה שהנתב אומר אני מחזיק רק את טווח הכתובות הזה ולא שום רשת אחרת.
היתרון של Summary Address ב- EIGRP הוא שניתן להגדיר אותו על כל נתב ברשת, זאת בניגוד לOSPF שמאפשר להגדיר רק על נתבים אסטרטגיים.

הגדרת Summary Address בפקודה תחת הממשק:

Router(config-if)#ip summary-address eigrp 1 192.168.1.0 255.255.255.240

אחרי שלמדנו את הקונספט הכללי של איך EIGRP עובד נעבור לחלק הסופי של הגדרת EIGRP והוא הפעלתו על הממשק שעליו אנו רוצים שEIGRP ישלח Hello Packets בפקודה: 
מה שאנו עושים בפקודה זו זה בעצם לציין על אילו ממשקים אנו מעוניינים להפעיל את EIGRP, במקרה הזה אני מעוניין להפעילו על הממשק הספציפי שכתובתו היא 192.168.1.1 כיוון שה-WildCard שלי ממוקד ספציפית לממשק זה.

Router(config-router)#network 192.168.1.1 0.0.0.0

הערה:
כאשר אנו משתמשים בפקודת Network נשלחים פקטות באמצעות multicast לכתובת 224.0.0.10.
במצב שאנו עובדים על גבי ענן שלא מאפשר multicast לדוגמא - Frame relay ניתן להתשמש בפקודת Neighbor אשר שולחת פקטות באמצעות unicast.
כתובת 192.168.1.2 מייצגת את השכן המרוחק ואת הממשק דרכו נגיע אליו.

Router(config-router)#neighbor 192.168.1.2 gigabitEthernet 0/0
הערה:
חשוב לבטל Auto-Summary כדי שהרשתות יפורסמו עם ה-MASK שלהם ולא בצורת Classfull.


מקווה שעזרתי לכם להבין איך הפרוטוקול עובד,
אם ישנן שאלות ניתן לשלוח אליי למייל.