מה זה NAT?
NAT (Network Address Translation — תרגום כתובות רשת) הוא התרגום שהראוטר עושה בין הכתובות הפרטיות של המכשירים במשרד לבין הכתובת הציבורית האחת שיוצאת לאינטרנט. בלעדיו כל מכשיר היה צריך כתובת ציבורית משלו.
הגדרה ומקור
NAT הם ראשי התיבות של Network Address Translation — תרגום כתובות רשת. הרעיון נולד בשנות התשעים, כשהתברר שכתובות ה-IPv4 הולכות ונגמרות. במקום לתת כתובת ציבורית לכל מחשב, נותנים כתובת אחת לכל רשת, והראוטר "מתווך" בין המכשירים שבפנים לבין העולם.
מה שהתחיל כפתרון זמני הפך לדבר הכי נפוץ ברשתות: כמעט כל בית וכל משרד בעולם עובד היום מאחורי NAT. כל כתובת פרטית במשרד — טלפון, מחשב, מדפסת — יוצאת החוצה עם הכתובת הציבורית של הראוטר.
הדימוי הפשוט: מזכירה בכניסה לבניין משרדים. כל המכתבים יוצאים עם הכתובת של הבניין. כשתשובה חוזרת, המזכירה בודקת ביומן שלה מי שלח את המכתב המקורי, ומעבירה לו אותה. אם היומן לא מדויק — התשובה מגיעה לשולחן הלא נכון, או לא מגיעה בכלל.
איך זה עובד, צעד אחר צעד
- הטלפון במשרד, בכתובת 192.168.1.21, שולח חבילה לשרת המרכזייה בענן. על החבילה כתוב: מאת 192.168.1.21, יציאה (פורט) 5060.
- הראוטר מחליף את כתובת השולח בכתובת הציבורית של המשרד, ולעיתים גם את מספר הפורט, למשל ל-40211.
- הוא רושם בטבלת התרגום: "מה שיחזור לפורט 40211 — שייך ל-192.168.1.21, פורט 5060".
- השרת עונה לכתובת הציבורית, פורט 40211.
- הראוטר מוצא את השורה בטבלה, מחזיר את הכתובת המקורית, ומעביר את החבילה לטלפון.
השורות בטבלה לא נשמרות לנצח. אם אין תעבורה במשך זמן מה — בדרך כלל עשרות שניות עד כמה דקות, תלוי בראוטר — השורה נמחקת. זה פרט קטן שמסביר הרבה תקלות טלפוניה, כפי שנראה בהמשך.
והפרט החשוב ביותר: הראוטר פותח שורה בטבלה רק כשמשהו מבפנים יצא החוצה. חבילה שמגיעה מבחוץ בלי שורה מתאימה נזרקת. זו גם הגנה טבעית: אף אחד מבחוץ לא יכול לפנות ישירות למחשב במשרד, אם המחשב לא פנה אליו קודם.
סוגי NAT
- NAT עם פורטים (PAT, נקרא גם NAPT או Overload) — הסוג שיש כמעט בכל ראוטר. הרבה מכשירים חולקים כתובת ציבורית אחת, והראוטר מבדיל ביניהם לפי מספרי הפורטים.
- NAT סטטי והעברת פורטים (Port Forwarding) — הגדרה ידנית שאומרת לראוטר: "כל מה שמגיע מבחוץ לפורט מסוים, תעביר למכשיר מסוים בפנים". משמש לשרתים ולמצלמות.
- Double NAT — שני ראוטרים בשרשרת, כל אחד מתרגם. קורה הרבה כשמחברים ראוטר של המשרד מאחורי ראוטר של ספק האינטרנט.
- CGNAT (NAT ברמת הספק) — ספקים מסוימים מתרגמים בעצמם, כך שגם הכתובת "הציבורית" של הראוטר שלכם היא בעצם פרטית אצל הספק. במקרה כזה אי אפשר לקבל גישה ישירה מבחוץ, ואי אפשר לנעול מערכות לכתובת שלכם בצורה אמינה.
למה NAT מסבך שיחות טלפון
גלישה באינטרנט היא דבר פשוט ל-NAT: המחשב שואל, השרת עונה, וזהו. שיחת VoIP מורכבת יותר, כי יש בה שני ערוצים נפרדים: ערוץ הניהול (SIP) שבו הטלפון מבקש להתקשר, מצלצל, ומודיע על ניתוק, וערוץ הקול (RTP), שבו עוברות חבילות הקול עצמן, בפורטים אחרים.
הבעיה היא שבתוך הודעת ה-SIP הטלפון כותב "שלחו לי את הקול לכתובת 192.168.1.21, פורט כזה וכזה". זו כתובת פרטית, שלא אומרת כלום לשרת בענן. אם השרת ינסה לשלוח לשם, הקול ילך לאיבוד. שרתי טלפוניה טובים יודעים להתעלם מהכתובת הכתובה ולענות לכתובת שממנה החבילה באמת הגיעה — אבל גם זה עובד רק אם הראוטר מתנהג באופן צפוי.
התקלות המוכרות שנובעות מכך:
- שמע חד-כיווני — אתם שומעים את הצד השני, והוא לא שומע אתכם, או להפך.
- ניתוק אחרי כחצי דקה — ערוץ הניהול לא השלים את ה"לחיצת יד" של השיחה, והשרת מסיק שהשיחה לא נקלטה ומנתק.
- שיחות נכנסות לא מצלצלות — הטלפון רשום, אבל השורה שלו בטבלת התרגום נמחקה מחוסר פעילות, והשרת לא מצליח להגיע אליו. יוצא החוצה עובד, נכנס לא.
- טלפון שעובר בין "רשום" ל"לא רשום" — בדרך כלל סימן לראוטר שמוחק את הטבלה מהר מדי או לשני ראוטרים שמתרגמים.
SIP ALG — העוזר שמפריע
בהרבה ראוטרים ביתיים ועסקיים יש הגדרה בשם SIP ALG (Application Layer Gateway). הרעיון שלה טוב: הראוטר "קורא" את הודעות ה-SIP ומתקן בהן את הכתובות הפרטיות לכתובת הציבורית, כדי לחסוך את הבעיה שתיארנו.
בפועל, לעיתים קרובות היא עושה את זה חלקית או לא נכון, ובמיוחד כששרת המרכזייה כבר מטפל ב-NAT בעצמו — ואז יש שני תיקונים שמתנגשים. התוצאה: בדיוק אותן תקלות שהיא הייתה אמורה למנוע. לכן, ברוב המקרים, אחד הצעדים הראשונים בפתרון בעיות שמע במרכזייה בענן הוא לכבות את SIP ALG בראוטר.
ההגדרה נקראת אצל יצרנים שונים בשמות שונים: SIP ALG, SIP Helper, SIP Passthrough, SIP Fixup. בחלק מהראוטרים של ספקי אינטרנט היא מוסתרת ורק הספק יכול לכבות אותה.
מה בודקים כשיש בעיה
- SIP ALG — מכובה?
- שרשרת ראוטרים — האם יש ראוטר של ספק ומאחוריו עוד ראוטר? אם כן, עדיף להעביר את אחד מהם למצב גשר (Bridge), כך שיהיה רק תרגום אחד.
- זמן החזקת החיבור — האם הראוטר מוחק שורות UDP מהר מדי? לעיתים פותרים בכך שהטלפון שולח הודעות "אני עדיין כאן" (Keep-alive) בתדירות גבוהה יותר.
- חומת האש — האם היא חוסמת את טווח הפורטים של הקול? ראו חומת אש ופורטים.
- העברת פורטים מיותרת — בדרך כלל אין צורך לפתוח פורטים מבחוץ לטלפונים במרכזייה בענן. פתיחה של פורט הטלפוניה לכל העולם מזמינה ניסיונות פריצה והונאת שיחות.
טיפ: אם הבעיה מופיעה רק בשלוחה אחת, סביר שהיא בהגדרות המכשיר או בכבל שלו. אם היא מופיעה בכל המשרד — כמעט תמיד מדובר בראוטר.
טבלת אבחון: מה שומעים, מה הסיבה, מה עושים
בפרקים הקודמים תיארנו את התקלות. כאן הן מסודרות לפי מה שהמשתמש חווה בפועל, כי כל תסמין מצביע על חוליה אחרת בשרשרת:
| מה קורה | מה זה אומר | מה בודקים קודם |
|---|---|---|
| שומעים רק צד אחד, רק בשיחות נכנסות | הקול היוצא מהמשרד מגיע, הקול החוזר נשלח לכתובת הפרטית שכתובה בהודעת ה-SIP | SIP ALG בראוטר — כמעט תמיד הוא |
| שומעים רק צד אחד, גם ביוצאות | טווח פורטי הקול (RTP) חסום בחומת האש, או שיש שני ראוטרים | חומת אש, מצב גשר בראוטר של הספק |
| השיחה מתנתקת אחרי בדיוק חצי דקה בערך | אישור החיבור (ACK) לא הגיע לטלפון, והשרת סוגר את השיחה | SIP ALG; העברת פורטים שגויה |
| יוצאות עובדות, נכנסות לא מצלצלות אחרי הפסקה | שורת התרגום נמחקה מחוסר פעילות, והשרת לא מוצא את הטלפון | זמן החזקת חיבור UDP בראוטר; תדירות keep-alive |
| מצלצל, עונים — שקט מוחלט משני הצדדים | ערוץ הניהול עובר, ערוץ הקול לא | חומת אש חוסמת RTP; קודק לא נתמך |
| האפליקציה בנייד עובדת, הטלפונים בשולחן לא | הבעיה ברשת המשרד ולא במרכזייה — הנייד עובר דרך רשת סלולרית אחרת | הראוטר במשרד |
| עובד בסניף א', לא עובד בסניף ב', אותם טלפונים | הראוטר של סניף ב' | להשוות הגדרות בין שני הראוטרים |
שתי השורות האחרונות הן כלי האבחון החזק ביותר: השוואה. אותו טלפון שעובד ברשת אחרת מוכיח שהמכשיר והמרכזייה תקינים, ומצמצם את החיפוש לראוטר אחד.
דוגמה מהשטח: משרד רואי חשבון שהחליף ראוטר
משרד רואי חשבון בבני ברק, עשר עמדות, עבד שנה בלי תקלה. ביום שלישי אחד טכנאי של ספק האינטרנט החליף את הראוטר בדגם חדש. ביום רביעי בבוקר התלונות התחילו: "לקוחות אומרים שהתקשרו ואף אחד לא ענה". ביומן השיחות של המרכזייה השיחות הופיעו כשיחות שהגיעו לשלוחות ולא נענו. בלוח הבקרה כל השלוחות היו רשומות. הטלפונים נראו תקינים.
מה שקרה: הראוטר החדש מחק שורות תרגום של UDP אחרי 30 שניות בלי תעבורה, ואילו הטלפונים שלחו הודעת "אני כאן" רק פעם בדקה. בין שתי ההודעות היה חלון של חצי דקה שבו המרכזייה לא יכלה להגיע לטלפון. שיחה שנכנסה באותו חלון — צלצלה בשרת, לא בטלפון. שיחות יוצאות עבדו תמיד, כי הן פותחות שורה חדשה בעצמן.
הפתרון, בשני צעדים: כיבוי SIP ALG בראוטר החדש (היה פעיל כברירת מחדל), והגדרת הטלפונים לשלוח keep-alive כל 20 שניות — פחות מזמן המחיקה של הראוטר. אפשרות חלופית הייתה להאריך את זמן ההחזקה בראוטר, אבל בדגם הזה ההגדרה לא הייתה נגישה.
הלקח הכפול: כל החלפת ראוטר במשרד עם טלפוניה מחייבת שיחת ניסיון נכנסת, אחרי דקה-שתיים של שקט, ולא רק שיחה יוצאת. ושני, יומן השיחות בלוח הבקרה הוא עד: הוא מראה שהשיחה הגיעה עד השלוחה ונעצרה שם, וזה מצביע ישר על הרשת במשרד.
NAT מחוץ למשרד: עובדים מהבית, ניידים וסניפים
כל מה שנאמר על הראוטר במשרד נכון גם לכל מקום אחר שממנו מתחברת שלוחה. עובדת שמפעילה סופטפון מהבית עוברת דרך הראוטר הביתי שלה — עם SIP ALG משלו, זמני מחיקה משלו, ולפעמים גם ראוטר של הספק לפניו. כשהיא מתלוננת על שמע חד-כיווני, הבדיקה היא של הראוטר בבית שלה, לא של המשרד.
ברשת סלולרית המצב שונה: כמעט תמיד יש CGNAT של המפעיל, שאי אפשר לשנות בו כלום. ובכל זאת אפליקציות בנייד עובדות טוב ברוב המקרים, כי הן פותחות את החיבור מבפנים ושומרות אותו חי בעצמן. שלוחת סים עוקפת את כל הסיפור: היא לא עוברת באינטרנט בכלל, אלא ברשת הטלפון הרגילה, ולכן NAT לא נוגע לה.
ולסניפים: כל סניף עם ראוטר משלו הוא NAT נפרד. במרכזייה בענן זה דווקא נוח — כל סניף נרשם בנפרד, ואין צורך בחיבור ישיר בין הסניפים כדי להעביר שיחה ביניהם. השיחה עוברת דרך הענן, לא דרך הראוטרים.
מה לומר לטכנאי או לספק
כשמישהו אחר מטפל בראוטר, המשפטים הבאים מסבירים בדיוק מה צריך, בלי ויכוחים:
- "יש לנו טלפוני IP מול מרכזייה בענן. בבקשה לכבות SIP ALG."
- "אם יש ראוטר של הספק ואחריו ראוטר שלנו — להעביר את של הספק למצב גשר."
- "לא לפתוח פורטים מבחוץ לטלפונים. הם מתחברים החוצה בעצמם."
- "אם אפשר, להאריך את זמן ההחזקה של חיבורי UDP ליותר מדקה."
- "בסיום — שיחת ניסיון נכנסת, אחרי שתי דקות שקט."
את המשפט הראשון שווה לשמור. הוא פותר יותר תקלות שמע מכל שאר הרשימה יחד.
איך זה עובד אצלנו בקשר
הטלפונים שלנו מגיעים למשרד מוגדרים מראש לעבודה מול המרכזייה בענן, מאחורי הראוטר של המשרד. ברוב המשרדים מחברים אותם לרשת והם נרשמים בלי שום הגדרה בראוטר.
כשיש בעיית שמע — צד אחד לא שומע, שיחות שנקטעות, שלוחה שלא מצלצלת — אנחנו מתחילים מהראוטר: בודקים אם SIP ALG פעיל, אם יש שני ראוטרים בשרשרת, ואיך מוגדרת חומת האש. במקרים רבים הפתרון הוא שינוי קטן בהגדרות, בלי להחליף ציוד.
גם אתם יכולים לעזור באבחון. בלוח הבקרה, במסך השלוחות, רואים אם שלוחה רשומה ומאיזה מכשיר. שלוחה שמופיעה ונעלמת לסירוגין היא רמז חזק לבעיית NAT. ביומן השיחות אפשר לראות את המסלול של כל שיחה, וכך להבין אם שיחה נכנסת בכלל הגיעה לשלוחה.
ואם הראוטר של המשרד לא מתאים לטלפוניה, נגיד לכם, ונעזור לבחור אחר.
שאלות נפוצות
למה שומעים רק צד אחד בשיחה?
ברוב המקרים הקול של אחד הצדדים לא מצליח לעבור דרך תרגום הכתובות בראוטר. הצעד הראשון הוא לכבות SIP ALG ולבדוק שאין שני ראוטרים בשרשרת.
צריך לפתוח פורטים בראוטר בשביל מרכזייה בענן?
בדרך כלל לא. הטלפונים פונים החוצה אל המרכזייה, והראוטר מאפשר את התשובות באופן אוטומטי. פתיחת פורטים מבחוץ רק מגדילה את הסיכון לפריצה.
מה זה Double NAT וזה מזיק?
זה מצב שבו שני ראוטרים מתרגמים כתובות אחד אחרי השני. הרבה פעמים זה עובד, אבל זה מגדיל את הסיכוי לבעיות שמע ולשלוחות שמתנתקות, ולכן עדיף להשאיר תרגום אחד.
איך מכבים SIP ALG?
בממשק הניהול של הראוטר, לרוב תחת הגדרות מתקדמות, חומת אש או NAT. השם משתנה בין יצרנים, ובראוטרים של ספקים לפעמים צריך לבקש מהספק.
מה זה keep-alive בטלפון IP?
הודעה קצרה וריקה שהטלפון שולח למרכזייה כל כמה עשרות שניות, רק כדי שהראוטר ישמור את שורת התרגום שלו פתוחה. בלעדיה, אחרי הפסקה בשיחות, שיחות נכנסות עלולות לא להגיע לטלפון.
מה זה STUN?
שירות שעוזר למכשיר לגלות באיזו כתובת ציבורית ובאיזה פורט הוא נראה מבחוץ, כדי שיוכל לכתוב אותם נכון בהודעות ה-SIP. הוא עוזר במקרים מסוימים, אבל לא פותר שני ראוטרים בשרשרת או חומת אש חוסמת.
למה האפליקציה בנייד עובדת והטלפון בשולחן לא?
כי הנייד עובר דרך הרשת הסלולרית, בלי הראוטר של המשרד. זה סימן כמעט ודאי שהבעיה בראוטר או בחומת האש במשרד, ולא במרכזייה.