אני בונה Toolz.dev, ולצד התוספים של וורדפרס וממשקי ה-API של Laravel ביליתי חלק נכבד מהזמן בקונסולות ענן בגילוף VPC וכתיבת חוקי חומת אש. Subnetting היא אחת מאותן מיומנויות שבהן התיאוריה פשוטה והחשבון הוא מטופש, והחלק המטופש הוא בדיוק המקום שבו מסתתרות טעויות. שלחתי קבוצת אבטחה שאפשרה א /16 כשהתכוונתי א /24, פתיחת רשת הרבה יותר רחבה מהמתוכנן, כי עשיתי את חשבון המסכה בראש וטעיתי קצת. ה מחשבון IP Subnet קיים כך שלעולם לא יקרה שוב ביד מדריך זה מסביר מה הוא מחשב, מדוע המספרים יוצאים כפי שהם יוצאים, ואת מקרי הקצה שמעכבים גם אנשים וגם את המחשבונים הנאיביים שהם סומכים עליהם.
TL;DR: מחשבון רשת משנה IPv4 לוקח כתובת וקידומת CIDR, כגון
192.168.1.10/24, וגוזר את כתובת הרשת, כתובת השידור, המארח השמיש הראשון והאחרון, מסכת רשת המשנה, מסכת תווים כלליים וספירת כתובות כוללת ושמישה. זה עובד על ידי התייחסות לכתובת כמספר שלם של 32 סיביות והחלת המסכה עם פעולות סיביות. זה מטפל נכון בשני מקרי הקצה החשובים, מטפל ב/31כקישור של שני מארחים מנקודה לנקודה לכל RFC 3021 ו-a/32כמארח יחיד, והוא מקבל מסכה מנוקדת במקום הקידומת. זה פועל כולו בדפדפן שלך, כך ששום כתובת שאתה מזין לא מועלית.
מהי רשת משנה ומה משמעות הקידומת?
כתובת IPv4 היא 32 סיביות, כתובה כארבע אוקטטים עשרוניים כמו 192.168.1.10. רשת משנה היא בלוק רציף של אותן כתובות שחולקות את אותם ביטים מובילים קידומת CIDR, המספר שאחרי הלוכסן, אומרת כמה מתוך 32 הביטים קבועים כחלק הרשת. הסיביות הנותרות חופשיות להשתנות ולזהות מארחים בודדים. כך /24 מתקן את 24 הסיביות הראשונות ומשאיר 8 למארחים, /16 מתקן 16 ועוזב 16, ו /30 מתקן 30 ומשאיר רק 2.
מספר הכתובות בבלוק הוא שתיים מועלות בחזקת הסיביות המארחות. א /24 יש 8 סיביות מארח, אז 2 עד 8, שזה 256 כתובות. א /16 יש 16 סיביות מארח, אז 65,536 כתובות. א /30 יש 2 סיביות מארח, אז 4 כתובות. זה כל הבסיס של המתמטיקה, וברגע שאתה מפנים את " כתובות שוות שתיים בחזקת שלושים ושתיים פחות הקידומת," רוב רשתות המשנה מפסיקות להיות מסתוריות.
CIDR, ראשי תיבות של Classless Inter-Domain Routing, הוצג ב RFC 4632 כדי להחליף את המערכת הקלאסית הישנה, שבה כתובת 's class תוקנה על ידי השמינייה הראשונה שלה. כתובת קלאסית בזבזה כמויות אדירות של מקום, כי היית צריך לקחת בלוק Class A, B או C שלם גם אם היית צריך משהו באמצע. CIDR מאפשר לך לבחור כל אורך וגודל קידומת של רשת למה שאתה צריך. התוויות המסווגות A, B ו-C עדיין מופיעות בכלים, כולל שלי, אבל הן אינפורמטיביות כעת; הקידומת היא זו שמחליטה על גבול הרשת.
מדוע שתי כתובות בכל רשת משנה אינן שמישות?
ברשת משנה רגילה, הכתובת הראשונה והאחרונה שמורות ולא ניתן להקצותן למארח הכתובת הראשונה, כאשר כל סיביות המארח מוגדרות לאפס, היא כתובת הרשת, והיא נותנת שמות לרשת המשנה עצמה הכתובת האחרונה, כאשר כל סיביות המארח מוגדרות לאחד, היא כתובת השידור, וחבילה שנשלחת אליה מגיעה לכל מארח ברשת המשנה בבת אחת, מכיוון ששני אלה מדוברים, ספירת המארח השמישה היא המספר הכולל של כתובות פחות שתיים.
לכן א /24 יש 256 כתובות בסך הכל אבל רק 254 כתובות שמישות, ולמה א /30, עם 4 כתובות, נותן לך בדיוק 2 מארחים שמישים. ה /30 האם הבחירה הקלאסית לקישור בין שני נתבים, מכיוון שקישור מנקודה לנקודה צריך בדיוק שתי כתובות ותו לא. המחשבון מאיית את כתובות הרשת והשידור במפורש, יחד עם המארח השמיש הראשון והאחרון, כך שלעולם לא תצטרך להבין אילו כתובות אינן מוגבלות.
איך המחשבון מחשב את המספרים?
מתחת למכסה המנוע הוא אריתמטי סיביות על מספרים שלמים של 32 סיביות, שזו הדרך המהירה והפחות מועדת לשגיאות לעשות זאת. הכתובת נארזת במספר שלם בודד ללא סימן על ידי הזזת כל אוקטט למקומו. המסכה של קידומת היא רצף של אחדים ואחריהם אפסים, המיוצרים על ידי הזזה 0xFFFFFFFF עזב על ידי 32 minus the prefix. משם, כל ערך הוא פעולה אחת:
- כתובת הרשת היא הכתובת עם ה-AND עם המסכה, המאפסת את הסיביות המארחות.
- כתובת השידור היא הרשת ORed עם היפוך של המסכה, אשר מגדירה את כל הסיביות המארחות.
- מסכת התווים הכלליים היא פשוט היפוך סיביות של מסכת רשת המשנה.
- המארח השמיש הראשון הוא כתובת הרשת פלוס אחד, והאחרון הוא השידור מינוס אחד.
לעשות את זה ככה עוקף את הטעויות שמתגנבות כשאנשים ממירים למחרוזות בינאריות ביד. זה גם הופך את ההמרה ההפוכה לטריוויאלית: להפוך מסכה מנוקדת כמו 255.255.255.0 בחזרה לקידומת, אתה סופר את הסיביות המובילות, והמחשבון עושה זאת כאשר אתה מזין מסכה במקום סימון לוכסן. הכל נשאר כמספרים שלמים של 32 סיביות לא חתומים לאורך כל הדרך, מה שחשוב ב-JavaScript כי אתה צריך לכפות פרשנות לא חתומה כדי למנוע מספרים שליליים לזחול פנימה בסיבית הגבוהה.
מהם מקרי הקצה שרוב הכלים טועים?
שתי קידומות שוברות את " מינוס two" כלל, ומספר מפתיע של מחשבונים מטפלים בהם בצורה לא נכונה.
הראשון הוא /31. לפי הכללים המקוריים א /31 יהיו שתי כתובות, שתיהן שמורות, ומשאירות אפס מארחים שמישים, וזה חסר תועלת. RFC 3021 תיקן זאת על ידי מתן אפשרות ל /31 בקישורים מנקודה לנקודה, שבהם אין צורך בכתובת שידור, כך ששתי הכתובות שלה הופכות לשימושיות מחשבון זה מדווח על א /31 כשני מארחים שמישים עם כתובות הרשת והשידור מוכפלות כשתי כתובות המארחים, וזה מה שנתבים מודרניים עושים בממשקים טוריים ונקודה לנקודה.
השני הוא /32. א /32 האם כתובת יחידה, מסלול מארח הוא מייצג בדיוק מכונה אחת, שהיא האופן שבו כתובות loopback, כללי חומת אש ספציפיים למארח ומסלולים בודדים באים לידי ביטוי המחשבון מדווח עליו כמארח שמיש אחד עם כתובת הרשת שווה לכתובת עצמה וללא טווח נפרד כלי שמפחית באופן עיוור שניים ידווח על מארחים שליליים או אפס עבור שני אלה, וזה שטויות, ווידאתי שזה לא.
כיצד להשתמש במחשבון רשת המשנה
שלב 1: הזן כתובת וקידומת
הקלד כתובת IPv4 עם קידומת CIDR, כגון 10.0.0.0/8 או 192.168.1.10/24. הקידומת יכולה להיות כל דבר מ-0 עד 32. אם אתה מדביק כתובת ללא קידומת, הכלי מניח א /24, ברירת המחדל הנפוצה ביותר, ומשם אתה יכול להתאים.
שלב 2: או השתמש במסכת רשת משנה מנוקדת
אם יש לך מסכה ולא קידומת, הזן את הכתובת והמסכה מופרדים ברווח, כמו 192.168.1.10 255.255.255.0. המחשבון סופר את הסיביות המובילות במסכה, ממיר אותה לקידומת התואמת ודוחה כל מסכה שהמסכה שלה אינה רציפה, כי מסכה כזו אינה מסכת CIDR חוקית.
שלב 3: קרא את התוצאות
אתה מקבל את כתובת הרשת, כתובת השידור, טווח המארח השמיש, מסכת רשת המשנה, מסכת התווים הכלליים, ספירת הכתובות הכוללת והשמישה, טווח הסיווג והאם הכתובת פרטית תחת RFC 1918. יש גם תצוגה בינארית של הכתובת והמסכה, שזו הדרך המהירה ביותר לראות בדיוק היכן נופל גבול הרשת.
שלב 4: העתק את מה שאתה צריך
לכל ערך יש כפתור העתקה, כך שתוכל להרים את סימון ה-CIDR לטבלת מסלולים, את טווח המארח לתיעוד, או את מסכת התווים הכלליים לרשימת גישה של Cisco מבלי להקליד מחדש ולהסתכן באוקטט שעבר טרנספוזיציה.
מסכת רשת משנה והפניה לקידומת
זו הטבלה שאני חוזר אליה כל הזמן, והמחשבון מייצר אותה בשידור חי כך שהמספרים לעולם לא יהיו מעופשים.
| CIDR | מסכת רשת משנה | סך כל הכתובות | מארחים שמישים |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
התבנית שווה שינון: כל עליית מדרגה בקידומת מחצאית את הבלוק.A /25 הוא חצי א /24, א /26 הוא רבע, וכן הלאה. כשאתה מפצל רשת, החצייה הזו היא המודל המנטלי, והמחשבון מאשר את הגבולות המדויקים כך שאתה לא צריך לסמוך על המודל המנטלי לבד.
איך מפצלים רשת אחת לתת-רשתות קטנות יותר?
המשימה האמיתית הנפוצה ביותר היא לא חישוב רשת משנה אחת אלא חלוקת בלוק גדול יותר לכמה קטנות יותר, וכאן המחשבון מרוויח את החזקתו. תגיד שאתה מקבל 10.0.0.0/16 עבור VPC ענן וצריך לגלף אותו לרשתות משנה עבור שכבה ציבורית, שכבה פרטית ושכבת מסד נתונים. כל עלייה בקידומת מכפילה את מספר רשתות המשנה ומקטינה בחצי את גודלן, כך שעוברת מ /16 ל /18 נותן לך ארבעה בלוקים שווים של 16,384 כתובות כל אחד: 10.0.0.0/18, 10.0.64.0/18, 10.0.128.0/18, ו 10.0.192.0/18. אתה יכול לבדוק כל אחד מהגבולות האלה על ידי הדבקתו במחשבון ואישור הרשת וכתובות השידור מסתדרות ללא פערים וללא חפיפות.
המלכודת כאן היא שרשתות משנה חייבות ליפול על הגבולות הטבעיים שלהן. א /26 בלוק לא יכול להתחיל בשום כתובת; הוא צריך להתחיל בכפולה של 64 באוקטט האחרון שלו, כי 64 הוא גודל הבלוק עבור a /26. אם תנסה להתחיל את זה ב .30, כתובת הרשת שהמחשבון מדווח לא תתאים למה שהקלדת, שזו הדרך המהירה ביותר לתפוס את הטעות. כשאני מתכנן VPC, אני מדביק כל רשת משנה מיועדת בתורה וקורא בחזרה את כתובת הרשת; אם הכלי מציג כתובת רשת שונה מזו שהתכוונתי להגדיר, אני יודע שהגבול שלי שגוי לפני שאי פעם יישם אותה. אותה דיסציפלינה עובדת עבור נתב ' מסלולים סטטיים ועבור כללי חומת אש, שבהם בלוק מחוץ לגבול מכסה בשקט כתובות שלא התכוונת.
יש גם עדינות בעולם האמיתי ששווה לתת שם: ספקי ענן שומרים כמה כתובות בתוך כל רשת משנה מעבר לרשת וצמד שידורים AWS, למשל, שומרת חמש כתובות לכל רשת משנה, לא שתיים, לוקחת את ארבע הראשונות והאחרונה המחשבון מדווח על טווח מארח RFC קפדני, אז ב-AWS אתה מפחית עוד שלוש מהספירה השמישה שהוא מראה, כלומר מוסכמה של ספקים מרובדת על גבי התקן, לא פגם במתמטיקה, אבל זה בדיוק מסוג הדברים שמשאירים לך שני מארחים קצרים אם אתה שוכח את זה.
אילו טווחים הם פרטיים, ולמה זה משנה?
RFC 1918 שומרת שלושה בלוקים לשימוש פרטי: 10.0.0.0/8, 172.16.0.0/12, ו 192.168.0.0/16. אלה אינם ניתנים לניתוב באינטרנט הציבורי, והם הטווחים שכמעט כל רשת ביתית ומשרדית משתמשת מאחורי נתב שעושה תרגום כתובות רשת. המחשבון מסמן אם הכתובת שהזנת נופלת באחד מהם, שזו בדיקת שפיות מהירה כאשר אתה מתכנן סכימת כתובות ורוצה לאשר שאתה עובד בתוך שטח פרטי במקום להשתמש בטעות בכתובת ששייכת למישהו אחר באינטרנט הציבורי. זה גם דחיפה שימושית כשאתה רואה "public" דגל על כתובת שציפית להיות פנימית, כי זה אומר לעתים קרובות שגיאת הקלדה בשמינייה הראשונה.
איפה מחשבון רשת המשנה מתאים לכל השאר
עבודת רשת מתרחשת לעתים רחוקות בבידוד. כאשר אתה מגדיר את התשתית מאחורי יישום, אתה גם מאתר באגים בתגובות HTTP, מנתח סוכני משתמשים ומייצר אישורים עבור שירותים פנימיים הפניה לקודי סטטוס HTTP האם המלווה לשכבת היישום, ה מנתח סוכן משתמש על שהבנת מה פוגע בשרתים שלך, וה מחולל אישורים בסיסי עבור האישורים המגנים על נקודות קצה פנימיות. אם אתה ממיר בין בסיסי מספרים בזמן קריאת מסכות בבינארי, ה ממיר בסיס מספרים מטפל בשלב העשרוני לבינארי ישירות. ובצד האבטחה, ה מאמת כרטיס אשראי הוא המסנן הקדמי לקופה שפועל ברשת שעיצבת זה עתה.
לתמונה הרחבה יותר, ה כלי פרודוקטיביות למפתחים roundup מכסה את כלי השירות שנוטים לשבת פתוחים בלשונית כל היום, ואת מדריך כלי קידוד שם את מחשבון רשת המשנה בהקשר של ערכת כלים מלאה למפתחים כמו כל דבר ב-Toolz.dev, הוא פועל כולו בדפדפן שלך, כך שהכתובות שאתה מתכנן איתן לעולם לא עוזבות את המחשב שלך.
שאלות נפוצות
מה המשמעות של קידומת CIDR?
קידומת CIDR היא המספר שאחרי הלוכסן, והיא סופרת כמה ביטים מובילים של הכתובת מזהים את הרשת. א /24 מתקן את 24 הסיביות הראשונות לרשת ומשאיר 8 סיביות למארחים, שהם בסך הכל 256 כתובות ו-254 כתובות שמישות קידומת קטנה יותר מכסה יותר כתובות, וגדולה יותר מכסה פחות.
כמה מארחים שמישים נמצאים ברשת משנה?
לקידומת של /30 או קטן יותר, ספירת המארח השמיש היא סך הכתובות מינוס שתיים, כי הכתובת הראשונה היא הרשת והאחרונה היא השידור. א /24 יש 254 מארחים שמישים, א /26 יש 62, וא /30 יש 2. שני החריגים הם /31, שיש לו 2 מארחים שמישים, ו /32, שיש לו 1.
מה ההבדל בין כתובת הרשת לכתובת השידור?
כתובת הרשת היא הכתובת הראשונה בבלוק ומזהה את רשת המשנה עצמה, כאשר כל סיביות המארח מוגדרות לאפס כתובת השידור היא הכתובת האחרונה, כאשר כל סיביות המארח מוגדרות לאחת, וחבילה שנשלחת אליה מגיעה לכל מארח ברשת המשנה בבת אחת. לא ניתן להקצות אף אחד למארח בודד ברשת משנה רגילה.
כיצד אוכל להמיר מסכת רשת משנה לקידומת CIDR?
ספור את ה-one-bits המובילים במסכה. 255.255.255.0 הוא 24 סיביות אחת, אז זה כן /24; 255.255.240.0 הוא 20 סיביות, אז /20. המחשבון מבצע המרה זו באופן אוטומטי כאשר אתה מזין מסכה מנוקדת במקום קידומת, והוא דוחה כל מסכה שאלו אינן צמודות.
למה משמשת מסכת תווים כלליים?
מסכת תווים כלליים היא היפוך הסיביות של מסכת רשת המשנה, אז /24 נותן 0.0.0.255. הוא משמש ברשימות בקרת גישה של Cisco ובהצהרות רשת OSPF, כאשר אמצעי סיביות אפס תואמים את הסיביות הזו בדיוק וסיביות אחת פירושה התעלמות ממנה. קל לבלבל עם מסכת רשת המשנה, וזו הסיבה שהמחשבון מציג את שניהם זה לצד זה.
מדוע /31 מציג שני מארחים שמישים?
RFC 3021 מאפשר א /31 בקישורים מנקודה לנקודה, שבהם אין צורך בכתובות הרשת והשידור, כך ששתי הכתובות שלה הופכות לכתובות מארח שמישות. בלי כלל זה א /31 יהיו אפס מארחים שמישים, וזה חסר תועלת. א /32 האם מקרה הקצה הקשור ומייצג מארח בודד, כגון לולאה חוזרת או מסלול מארח.
אילו טווחי IPv4 הם פרטיים?
עתודות RFC 1918 10.0.0.0/8, 172.16.0.0/12, ו 192.168.0.0/16 עבור רשתות פרטיות אלה אינם ניתנים לניתוב באינטרנט הציבורי והם הטווחים שבהם רוב הרשתות הביתיות והמשרדיות משתמשות מאחורי נתב שעושה NAT. המחשבון מסמן אם הכתובת שהזנת נופלת באחת מהן.
האם המחשבון הזה עובד עבור IPv6?
לא, הכלי הזה מחשב רשתות משנה IPv4 בלבד. IPv6 משתמש בכתובות של 128 סיביות ובסימון הקסדצימלי, כך שרשת המשנה שלו עובדת אחרת וצריכה מחשבון ייעודי לתכנון IPv4, כללי חומת אש וגודל VPC בענן, שם מתרחשת רוב המתמטיקה היומיומית של רשת המשנה, זה מכסה את המקרים הנפוצים.



