Firefox מצביע על 127.0.0.1:8000, קצה N2N פעיל, העמית עונה ל-ping בכתובת השכבה שלו, והדפדפן עדיין מדווח שהפרוקסי סירב לחיבור. שום דבר בשרשרת הזו אינו סותר. שכבה נותנת למארח כתובת נגישה ברשת פרטית; היא אינה יוצרת תהליך שמדבר בפרוטוקול הפרוקסי. הדפדפן לא מבקש מסלול לעמית. הוא מבקש מאזין מקומי.

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

שני חיבורים, לא אחד

החיבור הראשון עובר מהדפדפן לכל מה שמאזין בפורט loopback. זהו socket מקומי, ואם שום דבר אינו מחזיק בו, החיבור נדחה לפני שאפילו חבילה אחת מגיעה ל-N2N. השני עובר מתהליך הפרוקסי למקור שהוא מושך. את המסלול הזה בוחרת טבלת הניתוב של מארח הפרוקסי, והוא יכול להיות ה-uplink הרגיל, מנהרה אחרת או מסלול מדיניות שאין לו שום קשר לשכבה.

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

איפה המאזין חייב לחיות

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

בדקו את ה-bind בפועל עם רשימת sockets ולא עם קובץ התצורה. daemon שהופעל לפני שהשכבה עלתה עלול עדיין להיות קשור לכתובת שאינה קיימת יותר.

localhost אינו העמית

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

supernode-ים עוזרים לקצוות למצוא זה את זה; הם אינם שירות פרוקסי. התייחסות לכתובת supernode כאל נקודת קצה של פרוקסי מייצרת את אותו סירוב עם קפיצת בלבול נוספת.

מסלול אינו יכול לבצע handshake

גם כשהכתובת נכונה, ניתוב אינו פרוקסי. חיבור פרוקסי HTTP מתחיל בבקשת CONNECT או בשורת בקשה בצורה מוחלטת, ופרוקסי SOCKS מתחיל במשא ומתן על גרסה ושיטה. נתב או שכבה מעבירים בתים; הוא אינו מנתח את ההודעות האלה ואינו פותח את החיבור הבא עבורכם. לכן מסלול שעובד ל-ping ול-SSH עדיין יכול להיכשל עבור פרוקסי של דפדפן: הדפדפן זקוק לתהליך משתף פעולה, לא רק לנגישות.

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

בדקו את הגבולות לפי הסדר

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

פרויקט N2N מתעד קצוות ו-supernodes כרכיבי שכבה. הוא אינו הופך קצה לפרוקסי של יישומים, ושום תצורת ניתוב אינה מוסיפה מטפל פרוטוקול שאיש לא הפעיל.

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