dnsmasq מסתיים בשגיאה שהכתובת כבר בשימוש, והיומן מציין את הפורט ולא את האשם. במחשב שמריץ גם VPN, התגובה הראשונה היא להאשים את המסלולים שנדחפו, אבל כשל קשירה מתרחש לפני ששום לקוח שולח שאילתה. משהו כבר מחזיק בסוקט, והמשימה היא לזהות אותו. שינויי מסלול אינם יכולים לשחרר פורט.

חמישה שלבים, בסדר הזה: שחזרו את השגיאה, פרטו את המאזינים, הבינו את ה-wildcard, הקצו את המשימה, ואז אמתו.

שלב 1: שחזור וקריאת השגיאה

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

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

שלב 2: פירוט הבעלים

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

ss -lntup 'sport = :53'

קראו את הפלט בעמודות: תעבורה, כתובת מקומית, פורט, תהליך. מאזין TCP ומאזין UDP הם סוקטים נפרדים, ולכן עצירה של אחד אינה משחררת את השני. כתובת wildcard מכסה כל ממשק, כלומר כתובת ה-VPN כבר תפוסה גם אם אף שורה אינה מזכירה אותה בשמה. ושם התהליך אומר לכם אם מדובר בפותר המנוהל על ידי ההפצה, בקונטיינר, או במשהו שניסוי קודם השאיר פועל.

שלב 3: מלכודת ה-wildcard

האפשרות bind-interfaces משנה אם dnsmasq קושר סוקט wildcard או סוקט אחד לכל ממשק מוגדר, כפי שמתאר מדריך dnsmasq. בלעדיה, dnsmasq עשוי לקשור את ה-wildcard ולסנן בקשות לפי ממשק במקום, מה שנכשל מיד כשדמון אחר מחזיק ב-wildcard. לינוקס מוסיפה את bind-dynamic, שמטפל בממשקים שנוצרים לאחר ההפעלה, דאגה אמיתית כאשר ממשק ה-VPN מופיע רק בעת ההתחברות.

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

שלב 4: הקצאת המשימה

החליטו איזה דמון עונה ללקוחות VPN ואיזה למארח. פותר אחד שמאזין בכתובת המנהרה ומעביר כלפי מעלה הוא סידור נפוץ; שני פותרים שכל אחד מניח שהוא מחזיק בפורט 53 אינו סידור כלל.

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

שלב 5: אמתו את הסוקט, ואז את הנתיב

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

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

מה לא לעשות

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

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

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