IPv6 בישראל בהיעדר תמיכת הISP: סקירה על שיטת מנהור ללא תלות בספק האינטרנט

זה לא מפתיע מנקודת מבטי, שפוסט כזה צריך להתפרסם באתר הזה. כידוע, הטמעת IPv6 נדחתה מזה כבר שנים, ורק לאחרונה ניסה איגוד האינטרנט הישראלי להרים את הכפפה ובשיתוף משרד התקשורת – יש כוונות לפתור את המחדל העצום הזה. ספקי האינטרנט בישראל (למעט 018) אשמים לא פחות במצב הזה, דבר שהבהרתי בצורה ברורה בפוסט שסיכם את מסקנותיי לאחר כנס הIPv6 שהאיגוד קיים. כיום, במצב הזה נוצר "תחליף" לקישוריות IPv6 מהISPs הישראליים. מדובר בשיטת מנהור שקוראים לה 6in4 – שיטת מנהור של מנות מידע של IPv6 בתור "מנהרת" IPv4 אל ספק המנהור בחו"ל.

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

אגב, אם היינו מסתכלים על הצורך הכלכלי – להטמיע IPv6 ב"פרוסות", יותר חכם מאשר "לבלוע את העוגה שלמה" בדקה ה90 – זה עובד ככה בתזונה (וברור גם איך זה הגיוני), אין סיבה שזה לא יעבוד גם מבחינה כלכלית – נטל חד וגדול יותר קשה לעיכול מהשקעות קטנות לאורך זמן – היגיון פשוט בהחלט. ברור שבגישה הישראלית הידועה (לשמצה, שמכונה "ישראבלוף"), האינטרסים הצרים והמיידים הם הקובעים, ובטח שכל תכנון לרחוק הוא "מיותר" בעיניים של בעלי העניין, ככה היה וכך יהיה….

אך לא "באנו להתברבר" על אינטרס כלכלי או לאומי וכדומה. באנו לדבר על 6in4, וזה מה שנסקר פה. אני במשך כחודשיים שלמים השתמשתי בשיטה הזו כדי לקבל IPv6. הרישום לשירות כזה הוא קל מאוד. נרשמים אצל ספק מנהור כמו Hurricane Electric בצורה פשוטה ופותחים מנהור. ראוי לציין שכל משתמש אינטרנט שנמצא במצב של CGN – לא יכול להפעיל 6in4. אם אתם נמצאים נכון לכתיבת הפוסט הזה אצל 018 – תדאגו להפעיל IPv6 מהספק, מי שאצל Triple C אין לו כרגע IPv6 מהספק, עובדה שמגדילה למעשה את הבעיה כיום בהטמעה ולמידת התחום… אפשרות להחלץ מCGN זה לבקש לצאת החוצה ולקבל כתובת IPv4 ציבורית (כל ספק והדרישות שלו והתנאים שלו… שימו לב לכך).

להלן סרטוט פשוט של פעולת 6in4:

תוצאת תמונה עבור ‪6in4‬‏

אחר כך, צריך להגדיר דברים על הנתב. החלק הזה יותר מסובך, מכיוון שהרבה נתבים לא יתנו להגדיר 6in4. לא בדקתי עד כמה Custom firmwares נותנים להפעיל שירות מנהור 6in4, אבל אני מניח שיתכן והדבר קיים. כל אדם ממוצע בישראל שירצה להקים Setup שכזה, יתקל בשתי בעיות:
1. Hurricane Electric מחייב את המשתמש לרשום IP עדכני. ברור שבמצב הנתון בישראל, שכמעט כל משתמש אינטרנט ממוצע מקבל כתובת IPv4 דינאמית, אף אחד לא ירצה לעדכן כל פעם את הIP אצל Hurricane Electric כשיש צורך בכך.
2. צריך נתב שכאמור תומך במנהור 6in4. אפשרי ליישם זאת כנראה עם firmwares כמו dd-wrt או openwrt. לא רק זה, צריך להתקין חבילת תוכנה בשם radvd, שמטרתה להפיץ את הכתובות האלה ברחבי הרשת.

לכל הבעיות האלה יש פתרונות. הפתרון האוליטמטיבי (כנראה שגם יצור בעיה בשביל הרבה משתמשים) – להשתמש במחשב PC ישן, ולהתקין עליו הפצת לינוקס. למחשב הזה צריך להיות לפחות 2 כרטיסי רשת. אפשרי כמובן, בהנחה והמשתמש מעוניין להשתמש בנתב מוכן – להתקין הפצה כמו OpenWRT או DD-WRT. ויש כאלו שימצאו נתבים שיתנו להפעיל 6in4 דרכם, כך שאין צורך בכל פתרון אחר.

אבל למעשה, איך פותרים את הבעיה של עדכון IP בכל פעם שהוא משתנה? מתברר שהפתרון לא קשה – Hurricane Electric נותנים למשתמש מעין קישור URL פרטי, שאם המחשב של המשתמש מתחבר אליו, Hurricane Electric יקלטו את הIP שממנו התחבר המשתמש (כך שהמחשב המתחבר יכול להיות מאחורי NAT), ויעדכנו זאת אצלם. להלן סקריפט (סקריפט פשוט מאוד) שאני כתבתי על בסיס סקריפטים אחרים באינטרנט ומידע נוסף:

#!/bin/bash
curl "https://xxxx:[email protected]/nic/update?hostname=kkkkkk"

את הXXXX, YYYY, KKKK מחליפים מספרים ואותיות שאותן ניתן לקבל מדף ההגדרות של המנהור שהקמתם. צריך לדאוג שהסקריפט הזה יפעל כשהקישוריות IPv6 (או IPv4) מופעלת, ולדאוג שהסקריפט יופעל בתדירות גבוהה מספיק כך שאם ישתנה הIP, הדבר יעודכן בהתאם. למתקדמים, אפשרי "להזריק" את הקוד הזה בhooks המתאימים של שירות החייגן (בלינוקס, משתמשים בpppd), כך שכל פעם שיהיה שינוי בIP, החייגן יפעיל גם את הסקריפט הזה.

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

interface eth0 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  AdvLinkMTU 1280;
  AdvHomeAgentFlag off;
  AdvDefaultLifetime 9000;

  prefix XXXX::/64 {
    AdvValidLifetime 86400;
    AdvPreferredLifetime 14400;
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr off;
  };
  route XXXX::/64 {

    AdvRoutePreference high;

  };
   RDNSS 2001:4860:4860::8888 2001:4860:4860::8844
   {
      AdvRDNSSLifetime 30;
   };
};

במקום XXXX, יש להחליף את הקידומת IPv6 בהתאם למסופק בדף ההגדרות של המנהור אצל Hurricane Electric. את שם הinterface – שכאן שמו eth0, יש לשנות בהתאם לשם הInterface של הנתב ש"מופנה" לרשת שלכם.

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

#!/bin/bash

IPV4_CLIENT=`curl -s "http://www.networksecuritytoolkit.org/nst/tools/ip.shtml"`
# Change if requried
IPV4_SERVER=YYYY
IPV6_CLIENT=XXXX

#/usr/bin/ifconfig sit0 up
/usr/bin/ip tunnel add he-ipv6 mode sit remote $IPV4_SERVER local $IPV4_CLIENT
/usr/bin/ip link set he-ipv6 up mtu 1480
/usr/bin/ip addr add $IPV6_CLIENT dev he-ipv6
/usr/bin/ip -6 route add ::/0 dev he-ipv6

הסקריפט הזה "ימשוך" מהאינטרנט את כתובת הIPv4 העדכנית של המשתמש. את הYYYY אתם מחליפים בIPv4 Server, שמצויין בדף ההגדרות של המנהור, וכך גם לגבי את הXXXX – בכתובת IPv6 Client שמצויינת בדף ההגדרות של המנהור.

ומה לגבי ביצועים? מהתרשמותי הכללית – הביצועים של המנהור טובים מאוד. הLatency של המנהור כמעט לא מורגש. בהשוואה לLatency של קישוריות IPv4 רגילה מהספק אינטרנט, יש הבדל של בין 10-20ms לרוב. על כן, ניתן להסיק שהגלישה לא נפגעת כלל.

שימו לב – הקידומת IPv6 שאתם מקבלים היא בגודל של 64 סיביות. ניתן "לבקש" על ידי הליך פשוט מאוד בדף ההגדרות של המנהור אצל Hurricane Electric קידומת בגודל של 48 סיביות (קידומת של עסקים לרוב, מאוד גדולה). את ההליך ההגדרה עושים כפי שעושים עם קידומת רגילה של 64 סיביות עם הסקריפטים המתאימים שהצגתי בפוסט זה.

ומה התוצאה הסופית? קישוריות IPv6 יציבה מאוד, שניתן להשתמש בה לכל השימושים הבסיסיים וגם אחרים, בהתאם לצורך.

זוכרים את המסמך המדיניות של איגוד האינטרנט הישראלי?  אחת הבעיות במסמך שכבר ציינתי כאן, זה שכותב המסמך סיקר את כל אפשרויות המנהור חוץ מ6in4. תריצו חיפוש עם Ctrl+F וחפשו "6in4" – לא תמצאו. מה כן תמצאו? בעמוד 21 ו22 יש מידע ואחר השוואה בין סוגי רשתות. ברשת שכוללת מנהור IPv6 על גבי IPv4, מציינים רק את ISATAP. בעמוד 70 מצויין שיטות מנהור נוספות – רק שחסר שם 6in4. בעמוד 21, יש רמיזה לא ברורה לכל הנושא של Tunnel Broker (ספקי מנהור), אבל גם כאן – הדבר מופנה לספקי מנהור אוטומטיים…
יתכן וחלק מהקוראים היותר בקיאים בכל הקשור לIPv6 יגידו ש6in4 מתבסס על 6to4 ועל כן זה לא "באמת משנה" אם לא כתבו את 6in4. לאלו אשר חושבים כך, אני יכול רק להגיד דבר פשוט מאוד – זה 2 שיטות מנהור דומות במהות (במטרה) ובדרך הפעולה הבסיסית (העברת מנות מידע של IPv6 על גבי IPv4 – מה שיותר מגנגון של Encapsulation וDecapsulation…), אך שונות בהחלט מבחינת יציבות – וזאת אני אומר מתוך ניסיון עם שתי השיטות הללו.

תוצאת תמונה עבור ‪6to4‬‏בתמונה – דרך הפעולה של שיטת 6to4 למעשה ברשת האינטרנט

שיטת 6to4 מתבססת על כתובת Anycast שהיא 192.88.99.1 – כך למעשה הנתב שמשתמש בשיטה זו שולח מנות מידע אל הכתובת הזאת, ונתבים שעובדים עם פרוטוקול BGP מנתבים את המידע הזה אל היעד הכי "קרוב" אליכם – לא היעד שאתם בוחרים (כמו ב6in4). זה עשוי לעבוד לפעמים טוב, בהנחה שה6to4 relay שהכי "קרוב" אליכם עובד תקין, אך מעצם זה שלמעשה אין שום קשר בין המשתמש קצה למפעיל ה6to4 relay, אין בהם כל הסכם שירות שעשוי לקבוע איך דברים צריך להתנהל. כמו כן, כתובות IPv6 יתחילו בקידומת:

2002::/16

לאחר מכן, הראוטר "יקח" את כתובת הIPv4 הציבורית שלו – שהיא בגודל של 32 ביט, ויוסיף את אלו בנוסף לקידומת ההתחלתית של 6to4, כך שתווצר קידומת של 48 סיביות. מכיוון שהנתב למעשה לוקח את כתובת הIPv4 הציבורית של המשתמש ואין כל ערבות שהיא לא תשתנה – אזי שקידומת הIPv6 שנוצרת במנגנון 6to4 גם היא דינאמית ועשויה להשתנות. כפי שניתן לראות בתמונה לעיל – כאשר משתמש מתחבר עם 6to4 למחשב ברשת שמחובר עם IPv6 ושולח לו מידע כלשהוא, כדי שהמחשב הזה יענה הוא צריך לפנות ל6to4 relay הכי קרוב אליו (ואחר כך המידע עובר על IPv6 link רגיל, אבל מכיוון שאולי יהיו מרחקים בין כל הrelays, כמצויר בתמונה – יתווסף עיכוב בקבלת המידע). המסקנה מההתנסות שלי עם השיטה הזו (וגם מההסבר המפורט עד כה) היא שחווית הגלישה לא טובה, שכן יש איבוד תמידי של מנות מידע (כנראה בגלל עומס על ה6to4 relay).

לעומת זאת, בשיטת 6in4 המשתמש נרשם לספק שירות שכזה (כמו Hurricane Electric), מקבל הקצאת תת-רשת קבועה, ובגלל שהוא נרשם לשירות – הוא יכול לסמוך שהשירות הזה יתן מוצר יציב ועובד, מה שאכן קורה בשטח.

לסיכום, שיטת המנהור 6in4 מומלצת לכל משתמש אשר רוצה להתנסות בעצמו עם IPv6 ולא מקבל קישוריות שכזו מהISP שלו. התנסות שכזו תעזור בהחלט בעתיד, כאשר IPv6 יוטמע באופן מלא בכל הרשתות בישראל.

סגירת תפריט