למה דפיקה בפורט לא פותחת את הדלת
דפיקה אינה מגיעה כלל לשרת, מגיעה אליו בצורה שהדמון אינו מקבל, או פותחת את הדלת עבור כתובת שאינכם משתמשים בה. עברו על הרשימה מלמעלה למטה — היא מסודרת לפי שכיחות הגורמים.
1. הדלת נפתחה עבור כתובת אחרת
חומת האש פותחת את הפורט עבור כתובת המקור שהשרת ראה. אם דפקתם דרך IPv6 ולאחר מכן SSH מתחבר דרך IPv4 — או להפך — הדלת פתוחה עבור כתובת שאינכם משתמשים בה. נתונים סלולריים, NAT של המפעיל ורשתות VPN משנים גם הם את הכתובת.
השוו בין הכתובת ש־Secret Knock מציג במסך הבית (״שליחת דפיקה מ־…״) לבין הכתובת ביומן השרת, וקבעו IPv4 או IPv6 עבור הדלת אם הן שונות.
2. המנות אינן מגיעות לשרת
רשתות של בתי מלון, משרדים ורשתות סלולריות חוסמות לפעמים פורטים לא שגרתיים, וחומת אש בענן לפני השרת משליכה מנות לפני ש־knockd או fwknopd רואים אותן. צפו בתעבורה בשרת בזמן הדפיקה:
# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f
# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'
# fwknopd in the foreground with verbose output
sudo fwknopd -f -v 3. הרצף מגיע בצורה שגויה
- 1SYN שנשלחו מחדש: כאשר דפיקת TCP אינה מקבלת מענה, מערכת ההפעלה של הלקוח שולחת מחדש את אותו SYN. ב־knockd 0.8 הרצף מתאפס במקרה של חזרה כזו. Secret Knock שולח כל דפיקת TCP כ־SYN יחיד ומפסיק מיד את הניסיון; ייתכן שלקוחות אחרים אינם עושים זאת.
- 2תזמון: כל השלבים חייבים להגיע לפי הסדר ובתוך seq_timeout. הוסיפו השהיה קצרה לפני שלב אם נתב בדרך מסדר מחדש מנות.
- 3פרוטוקול: יש לשלוח שלב UDP כ־UDP ושלב TCP כ־TCP — בדקו כל שלב מול knockd.conf.
- 4tcpflags = syn גורם ל־knockd להתעלם ממנות TCP ללא דגל SYN. בלעדיו, גם המנות האחרות של חיבור לאותו פורט נספרות כפגיעות ועלולות לשבש את הרצף.
4. fwknop: מפתחות, שעונים ושידורים חוזרים
- 1שני המפתחות חייבים להתאים ל־access.conf: מפתח Rijndael ומפתח HMAC, עם אותו אלגוריתם תקציר (SHA-256 כברירת מחדל).
- 2fwknopd דוחה מנות ישנות יותר מ־MAX_SPA_PACKET_AGE (120 שניות כברירת מחדל), לכן שעון מכשיר שאינו מכוון כראוי גורם לכל מנה להיראות ישנה.
- 3ניתן להשתמש בכל מנת SPA פעם אחת בלבד; fwknopd משליך בכוונה מנה ששודרה מחדש.
- 4אם דופקים דרך HTTP, משהו חייב לקבל חיבורי TCP באותו פורט, אחרת הבקשה לעולם לא נשלחת.
5. הדלת נפתחת, אך SSH עדיין נכשל
- 1סדר כללים: הכלל שהדמון מוסיף חייב להופיע לפני הכלל שחוסם את היציאה — iptables -A מוסיף את הכלל לאחר כלל DROP קיים, ולכן הכלל שנוסף לעולם אינו חל על המנות.
- 2חלון הזמן: cmd_timeout או FW_ACCESS_TIMEOUT סגרו את הדלת לפני ש־SSH התחבר. התחברו בתוך חלון הזמן; הפעלות קיימות ממשיכות לפעול אם חומת האש שלכם מקבלת חיבורים קיימים.
- 3בדיקת הפורט של Secret Knock לאחר הדפיקה מציינת אם הפורט השיב בכלל, בנפרד מאימות SSH.
כל הדוגמאות ב-GitHub → כל התצורות בדף זה, מוכנות להעתקה: github.com/mobilcomm/secretknock-examples (נחלת הכלל).
שאלות
כיצד אוכל לראות מה האפליקציה שלחה בפועל?
ההיסטוריה של הדלת מציגה כל דפיקה עם השעה, התוצאה ומשפחת הכתובות שלה, והעורך מציג את אותה דפיקה כפקודת מסוף שאפשר להריץ ממחשב לצורך השוואה.