על NAT

איך שורדים עם רק 4 מיליארד כתובות IP לכל האינטרנט? NAT!

כשאנחנו משתמשים באינטרנט אנחנו זקוקים לכתובת IP. כמו דואר רגיל, יש צורך בנמען ומוען- גם למחשב ששולח בקשה וגם לשרת שאליו היא נשלחת צריכה להיות כתובת IP כדי שידעו איך לתקשר ביניהם. בפרוטוקול ה-IP הנוכחי, IPv4, יש קצת יותר מ-4 מיליארד כתובות IP זמינות לשימוש, שזה בבירור לא מספיק לכמות המכשירים המחוברים לאינטרנט. מסיבה זו פותח פרוטוקול IPv6 שמגדיל את מספר הכתובות הזמינות לשימוש מ-4 מיליארד ל-340 undecillion, שזה 340 ואז 36 ספרות אחריו (340,282,366,920,938,463,463,374,607,431,768,211,456). אבל גם היום IPv6 לא בשימוש רחב מספיק ולא כולם תומכים בו. אז איך שרדנו עד עכשיו?

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

ניקח לדוגמה את הרשת הביתית שלכם. הראוטר שלכם מקבל כתובת IP מהספקית שלכם. בשביל לחסוך 10-20 כתובות IP לכל מכשיר שמחובר לרשת הביתית שלכם, הראוטר משתמש בטכניקה שנקראת NAT (Network Address Translation). הראוטר מחלק לכל המכשירים שמחוברים אליו כתובות פרטיות, ששייכות לכמה טווחים שנקבעו לשימוש זה- כל הכתובות מהצורה

10.X.X.X
, כל הכתובת מהצורה
172.16-31.X.X
וכל הכתובות מהצורה
192.168.X.X
, קצת פחות מ-18 מיליון בסך הכל. בטווח האחרון לדוגמה, המחשב יהיה עם הכתובת 192.168.0.1, הפלאפון 192.168.0.2 וכו’. כשאתם תגישו בקשה לאינטרנט, בעזרת ה-NAT הראוטר ימיר את הכתובת הפרטית לכתובת הציבורית ולכן כלפי חוץ כל המכשירים ברשת יחלקו אותה כתובת IP. ה-NAT עובד גם בכיוון השני, כשהבקשה חוזרת מהאינטרנט לכתובת הציבורית של הראוטר ואז בעזרת ה-NAT הראוטר מעביר אותה לכתובת הפרטית הנכונה, בין אם זה למחשב או לפלאפון.

יש ארבעה סוגים או יישומים עיקריים של NAT:

  1. SNAT - Static NAT: מדובר ב-NAT שמספק כתובת IP ציבורית קבועה לכל כתובת IP פנימית. אם להמשיך עם הדוגמה שלמעלה, אז נוכל לשייך את הכתובת הציבורית 91.198.174.192 לכתובת 192.168.0.1 וכך כל מי שניגש לכתובת 91.198.174.192 ייגש למחשב שלנו (או עם דוגמה יותר ריאליסטית- שרת FTP). כל מי שיגש לכתובת 91.198.174.193 יופנה לכתובת 192.168.0.2, כלומר לפלאפון (או לשרת מייל). הכתובות לא חייבות להיות עוקבות כמובן. מדובר ב-NAT מאוד בזבזני והוא משמש בעיקר לתנועה נכנסת. המטרה העיקרית שלו היא לחשוף שרת עם כתובת IP פרטית לאינטרנט הציבורי.

  2. DNAT - Dynamic NAT: בדומה ל-NAT סטטי גם DNAT מספק כתובת ציבורית לכל כתובת פרטית, אבל באופן קצת שונה. כאן הראוטר מחזיק במלאי של כתובת IP ובכל בקשה כתובת IP פנימית מנותבת לכתובת IP זמינה ברשימה. לדוגמה, אם נתחבר עם המחשב, כלומר עם 192.168.0.1, נקבל את הכתובת 83.2.3.1. לאחר מכן נתחבר עם הפלאפון, ונקבל את הכתובת 83.2.3.2 וכן הלאה, כשכל מכשיר מקבל כתובת פנויה מהרשימה של הראוטר וכתובות מתפנות אחרי שהמשתמש התנתק. גם גישה זו בזבזנית והיא משמשת בעיקר לצורכי תנועה יוצאת. שיטה זו למעשה מסתירה את ה-IP של המשתמשים ומקשה על תוקפים חיצונים לזהות אותו, שכן כתובת ה-IP שלו משתנה באופן תכוף. השימוש של DNAT הוא דומו בעיקרון ל-SNAT, כלומר מתן כתובת ציבורית לכל כתובת פרטית שלנו, אבל הוא נוח במיוחד כאשר אין חשיבות לאיזה מכשיר יקבל איזו כתובת ואז, במקרה שיש לנו 250 שרתים לדוגמה, במקום ליצור 250 רשומות SNAT נוכל לספק פשוט כתובות באופן דינמי בהתאם למה שזמין.

  3. PAT - Port Address Translation: הצורה הכי נפוצה של ה-NAT. כאן לכל מכשיר ברשת הפנימית (פלאפון, מחשב) יש כתובת IP פרטית (192.168.0.1, 192.168.0.2) ולראוטר יש כתובת IP ציבורית (91.198.174.192). במעבר בין הרשת הפנימית לחיצונית, כתובת ה-IP הפרטית מוחלפת לכתובת IP ציבורית עם תוספת של פורט. לדוגמה פניה מהמחשב תגיע לראוטר ותצא ממנו בצורה 91.198.174.192:8001, והפניה מהפלאפון תצא בצורה 91.198.174.192:8002. כך ה-NAT יודע לנווט בקלות את הטראפיק ויודע איזה מידע אמור להגיע לאיזה מכשיר בדיוק. יש כ-65.5 אלף פורטים זמינים לשימוש, חלקם שמורים לשימושים מסוימים (לדוגמה 22 ל-SSH, כאשר 80 שמור ל-HTTP ו-443 ל-HTTPS וכו’), אך יש עשרות אלפים שזמינים לשימוש.

  4. Port Forwarding: רלוונטית בעיקר כשיש רק כתובת IP ציבורית אחת, אבל מספר שרתים ציבוריים שצריכים לחלוק אותה, ולכן גם בעיקר רלוונטית כשמדובר בתנועה נכנסת. כך לדוגמה אם נרצה לגשת לשרת ה-FTP שלנו, שכתובת ה-IP הפרטית שלו היא (192.168.0.1) וכתובת ה-IP הציבורית שלנו היא 91.198.174.192, אז עם Port Forwarding נוכל להפנות כל גישה לכתובת 91.198.174.192:21 לשרת ה-FTP שלנו. בדומה נוכל להפנות את הכתובת 91.198.174.192:25 לכתובת 192.168.0.2 שמשתמשת את שרת המייל שלנו, את הכתובת 91.198.174.192:80 לשרת ה-Web שלנו שנמצא בכתובת 192.168.0.3 וכו'.

ה-NAT כמובן לא חף מחסרונות. תרגום הכתובות לוקח זמן שיוצר דיליי ועלול לפגוע בביצועים (אם כי לא סביר שיורגש), תוכנות מסוימות עלולות לא לעבוד בגלל הגדרות לא נכונות, במיוחד אפליקציות שדורשות פורטים ספציפיים כמו שרתי Web או טורנטים.

לסיכום, NAT זו טכנולוגיה שמתרגמת כתובות IP פרטיות וציבוריות ומאפשרת לנו לקבל אבטחה מוספת על ידי הסתרת כתובות IP של מכשירי קצה, להאריך את תוחלת החיים של ה-IPv4 על ידי חיסכון בכתובות ציבוריות ולהפריד את הרשת הפנימית שלנו מהרשת החיצונית. עם המעבר ל-IPv6 בעתיד הקרוב, לכל מכשיר קצה תהיה כתובת IP ציבורית משלו וה-NAT יהפוך מהר מאוד לנחלת העבר.

לטעון תגובות?