בדיקת DNS לפני עלייה לאוויר
לפני שמפנים מבקרים לשרת חדש, בודקים מה ה-DNS באמת עונה: האם השם מצביע לכתובת של השרת, האם ה-resolvers כבר מסכימים, והאם משהו יעצור את התעודה. הדפדפן שואל ישירות שני resolvers ציבוריים; שום דבר לא עובר דרך ANAROQ ולא נשאר אצלנו.
מה הכלי עושה
הכלי שואל מהדפדפן שני resolvers ציבוריים של DNS-over-HTTPS על רשומות A, AAAA, CNAME, MX, TXT ו-CAA של דומיין, ובודק אותן מול כתובת השרת שאתם עומדים להעלות: שהכתובת תואמת, ששני ה-resolvers מסכימים, שה-cache לא יחזיק כתובת ישנה שעות, שאין CNAME בשורש, ושה-CAA מאפשר ל-Let's Encrypt להנפיק את התעודה ש-Caddy, Traefik או Certbot יבקשו.
איך זה עובד
- הזינו את שם הדומיין ואת כתובת ה-IPv4 הציבורית של השרת (וגם IPv6, אם הוא עונה ב-IPv6).
- קראו את ההודעה: הלחיצה שולחת את השם לשני ה-resolvers שמופיעים בה.
- לחצו על בדיקת DNS. כל סוג רשומה נשאל מכל resolver במקביל, תוך כמה שניות.
- קראו את הממצאים, החמורים קודם, כל אחד עם מה לשנות. אחרי שינוי, בדקו שוב כשה-TTL עבר.
מה נבדק
- השם קיים ויש לו כתובת
- NXDOMAIN, SERVFAIL (הרבה פעמים שרשרת DNSSEC שבורה) ושם בלי רשומת A או AAAA הם שגיאות: אף אחד לא יגיע לאתר.
- הכתובת הצפויה
- A ו-AAAA מושוות לכתובות שהזנתם: כתובת אחרת היא שגיאה, כתובת נוספת היא אזהרה, ורשומות AAAA שלא בדקתם מדווחות, כי מבקרים עם IPv6 משתמשים בהן קודם.
- Propagation
- אם שני ה-resolvers עונים אחרת, אחד מהם עדיין מחזיק את התשובה הישנה עד שה-TTL שלה פג. בלי כתובת צפויה זה מוצג כמידע בלבד, כי CDN יכול לענות לפי מיקום.
- TTL
- רשומות כתובת שנשמרות ב-cache יותר משעה אומרות שמעבר יגיע לחלק מהמבקרים רק אחרי שעות: הורידו את ה-TTL לפני המעבר.
- CNAME בשורש
- CNAME לא יכול לעמוד לצד הרשומות שדומיין שורש צריך. ספקים מציעים במקומו ALIAS, ANAME או CNAME flattening.
- CAA
- רשומות ה-CAA של השם, או של ההורה הקרוב שיש לו כאלה, חייבות להתיר את letsencrypt.org, אחרת התעודה האוטומטית תסורב.
- כתובות פרטיות
- רשומה שמצביעה לכתובת פרטית, loopback או link-local לא נגישה מהאינטרנט.
דוגמה
app.example.com עבר לפני שעה לשרת חדש (203.0.113.10). Cloudflare כבר עונה עם הכתובת החדשה; Google עדיין עונה עם הישנה, שנשמרת ב-cache כמעט ארבע שעות. נשארה רשומת AAAA מהשרת הישן, וה-CAA של דומיין ההורה מתיר רק ל-DigiCert. אלה הממצאים האמיתיים של הבודק על התשובות האלה:
התוצאה עבור app.example.com
מה כל resolver עונה
| Resolver | מצב | A | AAAA |
|---|---|---|---|
| Cloudflare 1.1.1.1 | ענה | 203.0.113.10 | 2001:db8::7 |
| Google Public DNS | ענה | 198.51.100.7 | 2001:db8::7 |
רשומות
כפי ש-Cloudflare 1.1.1.1 ענה. ה-TTL הוא הזמן שה-resolver עוד רשאי לשמור כל רשומה.
| סוג | שם | ערך | TTL (שניות) |
|---|---|---|---|
| A | app.example.com | 203.0.113.10 | 300 |
| AAAA | app.example.com | 2001:db8::7 | 300 |
- app.example.com נבדק כתת-דומיין.
- רשומות ה-CAA שחלות נמצאות ב-example.com.
ממצאים
4 ממצאים: 0 שגיאה, 1 גבוהה, 2 בינונית, 0 נמוכה, 1 מידע.
גבוהה1
- גבוההAQ-DNS-009
רשומות ה-CAA ב-
example.comמתירות רק ל-digicert.com להנפיק תעודות: Let's Encrypt (Caddy, Traefik, Certbot) יסורב.תיקון: הוסיפו רשומת CAA
0 issue "letsencrypt.org"ב-example.com(השאירו את האחרות אם אתם עדיין משתמשים ברשויות האלה).
בינונית2
- בינוניתAQ-DNS-006
ל-
app.example.comיש גם רשומות AAAA (IPv6): 2001:db8::7. מבקרים עם IPv6 יתחברו לשם קודם, ולא לכתובת ה-IPv4 שציפיתם לה.תיקון: מלאו למעלה את כתובת ה-IPv6 של השרת כדי לבדוק אותה, או מחקו רשומות AAAA שנשארו משרת ישן או מדף חנייה.
- בינוניתAQ-DNS-007
ה-resolvers לא מסכימים על A: Cloudflare 1.1.1.1 מחזיר 203.0.113.10, Google Public DNS מחזיר 198.51.100.7.
תיקון: מיד אחרי שינוי זה propagation: resolvers שומרים את התשובה הישנה עד שה-TTL שלה פג. אם זה נמשך יותר מה-TTL, בדקו שכל שרתי ה-NS של הדומיין מגישים את אותה zone. גם CDN יכול לענות לפי מיקום בכוונה.
מידע1
- מידעAQ-DNS-011
רשומות הכתובת נשמרות ב-cache עד 13980 שניות (בערך 3.9 שעות): אחרי שינוי, חלק מהמבקרים ימשיכו להגיע לכתובת הישנה כל הזמן הזה.
תיקון: לפני מעבר לשרת חדש, הורידו את ה-TTL (למשל ל-300) וחכו שהישן יעבור; החזירו אותו אחרי המעבר.
מגבלות
- הכלי רואה מה שני resolvers ציבוריים עונים מהמיקום שלכם, לא כל resolver בעולם ולא את ה-cache של המבקרים.
- ה-TTL הוא מה שה-resolver עוד רשאי לשמור, לא בהכרח הערך שהוגדר ב-zone.
- ההחלטה אם שם הוא דומיין שורש נעשית בלי ה-Public Suffix List: שתי תוויות (example.com), או שלוש תחת תווית סוג נפוצה (example.co.il). מקרים אחרים עלולים להיקבע לא נכון.
- הכלי לא מתחבר לשרת: TLS, פורטים ו-HTTP דורשים בדיקה מצד שרת, שעוד לא זמינה.
- רק רשומות issue נבדקות מול Let's Encrypt; issuewild (תעודות wildcard) מוצגות אבל לא נבדקות.
מתודולוגיה: איך מחושבים המספרים
מקורות
קשורים
הצעד הבא
כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה