יסודות הפעלת OpenVPN ב-Docker על Ubuntu

האם אתה דואג לאיך תוכל לגשת לאינטרנט בחופשיות מבלי להיתקע על מגבלות מיותרות ובעיות בטחות מידע? אל תדאג יותר! התחל להפעיל שרת VPN שלך באמצעות OpenVPN ב-Docker.

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

הישאר מחובר ושמור את שרת ה-VPN שלך באופן בטוח עם OpenVPN Docker!

דרישות מוקדמות

המדריך הזה יהיה הדגמה מעשית. אם תעקוב, תצטרך את הדברים הבאים:

  • A Linux-based operating system (OS) – This tutorial uses Ubuntu v22.04, but other Linux distributions will work.
  • התקנת Docker והפעלתו – מדריך זה משתמש ב-Docker v20.10.17.

יצירת מיכל Docker עבור OpenVPN

הכלאה היא כמו לארוז קוד וכל תלותיו כיחידת תוכנה סטנדרטית כדי להריץ את היישום שלך בצורה מהירה ואמינה. ישנם מספר דרכים ליצירת מיכל Docker של OpenVPN. אתה יכול לבנות את המיכל מאפס או למשוך מיכל מוכן מראש מ-Docker Hub.

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

ליצירת מיכל Docker של OpenVPN:

1. פתח את הטרמינל שלך והרץ את הפקודה OVPN_DATA למטה, שלא מספקת פלט אך מגדירה שם נפח נתונים ל-ovpn-data-test למשתנה OVPN_DATA.

OVPN_DATA="ovpn-data-test"

2. לאחר מכן, הרץ את הפקודה הבאה docker volume create כדי ליצור נפח נתונים עם ה–name שהגדרת במשתנה $OVPN_DATA.

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

docker volume create --name $OVPN_DATA

3. לבסוף, הרץ את הפקודה הבאה docker run כדי להוריד ולהתקין את תמונת Docker של OpenVPN עם הבא:

  • ציין את מרחב האחסון (-v) בתוך המיכל שהוא נפרד משאר מערכת הקבצים של המיכל. במקרה זה, תמונת ה- Docker של OpenVPN מאוחסנת בתיקייה /etc/openvpn.
  • ציין את המנגנון המתחבר (--log-driver) ששומר על מידע של המיכלים והשירותים הרצים (none).
  • מורה ל- Docker להסיר באופן אוטומטי (–rm) את המיכל כאשר הוא כבר קיים.

ודא כי תחליף (YourPublicIP.com) בכתובת ה- IP הציבורית של השרת שלך (מארח) או בשם הדומיין (אם יש לך אחד) דרך פרוטוקול UDP. אך שים לב כי תוכל גם להשתמש בפרוטוקול TCP.

TCP הוא פרוטוקול המבוסס על חיבור, בעוד ש- UDP הוא פרוטוקול בלתי מחובר

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://YourPublicIP.com
Installing OpenVPN on Docker container

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

אבטחת הלקוח של OpenVPN עם תעודות

התקנת בהצלחה את לקוח ה- Docker של OpenVPN במחשב שלך, אז יאי! אך לפני שתשתמש ב- OpenVPN, עליך תחילה להגדיר את התצורה של לקוח OpenVPN.

רק כי אתה עובד על OpenVPN לא אומר שעליך לפתוח את שרת ה- VPN שלך לעולם. תצטרך תעודות כדי לאבטח את לקוח ה- OpenVPN שלך:

1. הריצו את הפקודה הבאה docker run כדי ליצור ולאחזר את אישורי ה־CA והלקוח. פקודה זו יוצרת תקופות OpenVPN פעילות (–it) מהתמונה המצויה בתוך הקונטיינר הראשי.

ברוב המקרים, יצירת אישורי שרת CA לוקחת זמן, תלוי במשאבים של המכונה שאתם משתמשים בה.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

הקלידו yes ולחצו על Enter, כפי שמוצג למטה, כדי להתחיל את מערכת ה־OpenVPN PKI.

Initiating the OpenVPN PKI system

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

Setting a new CA certificate password

3. הגדירו שם ייחודי עבור אישור CA שלכם, ולחצו על Enter.

Naming the new CA certificate

4. כעת, הזינו את סיסמת ה־CA שהגדרתם בשלב שני כדי לבדוק שהבקשה תואמת לחתימה.

Checking \the request matches the signature

5. הזינו שוב את הסיסמה שלכם כדי ליצור מפתח פרטי.

Generate a private key by entering the CA passphrase

6. לאחר מכן, הריצו את הפקודה הבאה כדי להתחיל את שירות השרת OpenVPN ב־Docker כדי להגדיר לקוח OpenVPN, היכן ש:

  • האפשרות -p מגדירה את הפורט (1194) שמאזין ומתחיל את החיבור בין השרת והלקוח.

ניתן לשנות את הפורט 1194 כדי להתאים אותו להעדפותיכם אם אינכם נוחים בשימוש בפורט ברירת המחדל של OpenVPN.

  • הארגומנט –cap-add=NET_ADMIN מוסיף יכולות Linux נוספות על ידי שינוי ממשקי הרשת ש־Docker לא מעניק ברירת מחדל.
docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
Setting the port OpenVPN will listen to

7. לאחר שהפורט מוגדר, הריצו את הפקודה הבאה docker run כדי לבצע את הפעולות הבאות:

  • הפקת תעודת הלקוח והורדת קובץ התצורה של הלקוח (.ovpn) מתוך המיכל של Docker לשרת המארח. התעודה שנוצרה אינה מוגנת בסיסמה, כפי שצוין בארגומנט no-pass בפקודה.
  • הגדר את שם הקובץ של תעודת האימות וזיהוי הלקוח של OpenVPN ל-CLIENTAPP. התעודה מאוחסנת בספריית המשתמש של המארח, ולא במיכל של Docker.
docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTAPP nopass

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

Generating the VPN client certificate

8. לאחר מכן, הפעל את הפקודה שלהלן כדי ליצור ולהוריד את קובץ התצורה של חיבור ה-OpenVPN (ovpn_getclient) מהמיכל לשרת המארח.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTAPP > CLIENTAPP.ovpn

9. נווט אל תיקיית user/home בשרת המארח שלך (מכונת לינוקס), והעבר את קובץ ה-.ovpn (CLIENTAPP.ovpn) אל המכשיר שלך של Android.

10. לבסוף, הפעל את אפליקציית הלקוח שלך של OpenVPN Connect על מכשיר ה-Android שלך.

גע ב-BROWSE תחת הלשונית FILE, ובחר את קובץ ה-.ovpn (CLIENTAPP.ovpn) שהעברת למכשיר ה-Android שלך. בכך נוספת פרופיל חדש ללקוח של OpenVPN Connect.

Importing the .ovpn file to the OpenVPN Connect client

ברגע שיתקיים חיבור מוצלח, תראה את התוצאה למטה.

Verifying successful connection to the VPN server

גישה לממשק המשתמש של OpenVPN באינטרנט

האם אתה מודאג מכמות הפקודות שהיית צריך להשתמש כדי לגשת אל שרת ה-VPN שלך? למה לא לנסות ממשק משתמש פשוט בעזרת האינטרנט?

OpenVPN מציע סט כלי יישום והגדרה בממשק אינטרנטי שמאפשר תקנה מהירה של פתרונות גישה רחוקה ל-VPN. הערכת הכלים מגיעה בחבילה יחידה בשם OpenVPN Access Server.

כדי לגשת לממשק האינטרנטי של OpenVPN, יש להתקין את החבילה הבאה:

1. הרץ את הפקודה הבאה docker pull כדי להוריד ולהתקין את ה-OpenVPN Docker container (openvpn-as) האחרון מה-Linux Server Docker Hub (linuxserver).

docker pull linuxserver/openvpn-as
Downloading OpenVPN Access Server Docker container

2. לאחר הורדת החבילה, הרץ את הפקודה docker create ליצירת Docker container חדש בשם openvpn-as עם ההגדרות הבאות:

  • -v /home/docker/openvpn-as/config: /config – מגדיר את התיקייה לאחסון קבצי התצורה.
  • --restart=always – מבטיח שה-container יתחיל תמיד באמצעות המערכת. ניתן לבחור לא להוסיף את הארגומנט הזה אם אין רצון שה-container יפעיל מחדש.
  • -e PGID=1001 -e PUID=1001 – מגדיר את זהות המשתמש כדי למנוע בעיות הרשאה בין שרת המארח ל-container.
  • –net=host –privileged – קובע איך OpenVPN Access Server רץ ב-container.
docker create --name=openvpn-as --restart=always -v /home/docker/openvpn-as/config:/config -e INTERFACE=eth0 -e PGID=1001 -e PUID=1001 -e TZ=Africa/Nairobi --net=host --privileged linuxserver/openvpn-as
Creating a new Docker container (openvpn-as)

3. לאחר מכן, הפעל את הפקודה הבאה docker start כדי לגשת לממשק האינטרנטי של OpenVPN דרך תכונת השרת של Docker שיצרת בשלב השני.

docker start openvpn-as
Starting the OpenVPN access server Docker container

4. בסופו של דבר, פתח את דפדפן האינטרנט המועדף עליך ונווט אל ממשק האינטרנט של OpenVPN עם כתובת ה-IP המקומית שלך (לדוגמה, https://YourIP:943/admin). החלף YourIP בכתובת ה-IP האמיתית של השרת שלך.

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

הזן מנהל וסיסמה עבור שם המשתמש והסיסמה, ולחץ על כניסה כדי לגשת ללוח המחוונים של שרת הגישה של OpenVPN.

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

Accessing the OpenVPN Access Server web UI

לאחר התחברות, תראה את לוח המחוונים של שרת הגישה של OpenVPN כפי שמוצג למטה.

Accessing the OpenVPN Access Server dashboard

הגדרת DNS עבור חיבור מהיר ומאובטח

בנקודה זו, שרת הגישה שלך ל-OpenVPN פועל בצורה תקינה. אך כדי לשפר את ביצועי שרת ה-VPN שלך, עליך להגדיר את ה-DNS.

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

1. לחץ על הגדרות VPN (פאנל שמאלי) בתחתית התפריט CONFIGURATION בלוח המחוונים של שרת הגישה שלך ל-OpenVPN.

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

Enabling custom OpenVPN DNS addresses

2. לאחר מכן, מעדכנים את שרת DNS הראשי (8.8.8.8) ושרת DNS משני (8.8.8.4) עם כתובות DNS של Google כפי שמוצג למטה, ולוחצים על "שמור הגדרות" כדי לשמור את השינויים.

Setting custom OpenVPN DNS addresses

3. לאחר שמירת השינויים, לחצו על "עדכן שרת פעיל" כדי לאתחל מחדש את השרת ולהפעיל את השינויים.

Updating the server settings

4. כעת, נווטו אל שרת OpenVPN Access (לדוגמה, https://YourIP:943/admin) במכשיר Linux שלכם. החליפו YourIP בכתובת ה-IP של השרת שלכם. אם התקנתם את התצורה בצורה נכונה, תראו את אותו הדף למטה.

התחברו עם הפרטים ברירת המחדל (admin ו-password) כשם משתמש וסיסמה.

Logging in to OpenVPN Access Server

5. לחצו על סמלי פלטפורמה כלשהי כדי להוריד את יישום הלקוח ולחצו על "עצמך" (פרופיל נעול למשתמש) כדי להוריד את הקובץ .ovpn.

Downloading the .ovpn config file and client app

6. לבסוף, הפעילו את לקוח OpenVPN שהורדתם וייבאו את הקובץ .ovpn כפי שעשיתם בשלב האחרון של "אבטחת לקוח OpenVPN באמצעות תעודות", כפי שמוצג למטה.

Connecting to the OpenVPN server

סיכום

לא להיתקל בקושי בהקניית שרת VPN אף פעם לא אמור להיות משימה מורכבת, ובוודאי לא אבטחת חיבור השרת שלכם. למרות זאת, OpenVPN Docker כמובן לכם לסייע. ובמדריך זה, למדתם איך להתקין, להגדיר ולהגן על OpenVPN באמצעות Docker ב-Ubuntu. גם נגעתם באבטחת גישה ל-OpenVPN בתוך תכולת Docker עם OpenVPN CA ותעודות לקוח.

בנוסף לגישה לשרת OpenVPN שלך דרך ממשק שורת פקודה, יש לך כעת דרך חזותית לעשות זאת דרך ממשק ה-UI של שרת ה-OpenVPN Access. גילית אפשרות מהירה להקנות VPN על ידי יצירת קבצי הגדרת לקוח עבור אפליקציות ה-OpenVPN.

למה לא לבנות על הידע החדש שקיבלת וליצור שירותי טונל VPN עבור היישומים שלך באמצעות WireGuard VPN? חקור את עולם האפשרויות הלא מוגבלות באמצעות שירותי VPN המארחים את עצמם!

Source:
https://adamtheautomator.com/openvpn-in-docker/