OpenVPN או WireGuard? החלטה לפי זהות ותחבורה
מפתחות, תהליכי התחברות ותחבורה ב-UDP בלבד מעצבים את הבחירה הרבה לפני התפוקה. בצעו ארבע בדיקות ושמרו על מדידה הוגנת.
השוואה בין שני הפרוטוקולים האלה מועילה רק אם היא משווה את מה שבאמת תתפעלו. WireGuard מזהה עמיתים לפי מפתח ציבורי ומעביר את הפרוטוקול שלו מעל UDP, בעוד OpenVPN מציע מגוון רחב יותר של שיטות אימות ויכול לרוץ מעל UDP או TCP כשהשרת מספק את שניהם. ההבדלים האלה מעצבים את ההקצאה ואת מסלול הגיבוי הרבה לפני שהם מעצבים את התפוקה. בצעו את ארבע הבדיקות שלמטה לפי הסדר; הראשונות שבהן בדרך כלל מכריעות את הבחירה, והאחרונות אומרות אם ההחלטה הייתה נכונה.
התחילו בזהות, לא ברשימת ההצפנה
עמית WireGuard שומר מפתח פרטי אחד ומפרט את המפתחות הציבוריים שהוא יכול להגיע אליהם. ספק יכול לעטוף זאת בפורטל חשבון, אבל הפרוטוקול עצמו אינו כולל החלפת שם משתמש וסיסמה, ולכן מחזור החיים של החשבון חי במה שמפיץ את המפתחות. OpenVPN יכול להשתמש בתעודות, בתוסף מול ספרייה קיימת או בסקריפט אימות, ולכן ארגונים עם מערכת זהות מעדיפים אותו לעיתים קרובות. אף אחד משני העיצובים לא מסיר את השאלה איך מסירים מכשיר שאבד.
| Decision | OpenVPN | WireGuard |
|---|---|---|
| Identity | Certificates, plugins or scripts against an existing directory | One private key per peer, public keys listed for the peers it may reach |
| Transport | UDP or TCP profiles when the server offers both | UDP only in the native protocol |
| Routing and DNS | Server pushes routes and DNS options | AllowedIPs maps ranges to peers, and tooling installs the routes |
| Where it usually breaks | Profile mismatch, expired certificate, failing plugin | Blocked UDP, wrong AllowedIPs, key not installed |
תצורה קצרה אינה אותו דבר כמו הקצאה פשוטה. מסירת מפתח פרטי אחד לכמה אנשים הופכת את ההסרה המאוחרת לדו-משמעית, כי ביטולו מסיר את כולם בבת אחת. כתבו את המיפוי מאדם למפתח או לתעודה לפני הבחירה, וההחלטה לגבי הפרוטוקול נעשית קלה בהרבה.
אחר כך בדקו מה התחבורה מאפשרת
הפרוטוקול של WireGuard משתמש ב-UDP. שירותי OpenVPN יכולים להציע פרופילי UDP ו-TCP, וברשת שחוסמת UDP או מחלישה אותו האפשרות השנייה היא מסלול גיבוי מעשי ולא תיאורטי. השרת חייב לתמוך בפרופיל שתבחרו, ושינוי מספר פורט אינו הופך את המנהרה ל-HTTPS ואינו משכנע חומת אש לאפשר אותה.
העברת TCP בתוך TCP משנה גם את ההתנהגות תחת אובדן, כי שתי השכבות מנסות שוב ומסדרות מחדש באופן עצמאי. פרופיל TCP שעובד ברשת מגבילה עדיין עלול לתפקד גרוע ברשת עם אובדן, וזו סיבה להשאיר את שני הפרופילים זמינים במקום להכריז שאחד עדיף.
אחר כך בדקו ניתוב ותרגום שמות
AllowedIPs ב-WireGuard ממפה טווחי כתובות לעמיתים ומשמש כהחלטת ניתוב בתוך הפרוטוקול, והכלים שסביב משתמשים בטווחים האלה כשהם מתקינים נתיבים. OpenVPN דוחף נתיבים ואפשרויות DNS מהשרת. בשני המקרים הלקוח יכול לעלות בעוד שהמדיניות המיועדת מיושמת רק למחצה.
ip route show
ip -6 route show
resolvectl status
wg show
קראו את הפלט לפני שאתם סומכים על מחוון החיבור. ip route show מפרט מה הלקוח התקין עבור IPv4, וגרסת IPv6 תופסת מנהרה שנושאת משפחה אחת בלבד. resolvectl status מראה באיזה פותר הלקוח ישאל בפועל, ו-wg show מדפיס את ה-AllowedIPs ש-WireGuard חושב שבבעלותו. אם הפותר עדיין מצביע על הרשת המקומית בזמן שהנתיבים טוענים לכיסוי מלא, ה-DNS יוצא מחוץ למנהרה.
אחר כך מדדו את המשימה שמעניינת אתכם
החזיקו את המכשיר, הרשת והיעד קבועים, ותעדו את הלקוחות ונקודות הקצה שבהם השתמשתם. אם שני השירותים יוצאים בערים שונות או פועלים על חומרה שונה, אמרו זאת, כי אז התוצאה מתארת את השירותים ולא את הפרוטוקולים.
iperf3 -c 203.0.113.20 -t 30
mtr -rwzbc 50 203.0.113.20
הריצו את שתי הפקודות פעמיים, פעם אחת לכל זוג פרופילים, על אותה רשת ואותו מכשיר. iperf3 נותן נתון תפוקה, ו-mtr נותן את המסלול ואיפה מופיע אובדן, מה שנתון הורדה בודד לא יכול להראות. נתון הורדה גם מפספס את מה ששיחה מבחינה בו: השהיה נוספת, רעידות וכמה זמן לוקח להתחבר מחדש. תעדו אותם בנפרד, כי פרוטוקול שמנצח בתפוקה יכול עדיין להפסיד במשימה שאתם מריצים באמת.
בחיבור מנוהל, תאימות, תמיכה ומאמץ חידוש יכולים לגבור על הבדל קטן במדידה. ביציאה אישית, התיעוד והסמכות השיפוטית של המפעיל חשובים יותר מתווית הפרוטוקול. שני הפרוטוקולים יכולים לשאת חיבור טוב; השירות והתצורה שלו קובעים מה תקבלו.
כתבו את זוג הפרופילים לפני הבדיקה
בחרו פרופיל אחד לכל פרוטוקול לפני המדידה, וכתבו מה כל אחד אמור לעשות: תת-רשתות פרטיות בלבד, או כל התעבורה עם יציאה מסוימת. בדיקה שמשווה פרופיל מנהרה מפוצלת לפרופיל מנהרה מלאה מודדת את הפרופילים, לא את הפרוטוקולים. שימו את שם הלקוח, גרסת הלקוח ומיקום היציאה באותו פתק.
אחר כך הריצו את אותה משימה על שניהם, על אותה רשת, באותו מושב. אם אחד לא מצליח להתחבר בכלל, הכשל הזה הוא התוצאה והוא שייך לרשומה יחד עם הסיבה. שמרו את הרשומה עם התיעוד של השירות כדי שהאדם הבא ישווה את אותו זוג במקום להתחיל מחדש.