שרת עם ufw שחוסם תעבורה נכנסת נראה סגור. ואז קובץ Compose מפרסם פורט של מסד נתונים, ומסד הנתונים נגיש מהאינטרנט בכל זאת.
ההסבר הזה מראה את שלושת המקומות שמהם בקשה יכולה להגיע, ואיך כל דרך לפרסם פורט משנה מי מהם מגיע ל-container.
נסו בעצמכם
- האינטרנטחסום הפורט לא מפורסם.
- ה-host של Dockerמגיע ה-host מגיע לכל פורט של container ברשתות ה-bridge שלו.
- container באותה רשתמגיע Containers באותה רשת מגיעים זה לפורטים של זה לפי שם.
container, פורט 80
מיפוי פורט: אין רשומת ports:
ufw: כבוי
מהאינטרנט: חסום. מה-host: מגיע. מאותה רשת: מגיע.
שלב אחר שלב
Compose מציב את השירותים של פרויקט ברשת bridge משלהם. כל פורט של container ברשת הזו נגיש מה-host של Docker ומה-containers האחרים באותה רשת, לפי שם השירות, בין אם פורסם ובין אם לא.
שום דבר מחוץ לשרת לא מגיע אליו: בלי
ports:, ל-container אין כתובת באינטרנט.ב-
ports: ["8080:80"]אין כתובת host, ולכן Docker מפרסם את הפורט על כולן:0.0.0.0ו-[::]. כל מי שמגיע לכתובת ה-IP הציבורית של השרת בפורט 8080 מגיע עכשיו לפורט 80 של ה-container.זה מה שמיפוי פורט שהועתק מ-README עושה בדרך כלל.
הפעילו את ufw עם ברירת המחדל "deny incoming" והפורט נשאר פתוח. Docker מנתב תעבורה לפורט מפורסם בכללי סינון משלו, לפני שהכללים של ufw מופעלים, ולכן ufw לא רואה אותה בכלל.
כדי לסנן פורט מפורסם, השתמשו בשרשרת
DOCKER-USERשל Docker או בחומת האש של הספק, או אל תפרסמו אותו על כתובת ציבורית בכלל.
ports: ["127.0.0.1:8080:80"]מפרסם את הפורט על כתובת ה-loopback בלבד. ה-host מגיע אליו ב-localhost:8080; האינטרנט לא, עם ufw או בלעדיו.הציבו reverse proxy לפני מה שצריך להיות ציבורי, וגשו לממשקי ניהול דרך SSH tunnel:
ssh -L 8080:127.0.0.1:8080 <user>@<server>.
ערכים לדוגמה הפורטים 8080 ו-80 הם ערכים לדוגמה.
מה התרשים מראה
התרשים מראה container עם פורט 80, מיפוי פורט, ufw ושלושה מקורות: האינטרנט, ה-host של Docker ו-container אחר באותה רשת. כל מקור מסומן "מגיע" או "חסום", עם הסיבה.
הבקרים בוחרים איך הפורט מפורסם (לא מפורסם, על כל הכתובות, על 127.0.0.1) והאם ufw חוסם תעבורה נכנסת. רק פרסום על כל הכתובות מכניס את האינטרנט, ו-ufw לא משנה את זה; ה-host וה-containers באותה רשת מגיעים לפורט תמיד.
נסו בכלי
מה לא מכוסה כאן
מכסה את רשתות ה-bridge של Docker Engine עם כללי ה-iptables של ברירת המחדל ב-Linux. Docker במצב rootless, Docker Desktop, מצב רשת host והגדרות חומת אש מותאמות מתנהגים אחרת.
עמודים קשורים
מקורות
האופן שבו ANAROQ מתעד מקורות לנתונים ולמספרים מתואר במתודולוגיה. למתודולוגיה