איך טכניקת הNAT הפכה מחבר לאויב בתוך 2 עשורים

טכניקת הNAT (או בשמו העברי – תרגום כתובות רשת), מעניקה "אוויר לנשימה" לחברות הISP שמשתמשות בפרוטוקול IPv4 בלבד. אבל האם הטכניקה הזו היא למעשה חרב פיפיות שמונעת מהאינטרנט להתפתח? האם NAT הוא התירוץ המושלם של חברות הISP בשביל לא להתקדם לIPv6?

בשביל להבין למה טכניקת הNAT בעייתית, צריך לעשות שיעור היסטוריה קצר…. טכניקת הNAT היא טכניקה מאוד נפוצה שמאפשרת לכמה מכשירים להשתמש בכתובת IP ציבורית אחת. כדי שכמה מכשירים יוכלו לעבוד "מאחורי" כתובת IPv4 ציבורית יחידה, יש להקים רשת IP פרטית, ולכן הוקצה לצורך העניין טווחי כתובות ידועים כדי לבנות רשת שכזו. כשמהנדסים תכננו את רשת האינטרנט, ובייחוד כאשר אנו מדברים על כתיבת פרוטוקול IPv4, המהנדסים תכננו את רשת האינטרנט כך שכל מחשב יחובר עם כתובת IP אחת ויהיה נגיש לכל שאר המחשבים באינטרנט (אלא אם יש חומת אש שחוסמת חלק מהתעבורה שמגיעה ו/או יוצאת מהמחשב לרשת). כשמהנדסי רשת הבינו שיש בעיה עם כמות הכתובות (כבר בשנות ה90 של המאה ה20), הם יצרו את טכניקת הNAT, כדי למנוע מצב של התרוקנות של כל כתובות הIPv4. כך למעשה, במקום שכל מחשב ומחשב יקבל כתובת ציבורית, ארגונים ובתים החלו לחבר מחשבים לאינטרנט באמצעות מכשיר אשר משמש כGateway מקומי, ושאר המחשבים שמחוברים אליו מקבלים כתובת IP לא ציבורית, אלא פרטית. למעשה, עד היום משתמשי האינטרנט ברחבי העולם מחוברים כמעט תמיד באמצעות כתובת IP ציבורית אחת, ומאחוריה יש רשת פרטית שהמשתמשים מחברים לרשת הזו כמה מכשירים שירצו (לא מדוייק להגיד שאין הגבלה, אבל אפשר לחבר לא מעט מכשירים בהתאם לגודל התת-רשת הפרטית).

למעשה, עולה מהנאמר לעיל שNAT הוא "החבר הטוב" של ספקי האינטרנט ושימר את IPv4 כפרוטוקול רשת משומש לאורך הרבה זמן. אכן הדבר נכון, עד אשר נכנסו למשוואה מניעים כלכליים מובהקים, מה שגרם למימוש NAT לא בגלל מגבלות טכנולוגיות בהכרח. על מה בדיוק מדובר? אני מדבר על מצב ספציפי של NAT – המצב נקרא NAT444. כידוע, עם התפתחות הרשתות הסלולריות ומתן גישה לאינטרנט באמצעות מודמים-ראוטרים סלולריים, עלה הצורך שגם המודמים-ראוטרים הסלולריים והמכשירים שנמצאים ברשת הביתית יקבלו כתובות IP. מכיוון שספקי הסלולר מסרבים להתקדם לעבר IPv6 (זה המצב בישראל), ובגלל מחסור חמור (בשנת 2018 המחסור רק החריף, אם ספקי האינטרנט והסלולר חשבו אחרת…), ספקי הסלולר וגם ספקי אינטרנט חדשים בשוק הקווי (כדוגמת 018 וTriple C) מפעילים NAT ברשת שלהם, כלומר – כל מודם-ראוטר שמתחבר לרשת של ספק האינטרנט/הסלולר אשר החיל NAT ברשת שלו, מקבל כתובת IP פרטית במקום כתובת ציבורית כפי שהיה נהוג. כל מכשיר מאחורי הראוטר-מודם הסלולרי (וגם ראוטר-מודם לא סלולרי אצל ספקי אינטרנט שצוינו) מקבל גם כן כתובת IP פרטית. אם מכשיר מתוך הרשת של הלקוח מבצע התקשרות למקום כלשהוא באינטרנט, הוא עובר דרך המודם-ראוטר שנמצא בביתו שמתחבר לראוטר של הספק כך שמתבצע פה פעמיים תרגום כתובות. לכאורה, נשמע לא כל כך נורא. אבל כשמניעים כלכליים נכנסים למשוואה, אז יש פרמטרים אחרים שמקבלים פחות יחס (כמו ביצועים ואבטחה). אין לי מידע כמה צרכנים (בתי אב) מחוברים ("מועמסים") מאחורי ראוטר (עם כתובת IPv4 ציבורית אחת) על ידי ספקי סלולר/אינטרנט שהחילו NAT ברשת שלהם, אבל מהתנסות אישית ומדיבור עם מכרים על הנושא, אפשר לראות שהביצועים "לא בשמיים"… כמו כן, חיבור מסוג זה מונע כל אפשרות שמכשיר יפעיל שירות באינטרנט (כמו שירות FTP לדוגמה…). כלומר, כל המצב הזה לא אופטימלי והוא רק נחשב לפתרון זמני בלבד. האמת, שלהגיד שהמצב הזה נחשב לפתרון זמני יהיה גם לא נכון מבחינה טכנית, מכיוון ש018 מספקים IPv6 לכל משתמש אשר מבקש את זה וגם חיבור IPv4 (עם NAT, אפשר לצאת מהNAT, ולמיטב הבנתי צריך רק לבקש והם מוציאים). ספקי הסלולר יכלו גם לנהוג כפי ש018 פועלים ולספק IPv6 עם IPv4 (עם NAT)…. הם לא עושים את זה כרגע למרות שהדבר אפשרי.

ספקי האינטרנט בישראל מסתמכים על כך שNAT יהיה קיים לעוד הרבה זמן ולכן אין צורך בפתרון אחר. כפי שהוצג, NAT הוא פתרון זמני, מכיוון שהוא שובר את עקרון הEnd to end (נגישות מקצה לקצה ברחבי הרשת), עשוי להוריד ביצועים ולמנוע התפתחות של האינטרנט. IoT, כפי שהצגנו בפוסט אחר, יתקשה להתקיים בסביבה של NAT, בייחוד אם הרבה מכשירי IoT יהיו פעילים ברשת הפרטית, מכיוון שלכל התחברות מחוץ לרשת הפרטית הראוטר יצטרך לבצע תרגום כתובות בהתאם וגם לשמור בזכרון שלו את ההתקשרות הזאת כך שאם יוחזר מידע בגלל ביצוע ההתקשרות הזאת, המידע יחזור ליעד המתאים. אם יהיו הרבה מכשירים מחוברים, לראוטר יהיה יותר "קשה" לבצע תרגום כתובות וגם לשמור את ההתקשרויות בזכרון שלו, מה שעלול לגרום לעומס כבד ואף לקריסה אם הרבה מכשירים ינסו בו זמנית להתחבר לאינטרנט. בראוטר שמחובר עם IPv6, אין תרגום כתובות ואין שמירת נתונים מסויימים בזיכרון על התקשרות לאינטרנט, כי פשוט לא צריך את זה. הניתוב יעיל יותר גם ברמת הפרוטוקול (ולא רק בגלל היעדר NAT), כך שהרבה מכשירים יכולים להיות מחוברים לאינטרנט בלי הבעיות שNAT מייצר.

שבירת עיקרון הEnd to end לא רק מקשה על ניתוב יעיל של מידע, אלא גם "גורם לכאבי ראש" בייחוד בתחום הVoIP, כאשר בתחום הזה NAT פשוט מונע התקשרות של טלפוניית IP בין משתמשים. יש דרכים לעקיפת NAT במצבים כאלה, אבל לא מדובר בפתרונות טרוויאלים או נוחים למימוש. NAT גורם לבעיות לא רק בתחום הVoIP אלא עשוי לשבש סוגי תקשורת אחרים, כפי שניתן לראות במאמר שנכתב בנושא על NAT444.

בעיה נוספת של NAT היא כנראה בעיה פחות טכנית אלא קשורה לדרכי פעולה של מהנדסי רשת לא מנוסים בתחום. הבעיה נמצאת אצל מהנדסי רשת אשר למדו להשתמש בפרוטוקול IPv4, ולא בקיאים מספיק בIPv6. מה שקורה זה שטכניקות שהיו נכונות לIPv4 בלבד, נראו למהנדסים הללו כנכונות גם בIPv6. טכניקת הNAT אשר כל הפוסט מוקדש רק לה, היא טכניקה "נכונה" וישימה רק בIPv4 – אך לא בIPv6. אפשר ליישם NAT בIPv6 מבחינה טכנית, אך הדבר לא רצוי מכיוון שIPv6 נועד להחזיר את עקרון הEnd to end, שNAT "הרס" וגם מכיוון שאין מחסור בכתובות IPv6 (לעומת המחסור החריף בכתובות IPv4, ולכן צריך NAT). מה גם שמי שיחפש חומר על IPv6 NAT יגלה כי מדובר במשימה קשה בפני עצמה, ואם יחליט לנסות להחיל NAT עם IPv6 (שזה רעיון גרוע…) יצטרך להתמודד לבד מכיוון שאין יישום קל לביצוע שקיים Out of the box של IPv6 NAT.

לאלו שיטענו שNAT הוא "חבר" ואפילו מגן על הרשת מפני מתקפות, אני ממליץ בחום על קריאת המאמר הזה:

IPv6 Security Myth #3 – No IPv6 NAT Means Less Security


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

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