תיקון התנגשות כתובת IP מקומית לאחר התחברות ל-VPN
הכפילות יכולה להיות ב-LAN שלך, להגיע מטווח מרוחק חופף, או להינתן פעמיים מבריכת המנהרה. בדוק לפני שאתה ממספר מחדש.
כל אחד מהדיווחים האלה נשמע אותו דבר ומשמעותו שונה: המחשב הנייד מתלונן על התנגשות כתובות, אבל רק לפעמים, ולרוב כשהמנהור פעיל. שלוש תקלות נפרדות מייצרות את ההודעה הזאת: כפילות אמיתית בקישור שלך, חפיפה שבה הרשת המרוחקת משתמשת בטווח ה-LAN שלך ושום דבר לא מוכפל, ומנהרה שהקצתה כתובת אחת לשני עמיתים. התיקון שונה בכל מקרה, והלא נכון מעביר את התסמין במקום להסיר אותו. לכן החלט איזה מקרה יש לך לפני שאתה עורך משהו.
שלוש תקלות שחולקות הודעת שגיאה אחת
כפילות משמעה ששני מחשבים באותו סגמנט תובעים כתובת אחת. הגרעין מבחין בכך מפני שהתשובה לבדיקה שלו מגיעה מ-MAC אחר, ומה שקורה אחר כך תלוי במחסנית: לינוקס רושם אותה, ווינדוס מבטל את הממשק וכותב רשומה ביומן המערכת, ולקוח DHCP עשוי לדחות את ההצעה.
חפיפה אינה מכפילה שום כתובת. ה-LAN שלך הוא 192.168.1.0/24, רשת המשרד היא גם 192.168.1.0/24, ועכשיו המסלול למשרד מצביע על כתובות שהן גם המדפסת שלך וה-NAS שלך. במובן של ARP שום דבר לא בהתנגשות; החבילה פשוט הולכת להתקן הלא נכון באחת משתי הרשתות.
התנגשות בבריכה היא אשמת המנהרה עצמה. שני עמיתים הוגדרו עם אותה כתובת מנהרה או קיבלו אותה, ולכן השרת לא יכול להבדיל ביניהם כשהוא שולח תעבורת חזרה. אחד משני הלקוחות רואה לחיצת יד שעובדת ובלי נתונים, מה שנקרא כמו בעיית ניתוב ואינו כזה.
בדיקה 1: האם הכפילות בסגמנט שלך?
התחל ברשימה של מה שהמכונה שלך באמת מחזיקה, לא מה שאתה זוכר שהגדרת. כתובת מתאם VPN היא פרטית למנהרה ואינה אותה כתובת שהאתרים רואים, ולכן יציאה ציבורית משותפת אינה התנגשות.
ip -br addr
ip neigh
ip route show table all | grep -E 'wg|tun|ppp'בווינדוס אותו מידע מגיע מ-ipconfig /all ומ-Get-NetIPAddress, עם מטמון השכנים ב-arp -a. אם הכתובת השנויה במחלוקת נמצאת במתאם הפיזי והתלונה מופיעה בלי שה-VPN פועל, ה-VPN הוא צופה מן הצד ועליך להפסיק לאבחן אותו.
כדי להוכיח כפילות במקום לנחש, בדוק את הכתובת מהתקן שאינו מחזיק אותה. arping -D שולח את הבדיקה עם כתובת מקור אפס, ולכן תשובה מ-MAC לא צפוי מוכיחה שמארח אחר כבר עונה לכתובת הזו.
sudo arping -D -I eth0 -c 3 192.168.1.50לאחר מכן מצא את הבעלים דרך מנהל הרשת במקום לבחור בעצמך כתובת אחרת. הקצאות סטטיות שחיות רק בהערות של מישהו, מדפסות עם כתובת קבועה והזמנות בשרת ה-DHCP הן האשמות הרגילות, והתקן כבוי עדיין מחזיק בשכירות שלו.
בדיקה 2: האם שתי הרשתות חופפות?
השווה את הקידומת שהמנהרה נותנת לך עם הקידומות בממשקים שלך. אם הטווח המרוחק שווה ל-LAN שלך או מכיל אותו, התקלה היא חפיפה, והרמז הוא שמארח שנגיש בלי ה-VPN נעלם, או שהמדפסת שלך עונה על כתובת משרד.
ip route get 192.168.1.10
ip -br addr showחיפוש המסלול אומר לך באיזה ממשק הגרעין ישתמש, והתשובה הזו היא כל האבחון. אם הוא אומר מנהרה לכתובת ששייכת למדפסת המקומית שלך, יש לך חפיפה וכל חידוש שכירות לא ישנה את זה.
יש שלוש דרכים ישרות החוצה, ובדרך כלל רק אחת זמינה לך. הצד המרוחק יכול למסך תעבורה עבור תת-הרשת החופפת, כך שהלקוח שלך רואה רק את כתובת המנהרה של השרת. המנהרה יכולה לשאת קידומת מרוחקת צרה יותר שאינה מתנגשת עם ה-LAN שלך. או שהלקוח יכול לנתב לפי כתובת מקור עם כללי מדיניות, מה שעובד אבל שביר וקשה למסור לעמית.
מספרור מחדש של רשת המשרד הוא לעתים רחוקות ההחלטה שלך. מספרור מחדש של ה-LAN שלך כדי להתחמק מההתנגשות הוא שינוי גדול ממה שרוב האנשים מצפים ברגע שמדפסות, מצלמות ומארחים סטטיים נכנסים לתמונה.
בדיקה 3: האם המנהרה נתנה כתובת אחת פעמיים?
ל-WireGuard אין בריכת כתובות. כל עמית מזוהה לפי המפתח הציבורי שלו ולפי הקידומות ב-AllowedIPs, ולכן כפילות מופיעה כשכותבת הכתובת אותה בשתי רשומות עמית או אותו זוג מפתחות מותקן בשני מחשבים.
wg show all allowed-ips
wg show wg0 latest-handshakes
wg show wg0 transferמונה התעבורה הוא העמודה השימושית כאן: עמית שמראה לחיצת יד אחרונה אבל בלי העברה או שהוא מנותב לא נכון או שהוא מוצל על ידי רשומה אחרת שתובעת את אותה קידומת. שים קידומת בדיוק על עמית אחד ותן לכל התקן את זוג המפתחות שלו.
ל-OpenVPN יש בריכה, וההתנגשות הנפוצה היא פרופיל לקוח משותף עם שורת --ifconfig קבועה שהועתקה למחשב שני. אז שני הלקוחות מבקשים את אותה כתובת מנהרה, והשרת מקבל את החיבור שהוא מעבד ראשון. מיצוי הבריכה עם --duplicate-cn נותן תוצאה דומה כשכמה חיבורים של תעודה אחת מתחרים על רשומה אחת.
למקרה הזה קרא את יומן השרת ולא את יומן הלקוח. השרת יודע איזה חיבור תבע איזו כתובת, וכתובות חוזרות שם נראות כאזהרות שלעולם לא מגיעות ללקוח.
תקן במקור ואז בדוק שוב את שני ההתקנים
הסדר חשוב. תקן קודם כפילות LAN, כי לקוח שלא מצליח להחזיק כתובת גם לא יחזיק מנהרה. אחר כך תקן את ההקצאה בצד ה-VPN, כי עריכה בצד הלקוח של הקצאה מהבריכה מתבטלת בחיבור הבא. לבסוף טפל בזהויות מוכפלות: זוגות מפתחות נפרדים ב-WireGuard, תעודות נפרדות או לפחות פרופילים נפרדים ב-OpenVPN.
בלקוח החלק המכני קצר. שחרר וחדש שכירות DHCP, או בקש לשנות את הכתובת בשרת עבור הזמנה. אל תקליד כתובת אקראית שנראית פנויה.
sudo dhclient -r eth0 && sudo dhclient eth0
ipconfig /release && ipconfig /renewלאחר מכן אמת משני הקצוות, לא מאחד. אמת את השער, אחר כך את השירות שאתה באמת צריך, אחר כך התחבר מחדש וחזור. אם היו מעורבים שני התקנים, בדוק את שניהם: העברת כתובת אחת מותירה את השנייה עם רשומות שכנים מיושנות או שכירות ישנה שמגיחה שוב מאוחר יותר.
מה לא לעשות בדרך
אל תשכך את התסמין. זיהוי כתובות כפולות הוא מה שמונע ממך לקחת כתובת שכבר בשימוש, וכיבויו הופך התנגשות גלויה לאובדן חבילות לסירוגין שהרבה יותר קשה לעקוב אחריו. אותו דבר חל על קבלת אזהרת תעודה ממארח לא צפוי: זו בכלל לא בעיית כתובת, ולחיצה עליה מסתירה תקלה אחרת.
אל תשנה גם את הכתובות של רשת מנוהלת בעצמך. רשום את ההגדרה המקורית, שאל את הבעלים כשהכתובת מוקצית באופן מרכזי, ושמור על השינוי קטן מספיק כדי לבטל. כללי RFC 5227 לזיהוי התנגשויות כתובות מסבירים מה בדיקה נכונה מוכיחה, וזה שווה לדעת לפני שאתה קורא להתנגשות אמיתית.