העברת פורטים ממסוף
שרת שאתם מפעילים בטרמינל של שיחה מפורסם רק עבור המרחב הזה. לוח הפורטים מזהה
מאזינים שהאפליקציה הזאת הפעילה שם, ממפה אותם, ונותן לכם כתובת לכל מקום שממנו
תרצו להגיע אליהם. שני מרחבים יכולים להאזין שניהם על 5173; המפות שלהם לעולם לא
מתערבבות.
שום דבר כאן לא פותח את המכונה: כל נתיב נוצר על ידי השרת, לפי בקשה, ומת יחד עם הטרמינל או התחנה.
מה מאזין
קטע בשם “מה מאזין”- פתחו את הטרמינל (VM) של השיחה או מעטפת מארח (במרחב או בעמוד PR).
- הפעילו את השרת שלכם —
pnpm dev,python -m http.server 8000, כל דבר. - תוך שניות אחדות סמל התקע בפינה הימנית העליונה של הטרמינל מקבל נקודה. לחצו עליו.
הלוח מפרט כל פורט מאזין עם התהליך שבבעלותו, כ-3000 → 3000: הפורט שהתהליך
נקשר אליו משמאל, הפורט שהוא עונה עליו מקומית מימין (אותו מספר בכל פעם שהוא היה
פנוי במכונה שלכם). כל שורה גם מציינת אם localhost בשולחן העבודה, הדפדפן (VM)
ו-Android יכולים להגיע אליו.
הגילוי תחום: טרמינל (VM) נסרק בתוך האורח הזה; מעטפת מארח נסרקת מתוך עץ התהליכים של ה-PTY של אותה שיחה. מרחבים אחרים, ותהליכים אחרים ב-Mac שלכם, אינם מופיעים ברשימה.
פורטים חדשים בטרמינל הזה מועברים אוטומטית. כבו את העברת פורטים אוטומטית באותו לוח אם אתם רוצים רק את אלה שאתם מוסיפים בעצמכם.
הגעה מהמחשב הזה
קטע בשם “הגעה מהמחשב הזה”השתמשו בהעתק URL מקומי בשורה — http://localhost:3000. ההעברה מאזינה על
loopback בלבד, ולכן שום דבר אחר ברשת שלכם לא יכול לראות אותה.
אם שני מרחבים חושפים את האורח 5173 והמכונה שלכם כבר תופסת את
127.0.0.1:5173, המרחב השני שומר על האורח 5173 ומקבל פורט מקומי זמני. העתקת
URL משתמשת במספר הימני.
במעטפת מארח, התהליך כבר נמצא במכונה שלכם. מיפוי של אותו פורט מקומי אינו משנה דבר; בחירה של פורט מקומי אחר קושרת פרוקסי loopback לזה שבחרתם.
--host (או קשירה ל-0.0.0.0) לא מאפשר לדפדפן (VM) מבודד להגיע לשרת על
ה-Mac. לאורח יש loopback משלו; השרת נוטע מנהרה לתוך האורח הזה כשהלשונית של
הדפדפן נמצאת באותו מרחב.
הגעה מהדפדפן (VM)
קטע בשם “הגעה מהדפדפן (VM)”פתחו את הדפדפן המבודד באותה שיחה. הקלידו localhost:<left-hand port> —
המספר שהתהליך נקשר אליו. מיפוי מחדש (5173 → 3000) עונה גם הוא במספר הימני
באותו דפדפן, כך שהעתקת URL עובדת גם שם. ה-browser_use של סוכן יכול לנווט
לאחד מהם. שרת במרחב A לעולם לא מופיע כ-localhost:5173 בדפדפן של מרחב B.
השתמשו ב-localhost, ולא בכתובת IP של LAN ולא ב---host. לאורח יש loopback
משלו; המנהרה מאזינה שם גם ב-IPv4 וגם ב-IPv6.
דפים שפותחים חיבורים רבים בבת אחת (עשרות נכסים, שקע רענון חי) חולקים את אותה מנהרה. הדפדפן (VM) מרבב אותם על exec מתמשך אחד, כך שפרץ של בקשות אינו הפעלת תהליך לכל חיבור ואינו מסתיים בפסק זמן כדף לבן.
בתוך מרחב אחד, העברה של טרמינל (VM) גוברת על מעטפת מארח באותו מספר. בין מרחבים אין קדימות — אלה מפות נפרדות.
הגעה מ-Android
קטע בשם “הגעה מ-Android”פתחו את הלשונית Android של אותו מרחב. ה-localhost:<port> של האמולטור
מופנה אז לאחור אל הפורט המפורסם של המרחב הזה (adb reverse). אמולטור אחד הוא
גלובלי למכשיר: חיבור של מרחב B מכוון מחדש את :5173 ל-B ומפיל את זה של A.
סגרו את הלשונית וההפניות לאחור שהתחנה הזאת נטעה מוסרות.
סימולטור iOS הוא ממילא ה-Mac — בלי הפניה לאחור. iPhone פיזי עדיין זקוק לשיתוף ברשת המקומית.
שיתוף ברשת שלכם
קטע בשם “שיתוף ברשת שלכם”⋯ → שתף ברשת המקומית מפרסם את הפורט ב-<server-ip>:<random port> — שימושי
לפתיחת הדף בטלפון שלכם, או כשהשרת רץ על מכונה אחרת.
- פורט ה-LAN מוקצה תמיד על ידי מערכת ההפעלה, אף פעם לא המספר של האורח, כך שהחשיפה היא כתובת מכוונת וגלויה ולא כתובת שאפשר לנחש.
- הוא נשאר פרטי (loopback בלבד) עד שתהפכו אותו, ו**⋯ → מקומי בלבד** מוציא אותו בחזרה מהרשת.
תנו לו שם — עם HTTPS
קטע בשם “תנו לו שם — עם HTTPS”⋯ → הגדר דומיין דפדפן (.test) מקצה לפורט דומיין פיתוח כגון myapp.test.
בתוך הדפדפן (VM), https://myapp.test טוען אז את השרת שלכם עם מנעול תקף —
שימושי לכל דבר שמתנהג אחרת במקור בעל שם או בהקשר מאובטח (עוגיות,
service workers, callbacks של OAuth).
- דומיינים חייבים להסתיים ב-
.testאו ב-.localhost— שני ה-TLD-ים השמורים לפיתוח, כך ששם פיתוח לעולם לא יסתיר אתר אמיתי. - שמות דומיין ייחודיים בשרת; מספרי פורט לא. שני מרחבים יכולים להשתמש
שניהם ב-
5173, אבל הם לא יכולים לתבוע שניהם אתmyapp.test. - האישור מגיע מרשות מקומית שהונפקה בשרת שלכם בפעם הראשונה שנדרש. המפתחות שלה נמצאים תחת ספריית הנתונים של השרת ולעולם לא נכנסים לשום אורח; הדפדפן המבודד נותן אמון בדיוק במפתח הזה, כך ש-TLS לאינטרנט האמיתי עדיין מאומת כרגיל.
- הדומיין נפתר בתוך הדפדפן (VM) בלבד. הדפדפן שלכם במארח משתמש
ב-
localhost:<port>במקום. - גם
http://myapp.testפשוט עובד.
העברת פורט ידנית
קטע בשם “העברת פורט ידנית”הוסף פורט בתחתית הלוח ממפה פורט לפני שמשהו מאזין עליו (או בלי קשר לכך). העברה ידנית שומרת על הכתובת שלה בזמן שהשרת שלכם מופעל מחדש — השורה מציגה לא מאזין עד שהוא חוזר — בעוד שהעברות אוטומטיות נעלמות כשהפורט שלהן נעלם. במעטפת מארח אפשר גם להגדיר פורט מקומי אחר.
איך זה נשאר מבודד
קטע בשם “איך זה נשאר מבודד”פורטים נקבעים לפי סביבת עבודה ומרחב. מפת הפורטים של ההיפרוויזר קבועה כשמכונה מאותחלת, ולכן טרמינל (VM) נסמך על שני ערוצים צרים שהשרת שולט בהם: נתיב נכנס אחד שנוצר מראש לתוך האורח, שמסרב להתחבר לכל פורט שהאורח לא באמת מאזין לו, ומנהרות הפוכות שהשרת מחזיק פתוחות עבור הדפדפן (VM) ו-Android. מעטפת מארח לעולם לא סורקת את כל המכונה. שום מאזין לא נוצר אי פעם בתוך אורח שהשרת לא הציב אותו שם, והכול מפורק יחד עם הטרמינל או התחנה. התכנון מוסבר ב תחנות ומתחמים מבודדים; הפורטים השמורים המדויקים וכללי הדומיין נמצאים ב מדריך העזר לתחנות.
נושאים קשורים
קטע בשם “נושאים קשורים”- תנו לסוכן מחשב לבדיקות — פתיחה, צפייה והשתלטות על תחנות
- מדריך העזר לתחנות — פורטים שמורים, TLD-ים לפיתוח, ברירות מחדל