curl socks5h לעומת socks5: מי פותר את שם המארח
האות הנוספת מעבירה את שאילתת ה-DNS, לא את ההצפנה. השוו את שתי הצורות, ואז בדקו איזה שם מארח עדיין זקוק לפותרת מקומית.
אנשים מתייחסים אל socks5h כאל socks5 עם כתיב ידידותי יותר, ומצפים ששניהם ישלחו את אותה בקשה לאותו מקום. האות הנוספת מעבירה במקום זאת את שאילתת ה-DNS. במחשב שהפותרת והפרוקסי שלו נמצאים ברשתות שונות, זהו ההבדל בין בקשה שעובדת לבקשה שנכשלת.
אות אחת, שתי פותרות
הסכימה קובעת היכן שם היעד הופך לכתובת. פתרון מקומי משתמש בפותרת שהוגדרה במחשב שלכם. פתרון מרוחק מכניס את שם המארח לתוך בקשת SOCKS, והפרוקסי מחפש אותו עם הפותרת שלו ועם תפיסת הרשת שלו. שתי הצורות עדיין מתחברות לאותה כתובת פרוקסי באותו פורט, כך שההבדל הוא בגוף הבקשה, לא בנתיב.
שום דבר בסכימה לא משנה הצפנה או אימות; רק נתיב ה-DNS זז. לכן קל להתעלם מהאות ויקר לטעות בה.
אותו פרוקסי, בקשה אחרת
שתי הקריאות נבדלות בתו אחד בלבד. כל השאר זהה:
curl --proxy socks5://proxy.example:1080 https://service.example/
curl --proxy socks5h://proxy.example:1080 https://service.example/The מדריך הפרוקסי של curl מתעד את הסכימות האלה בנפרד, וזו הסיבה הסמכותית לא להתייחס אליהן ככינויים. הריצו את שתיהן מול נקודת קצה לא מזיקה שמותר לכם להשתמש בה וקראו את ההבדל. חיפוש מרוחק מוצלח לא אומר דבר על יישומים אחרים, כי דפדפנים, מנהלי חבילות וסביבות הרצה של שפות בוחרים כל אחד בעצמו.
שם הפרוקסי עצמו נפתר מקומית
בפקודה הזו, proxy.example חייב להפוך לכתובת לפני שדבר אחר קורה, והחיפוש הזה תמיד מקומי. העברת הפתרון של service.example לפרוקסי לא עושה דבר לשם הפרוקסי עצמו, שעדיין זקוק לפותרת שהמחשב שלכם יכול להגיע אליה. כאן VPN משנה את התמונה.
אם שם הפרוקסי נפתר רק בתוך המנהרה, החיבור תלוי בכך שהמנהרה תהיה למעלה לפני ש-curl מתחיל. איזו סכימה תנצח אז תלוי באיזה צד יכול לענות. כשהמחשב שלכם לא יכול לפתור את היעד אבל הפרוקסי יכול, socks5 נכשל ו-socks5h מצליח. כשהמחשב שלכם פותר אותו דרך המנהרה והפרוקסי לא יכול, socks5 עובד ו-socks5h נכשל.
הסכימה לא מציבה את החיבור לפרוקסי בתוך או מחוץ ל-VPN; טבלת הניתוב עושה זאת, והסכימה אף פעם לא רואה אותה. לכן מנהרה אחת יכולה לתקן סכימה אחת ולשבור את השנייה באותו מחשב. האות רק קובעת מי שואל את השאלה.
מה כל צד יכול לפתור
פרוקסי ציבורי לא יכול לפתור שם שקיים רק בחברה, ולכן שליחת שם המארח אליו נכשלת בפרוקסי ומופיעה כשגיאת פרוקסי ולא כשגיאת DNS מקומית. פרוקסי בתוך אותה רשת פרטית בדרך כלל יכול לפתור את השמות האלה, ושם socks5h מצדיק את קיומו. בחרו את מיקום הפותרת לפי המדיניות שבאמת דרושה לכם, כי DNS מרוחק אינו בהכרח יכול יותר והוא אכן מוסר את השם לצד שלישי. ליעד ציבורי שתי הצורות עובדות, אז העדיפו את זו שכלים אחרים שלכם כבר משתמשים בה.
כתבו את הבחירה הזו ב-runbook ולא בהערה, והרחיקו אישורים מהיסטוריה משותפת ומפלט אבחון. אחר כך שנו משתנה אחד בכל פעם: אותו יעד, אותו בינארי, אותה פותרת, אות אחת.
איזה בינארי ענה
שני בינאריים של curl באותו מחשב יכולים להיות שונים בגרסה ובתכונות בנייה. בקונכייה דמוית Unix, type -a curl מפרט כל התאמה בנתיב ו-curl --version מציג את התכונות של זה שירוץ. סקריפט עטיפה או כינוי מוקדם יותר בנתיב הם סיבה נפוצה לכך שהתוצאות לא תואמות את הבינארי שאתם חושבים שאתם בודקים.
סכימה לא נתמכת, פרוקסי שלא יכול לפתור את השם ויעד בלתי נגיש הם שלוש שגיאות שונות, אז קראו את ההודעה לפני שתשנו את האות. בנייה בלי התחביר socks5h מדווחת על מחרוזת הפרוקסי כלא נתמכת, וזה לא זהה לשם שלא נפתר. אל תהפכו דוח ישן אחד על curl של המערכת לחוק קבוע לכל פלטפורמה.