היה לי צורך להתחבר לרשת אירגונית בה על הנתב מותקנת מערכת sonicwall, וזה הוא הסיפור שלי.
הנתב איפשר שני אפשרויות חיבור חיבור באמצעות l2tp וחיבור באמצעות לקוח קנייני מסוג sslvpn שנקרא netExtender.
בדקתי את הגדרות ההתחברות של השרת ע"י sudo ike-scan vpn.domain.net וניסתי להשתמש בתוצאות שקיבלתי בשביל להתחבר לVPN. לאחר כחצי שעה של ניסונות התחברות שכשלו (גם לאחר שינויים של שרון במערכת) וההבנה שלי שבוינדוס זה עובד חלק הרמתי ידיי מ l2tp והלכתי על הפתרון הקנייני. הפתרון הקנייני הוא תוכנה מיוחדת למערכת הSonicWall.
ממה שאני הצלחתי להבין זוהיא מעטפת שמשתמשת בppp וממשת מערכת הצפנה (TLS) ב java.
תוכנת הלקוח שאיתה היה צריך להתחבר נקראת NetExtender ואת ההתקנה שלה ניתן להוריד מהנתב עליו מותקן SonicWall עצמו. התוכנה איננה תוכנה חופשית ואפילו לא קוד פתוח. ניתן להוריד גרסאות חדשות/ ישנות יותר מאתר SonicWall עצמו.
המסלול להורדה אצלי היה https://vpn.domain.net:4433/NetExtender64.tgz הפורט אצלכם יכול להיות שיהיה שונה. הייתרון בלמשוך את הלקוח ישר מהנתב הוא שיש סיכויי גבוהה יותר שלא יהיו בעיות של אי התאמת גרסת לקוח לגרסת השרת אבל אם אין ברירה אפשר ללכת לאתר sonicwall ולהוריד משם.
לאחר שקראתי את תסריט ההתקנה, וראיתי כי יש שם שינויי הרשאות הבנתי שאני לא סומך על התוכנה ואני לא הולך להתקין אותה על המחשב שלי בצורה ישירה, ואז נשארו לי שני אפשרויות:
התקנה תחת docker או התקנה תחת qemu. אני בחרתי להשתמש ב qemu שיפעיל debian תקני.
את הVM אני מנהל על ידי libvirtd (שזה סביבת הוירטואליזציה ברירת המחדל בהפצה שלי).
בשביל להפעיל את המכונה הוירטואלית אני משתמש בvirsh למכונה קראתי workvpn:
virsh -c qemu:///system start vpn
בפועל מה שזה אומר עושה זה מתחבר ללשרת הוירטואליזציה המקומית, מחפש שם דומיין שצריך להפעיל אותו ומפעיל אותו.
לאחר פריסת קבצי ההתקנה , יצרתי קובץ הגדרות עבור systemd שייבצע התחברות לאחר הפעלה :
cat /etc/systemd/system/netextender.service
[Unit]
Description=netExtender SSL VPN
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=5s
StartLimitBurst=10
[Service]
RemainAfterExit=yes
ExecStart= screen -Dm /bin/bash -c \
"echo Y | /home/user/netExtender -u myvpnusername -p verylongandstrongpassword -s vpn.domain.net:vpnport -d domain.net -M 500"
User=user
Group=user
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
אם תשימו לב אני משתמש ב MTU של 500 בייתים , זה נעשה בגלל שלא הצלחתי להחזיק חיבור אינטרנט ייצב מעל הערך הזה (ספק האינטרנט שלי עושה צרות).
אני גם לא התקנתי את netExtender כרוט על המכונה ולכן אני מעביר את שם המשתמש איתו לפתוח את את הבינארי ולהפעיל.
השימוש שלי בscreen נועד לא "לתקוע" את עליית systemd אלא לתת לו לפתוח תהליך בן שיעשה את העבודה ושיאפשר לי להתחבר ללקוח הvpn במקרה של תקלה.
השימוש שלי ב restart נועד שבמקרה נפילה הוא ייתחבר מחדש.
היו לי מספר ניסונות שאיך לכתוב את קובץ ההגדרה של systemd נכון, בהתחלה כתבתי תוכנית שעוטפת את הלקוח, אבל אחרי זה הבנתי שעדיף פשוט להשתש ב screen ולגמור את הסיפור.
מכיוון שזו מכונה וירטואלית שרק לא תהיה גישה למערכת ה VPN הקניינית יצרתי עליה גם שרת VPN מסוג openvpn שאליו אני מחייג בשביל לקבל גישה למשאבי הרשת שלקוח ה netExtender מציג.
את החיבור אני עשה באמצעות שימוש ב brdige מכיוון שזה נוח יותר לצורת העבודה במקרה שלי.
אין תגובות:
הוסף רשומת תגובה