התייחסות ל-tun0 ולפרוטוקול VPN כדבר אחד שולחת אנשים ליומן הלא נכון. הממשק הוא גבול מקומי שבו תוכנית במרחב המשתמש מחליפה מנות IP עם הגרעין. הפרוטוקול הוא מה שהתוכנית עושה עם המנות לאחר שיש לה אותן: הובלה, אימות, הצפנה ועמית. יצירת ההתקן אינה בוחרת באף אחד מאלה.

שני רכיבים, נתיב מנות אחד

הגרעין כותב מנת IP לתוך ההתקן, והתוכנית קוראת אותה ממתאר קובץ. בכיוון ההפוך התוכנית כותבת מנה חזרה והגרעין מנתב אותה כאילו הגיעה לממשק אמיתי. TUN נושא IP, ואילו TAP נושא מסגרות Ethernet. קריאת מנה בגבול הזה מראה את המסגור, ובדיוק לשם כך נועד ההתקן.

כל מה שמעבר לגבול הזה הוא עניין של התוכנית. שתי תוכניות יכולות להשתמש באותו רעיון ממשק ולעשות עם המנות דברים שונים לגמרי. להתקן עצמו אין דעה על מה יקרה בהמשך. מתאר הקובץ הוא הידית היחידה שיש לתוכנית בצד הגרעין.

צרו את ההתקן, ואז התבוננו בגבול

צרו התקן במכוון כאשר אתם בודקים את הגבול. התקן מתמיד שורד את התהליך שיצר אותו, מה שמועיל לניסויים ומקור נפוץ לבלבול לאחר מכן. בדקו את הדגלים ואת הבעלים לפני שאתם מאשימים את ה-VPN.

sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9

פרטי הקישור מראים את סוג ההתקן ואת הבעלים המשויך. אם שום תהליך אינו מחזיק אותו פתוח, המנות שנכתבות אליו אינן מגיעות לשום מקום. התקן בלי תהליך משויך יכול להיראות תקין ברשימת קישורים ובכל זאת לא להעביר דבר.

מה שם הממשק אינו יכול להבטיח

שם הממשק אינו אומר דבר על הצפנה או אימות. תוכנית יכולה לעטוף את המנות ב-TLS, בפרוטוקול משלה, ב-IPsec או בכלום. בחירת TUN במקום TAP משנה את המסגור בגבול, לא את תכנון האבטחה. בחירת המסגור אמיתית, והיא קטנה בהרבה משאלת האבטחה.

הזיהוי פועל באותה דרך: צופה רואה את הפרוטוקול החיצוני על החוט, לא תווית שאומרת איזה התקן מקומי הפיק אותו. מנהרה שנראית כמו משהו אחר עושה זאת בגלל הפרוטוקול החיצוני שלה, לא בגלל שם הממשק שלה. צופה אינו יכול לראות איזה התקן מקומי הפיק מנה, רק איך המנה נראית. הפרידו בין שתי השאלות האלה כשאתם משווים מוצרים, כי תשובה אחת לעולם אינה מרמזת על השנייה.

התאימו את התיקון לשלב שנכשל

הפרידו את שלבי הכשל כשמשהו נשבר. התקן חסר, שגיאת הרשאות והתחברות שנדחתה מייצרים ראיות שונות ותיקונים שונים. קראו קודם את המצב המקומי, אחר כך את היומן של התוכנית עצמה, ואחר כך את נקודת המבט של העמית. קראו את שלושתם לפני שתשנו משהו.

ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'

אם ההתקן קיים ותהליך מחזיק בו, הגבול המקומי עובד והבעיה רחוקה יותר. אם ההתקן חסר, שום בדיקת אישורים לא תעזור. שלב שאתם יכולים לתת לו שם הוא שלב שאתם יכולים לבדוק. התיעוד של TUN/TAP מתאר את הגבול ואת מודל ההתקן.

מאמרים קשורים