למה המצב המיוחס רחב ממה ש-VPN צריך
מכולה מיוחסת מעניקה התקנים ויכולות שאין להם קשר למנהור. מצאו את הדרישה האחת שמאחורי השגיאה לפני שתשתמשו בה כמתג.
המכולה לא רצתה לפתוח את המנהור שלה, ולכן נוסף הדגל המיוחס, וכעת זה עובד. הרצף הזה הוכיח רק שחסר לפחות אישור אחד, והוא אינו אומר דבר על איזה. המצב המיוחס מעניק סט של יכולות וגישה להתקנים רחב בהרבה ממה שממשק מנהור צריך.
מה הדגל באמת משנה
מכולה מיוחסת מקבלת יכולות רחבות וגישה להתקני המארח, וזו הענקה גדולה בהרבה מזו שדורש נתיב הרשת. את הסט המדויק מתעד סביבת ההרצה ולא קובעת אותו מסורת, ותיעוד Docker להרצת מכולות מתאר את אפשרויות המיוחדות הזמינות. קריאה אחת מספיקה כדי לראות שהמנהור הוא חלק קטן מהסך הכול.
שתי דרישות צרות יותר מכסות את רוב מכולות ה-VPN. הגדרת ממשק דורשת את יכולת ניהול הרשת, ופתיחת התקן המנהור דורשת גישה לאותו צומת התקן מדויק. אלה הענקות נפרדות, וגם שתיהן יחד צרות מהאפשרות הגורפת. לשאר הסט המיוחס אין שום קשר למנהור. הוא קיים לעומסי עבודה שבאמת זקוקים לגישה ברמת המארח, ומכולת VPN בדרך כלל אינה אחד מהם.
התאימו כל שגיאה לדרישה מקדימה אחת
הודעת השגיאה אומרת לכם איזו דרישה מקדימה חסרה אם תקראו אותה לפני שתשתיקו אותה. הודעה על צומת התקן נוקבת בהתקן, הודעה על פעולה שאינה מורשית נוקבת ביכולת, והודעה על מודול או sysctl נוקבת בתמיכת ליבה. לכל אחת מהן תיקון אחר, ורק אחת מהן היא יכולת.
קובץ תצורה חסר נשאר חסר לאחר מתן כל היכולות, ולכן המצב המיוחס לפעמים אינו משנה דבר בכלל. המכולה עולה, המנהור עדיין נכשל, והשגיאה האמיתית מעולם לא הייתה על הרשאות. תמיכת הליבה היא המקרה השלישי והקל ביותר לקריאה שגויה. מודול שאינו טעון במארח אינו יכול להיטען מתוך מכולה ללא הרשאות, ומתן יכולות נוספות בתוך המכולה אינו משנה את מצב המארח.
בדקו את הדרישה, לא את התסמין
התחילו מהקריאה המינימלית שהתמונה מתעדת, הריצו אותה, ושמרו את טקסט הכשל המדויק. אחר כך הוסיפו הענקה אחת בכל פעם וציינו איזו תוספת שינתה את התוצאה.
ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun image:tag
ip -br link show type tunמכולה שרואה את ההתקן ומחזיקה ביכולת אך עדיין נכשלת אומרת לכם שהבעיה במקום אחר. זו תוצאה שימושית, והמצב המיוחס היה מסתיר אותה.
בדקו גם את הרשאות ההתקן במארח, כי צומת התקן שהוענק כראוי עם בעלות קבוצה שגויה מפיק את אותה שגיאה כמו הענקה חסרה.
רשמו את ההענקה הצרה ביותר שעובדת
רשמו כל התקן ויכולת שהפריסה זקוקה להם, יחד עם השגיאה שהצדיקה אותם. הרישום הזה הוא מה שמאפשר לאדם הבא להסיר משהו בבטחה, וזה מה שמבקר יבקש כאשר מכולה תדווח כמיוחסת.
סקרו גם את ההקשר שמסביב, כי רשת המארח, עיגוני המארח ואפשרויות סביבת ההרצה יכולים כל אחד להרחיב את השפעת ההענקה. קריאה מבודדת במעבדה שמשלבת את כולם אינה תצורת ייצור, טוב ככל שעבדה. בדקו את היישום, את התנהגותו ב-DNS וכשל מנהור לפני שתכריזו שהפריסה הושלמה. הרשאה ליצור ממשק אינה מדיניות יציאה, ומכולה שמנהורת בצורה מושלמת עדיין מנתבת כל מה שהיישום שולח.