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

זהו מה הכלי באמת מדד

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

אזעקת השווא השנייה היא כתובת מקומית ייחודית בתוך fc00::/7, שהוא טווח פרטי המשמש בתוך רשת. כלי שמדפיס כל כתובת שיש למארח יציג אותה בשמחה לצד הכתובת הציבורית. מי שקורא מהר קורא לזה דליפה ואז מבלה שעה בבעיה שאינה קיימת.

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

ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co

אם הפקודה הראשונה מדפיסה כתובת גלובלית והשלישית מחזירה כתובת IPv6 ציבורית שאינה של המנהרה, יש לכם נתיב אמיתי מחוץ למנהרה. אם הראשונה לא מדפיסה דבר מלבד רשומות link-local, מעולם לא הייתה דליפה לתקן.

שלושה תנאים קובעים את הבקרה

ההחלטה אינה "IPv6 טוב" או "IPv6 רע". ההחלטה היא באיזה משלושה מצבים אתם נמצאים, ולכל אחד תשובה נכונה אחרת עם מחיר אחר אם תטעו.

SituationCorrect controlCost if you disable IPv6 instead
Exit has no IPv6, host doesBlock IPv6 deliberately in the tunnel policySame visible result, no documentation of intent
Exit carries IPv6, host leaksRoute IPv6 into the tunnel and verifyYou lose IPv6 reachability entirely
Access network is IPv6-onlyChange nothing; use the tunnel's IPv6Machine loses connectivity completely

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

השורה השלישית היא המקום שבו העצה הגורפת נעשית מזיקה ממש. מפעילי סלולר וחלק מחיבורי הבית מפעילים רשתות IPv6-only עם תרגום ליעדי IPv4. הסירו משם IPv6 והסרתם את התחבורה היחידה שהרשת מציעה, מה שיוצר תקלה גרועה הרבה יותר מזו שתיקנתם.

אם ליציאה אין IPv6, חסמו אותו בכוונה

העדיפו את המנגנון של הלקוח עצמו, כי הוא חל בדיוק כל עוד המנהרה פעילה וחוזר כאשר היא נופלת. OpenVPN יש אפשרות לכך, ול־iptables יש כלל מקביל ללקוחות אחרים:

block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable

ההוראה שייכת לפרופיל; הכלל שייך לחומת אש שתוכלו לבדוק ולהסיר. שניהם נכשלים סגור, וזה מה שאתם רוצים, ושניהם נראים בהשוואת תצורה, מה ש־sysctl של קרנל שקבור בסקריפט אתחול אינו.

רשמו למה הוא שם. כלל חסימה בלי הערה יוסר על ידי האדם הבא שזקוק ל־IPv6 למשהו לא קשור, ואז הדליפה חוזרת בשקט.

אם היציאה נושאת IPv6, נתבו אותו ובדקו את שתי המשפחות

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

ip -6 route get 2606:4700:4700::1111
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
curl -4 -sS --max-time 6 https://ifconfig.co

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

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

אם רשת הגישה היא IPv6 בלבד, הניחו לה

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

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

מה שתבחרו, החזיקו את ההחלטה מפורשת בפרופיל או בחומת האש, קשרו אותה למה שהיציאה באמת תומכת בו, ורשמו את התנהגות הסטאק הכפול שמתארת דיון הסטאק הכפול של RFC 7359 . חסימה מוצהרת היא מדיניות. פרוטוקול כבוי הוא עקיפה שאיש אינו יכול לבקר, ומדף הבדיקה הם נראים זהים.

מאמרים קשורים