כיצד להגדיר את WireGuard על Ubuntu 22.04

הקדמה

WireGuard הוא רשת פרטית וירטואלית (VPN) קלה שתומכת בחיבורים IPv4 ו-IPv6. VPN מאפשרת לך לנווט ברשתות לא מהימנות כאילו היית על רשת פרטית. זה נותן לך את החופש לגשת לאינטרנט בצורה בטוחה ומאובטחת מהטלפון הנייד או המחשב הנייד שלך כאשר מחוברים לרשת לא מהימנית, כמו רשת ה-WiFi במלון או בבית קפה.

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

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

במדריך זה, תגדיר את WireGuard על שרת Ubuntu 22.04, ואז תגדיר מכונה נוספת להתחבר אליו כעמית באמצעות חיבורי IPv4 ו-IPv6 (נקרא באופן נפוץ חיבור dual stack). תלמד גם כיצד להפנות את תעבורת האינטרנט של העמית דרך שרת ה-WireGuard בתצורת שער, בנוסף לשימוש ב-VPN למנה קטנה מוצפנת.

לצורך המדריך הזה, נגדיר מערכת Ubuntu 22.04 נוספת כעמית (גם נקראת לקוח) לשרת WireGuard. מדריכים נוספים בסדרה זו יסבירו איך להתקין ולהפעיל את WireGuard על מערכות והתקנים ב-Windows, macOS, Android ו-iOS.

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

דרישות קדם

כדי לעקוב אחרי המדריך הזה, תצטרך:

  • שרת Ubuntu 22.04 אחד עם משתמש לא-שורש עם הרשאות sudo וחומת אש מופעלת. כדי להגדיר זאת, ניתן לעקוב אחרי המדריך שלנו ל התקנת השרת הראשונית עם Ubuntu 22.04. נכנה לזה כשרת ה-WireGuard במדריך זה.
  • תצטרך מכונת לקוח שתשתמש בה כדי להתחבר לשרת שלך ב-WireGuard. במדריך זה נתייחס למכונה זו כ־העמית של WireGuard. למטרות המדריך הזה, מומלץ להשתמש במכונת המקומית שלך כעמית של WireGuard, אך תוכל להשתמש בשרתים מרוחקים או בטלפונים ניידים כאשר זה מתאים לך. אם אתה משתמש במערכת מרוחקת, וודא שאתה עוקב אחר כל המקטעים האופציונליים מאוחר יותר במדריך או שיתכן שתנעל את עצמך מהמערכת.
  • כדי להשתמש ב-WireGuard עם IPv6, תצטרך גם לוודא שהשרת שלך מוגדר לתמוך בסוג זה של תעבורה. אם ברצונך להפעיל תמיכה ב-IPv6 עם WireGuard ואתה משתמש ב-DigitalOcean Droplet, אנא הפנה אל עמוד התיעוד הזה איך לאפשר IPv6 על Droplets. תוכל להוסיף תמיכה ב-IPv6 בעת יצירת Droplet או לאחר מכן באמצעות ההוראות בעמוד זה.

שלב 1 — התקנת WireGuard ויצירת זוג מפתחות

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

  1. sudo apt update
  2. sudo apt install wireguard

עכשיו שיש לך את WireGuard מותקן, השלב הבא הוא ליצור זוג מפתחות פרטי וציבורי עבור השרת. תשתמש בפקודות המובנות wg genkey ו-wg pubkey כדי ליצור את המפתחות, ולאחר מכן להוסיף את המפתח הפרטי לקובץ התצורה של WireGuard.

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

צור את המפתח הפרטי עבור WireGuard ושנה את ההיתרים שלו באמצעות הפקודות הבאות:

  1. wg genkey | sudo tee /etc/wireguard/private.key
  2. sudo chmod go= /etc/wireguard/private.key

הפקודה sudo chmod go=... מסירה את כל ההיתרים על הקובץ למשתמשים וקבוצות אחרים מלבד משתמש root כדי לוודא שרק הוא יכול לגשת למפתח הפרטי.

תקבל שורה אחת של פלט מקודד ב-base64, שהוא המפתח הפרטי. עותק של הפלט מאוחסן גם בקובץ /etc/wireguard/private.key לשימוש עתידי על ידי חלק ה-tee של הפקודה. תיזהר לשים לב למפתח הפרטי שיוצא מאחר שיהיה עליך להוסיף אותו לקובץ התצורה של WireGuard מאוחר יותר בסעיף זה.

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

  1. sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

הפקודה הזו מורכבת משלוש פקודות נפרדות שמקושרות יחד באמצעות אופרטור ה-| (צינור).

  • sudo cat /etc/wireguard/private.key: פקודה זו קוראת את קובץ המפתח הפרטי ומייצאת אותו לזרם הפלט התקני.
  • wg pubkey: הפקודה השנייה מקבלת את הפלט מהפקודה הראשונה כקלט תקני ומעבדת אותו כדי ליצור מפתח ציבורי.
  • sudo tee /etc/wireguard/public.key: הפקודה הסופית מקבלת את הפלט מהפקודה ליצירת מפתח ציבורי ומפנה אותו לקובץ בשם /etc/wireguard/public.key.

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

שלב 2 — בחירת כתובות IPv4 ו־IPv6

בחלק הקודם התקנת את WireGuard ויצרת זוג מפתחות שיכולים להיות בשימוש להצפנת תעבורה החוצה אל ומהשרת. בחלק זה, תיצור קובץ הגדרה עבור השרת ותגדיר את WireGuard כך שיפעל אוטומטית כאשר השרת מתנע. תגדיר גם כתובות IPv4 פרטיות ו־IPv6 לשימוש עם השרת שלך והעמיתים שלך.

אם אתה מתכנן להשתמש בכתובות IPv4 ו-IPv6, אז עקוב אחר שני הסעיפים האלה. אחרת, עקוב אחר ההוראות בסעיף המתאים לצרכי הרשת של ה-VPN שלך.

שלב 2(a) – בחירת טווח IPv4

אם אתה משתמש בשרת WireGuard שלך עם עמיתים IPv4, השרת צריך טווח של כתובות IPv4 פרטיות לשימוש בלקוחות ובממשק הנתיב שלו. אתה יכול לבחור כל טווח של כתובות IP מהבלוקים המוקצים הבאים של כתובות (אם ברצונך ללמוד עוד על איך מוקצים הבלוקים הללו בקראו את המפרט RFC 1918):

  • 10.0.0.0 עד 10.255.255.255 (קידומת 10/8)
  • 172.16.0.0 עד 172.31.255.255 (קידומת 172.16/12)
  • 192.168.0.0 עד 192.168.255.255 (קידומת 192.168/16)

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

השרת של WireGuard ישתמש בכתובת IP יחידה מהטווח עבור כתובת ה-IPv4 הפרטית שלו. נשתמש כאן ב־10.8.0.1/24, אך ניתן להשתמש בכל כתובת בטווח של 10.8.0.1 עד 10.8.0.255. יש לשים לב לכתובת ה-IP שבחרתם אם השתמשתם במשהו שונה מ־10.8.0.1/24. יש להוסיף את כתובת ה-IPv4 הזו לקובץ התצורה שתגדירו ב־שלב 3 — יצירת קובץ התצורה של שרת WireGuard.

שלב 2(b) — בחירת טווח של IPv6

אם אתם משתמשים ב־WireGuard עם IPv6, תצטרכו ליצור תחום כתובת IPv6 ייחודי מבוסס על האלגוריתם ב־RFC 4193. הכתובות שתשתמשו ב־WireGuard יתווספו לממשק טונל וירטואלי. עליכם להשלים מספר שלבים כדי ליצור תחום IPv6 רנדומלי וייחודי בתוך הבלוק הנשמר fd00::/8 של כתובות IPv6 פרטיות.

על פי ה־RFC, הדרך המומלצת לקבלת תחום IPv6 ייחודי היא לשלב את זמן היום עם ערך זיהוי ייחודי ממערכת כמו מספר סידורי או מזהה התקן. הערכים הללו מוחברים ומקוצרים באמצעות פונקציית גיבוב, תוך יצירת סט של ביטים שניתן להשתמש בהם ככתובת ייחודית בתוך הבלוק הפרטי הנשמר fd00::/8 של כתובות IP.

להתחיל ליצור טווח IPv6 עבור שרת WireGuard שלך, אסוף timestamp בגודל 64 ביט באמצעות כלי הפקת התאריך date עם הפקודה הבאה:

  1. date +%s%N

תקבל מספר דומה לזה שלמטה, הוא מספר השניות (ה- %s ב- date command), וננוסקונדות (ה- %N) מאז 1970-01-01 00:00:00 UTC משולבים יחד:

Output
1650301699497770167

רשום את הערך במקום מסוים לשימוש מאוחר יותר בסעיף זה. לאחר מכן, העתק את ערך ה- machine-id של השרת שלך מתוך קובץ ה- /var/lib/dbus/machine-id. זהות זו ייחודית למערכת שלך ואינה אמורה להשתנות כל עוד השרת קיים.

  1. cat /var/lib/dbus/machine-id

תקבל פלט כגון הבא:

/var/lib/dbus/machine-id
610cef4946ed46da8f71dba9d66c67fb

כעת עליך לשלב את הזמן עם ערך ה- machine-id ולהצפין את הערך התוצאה באמצעות אלגוריתם SHA-1. הפקודה תשתמש בפורמט הבא:

printf <timestamp><machine-id> | sha1sum

הרץ את הפקודה והחלף בערכי הזמן והזהות של המכונה שלך:

  1. printf 1650301699497770167610cef4946ed46da8f71dba9d66c67fb | sha1sum

תקבל ערך הצפנה כגון הבא:

Output
442adea1488d96388dae9ab816045b24609a6c18 -

שים לב שפלט הפקודה sha1sum הוא בצורת הקוד הנטוי, לכן הפלט משתמש בשני תווים כדי לייצג בת יחידה של מידע. לדוגמה 4f ו- 26 בפלט הדוגמה הם הבתים הראשונים של המידע המצופן.

האלגוריתם ב RFC דורש רק את 40 הביט הפחות רלוונטיים (סופיים), או 5 בתים, של פלט הצפנה. השתמש בפקודת cut כדי להדפיס את הבתים האחרונים הצפונים השלושה עשרה מפלט הצפנה:

  1. printf 442adea1488d96388dae9ab816045b24609a6c18 | cut -c 31-

הארגומנט -c מספר לפקודת cut לבחור רק את קבוצת התווים המצויינת. הארגומנט 31- אומר ל־cut להדפיס את כל התווים מהעמדה 31 ועד סוף שורת הקלט.

תיקבל פלט כמו הבא:

Output
24609a6c18

בפלט הדוגמה הזה, קבוצת הבתים היא: 24 60 9a 6c 18.

כעת תוכל לבנות תפיסת רשת IPv6 ייחודית על ידי הוספת חמישה הבתים שיוצרת עם תחילת התפיסה fd, ולהפריד כל שני בתים בעזרת נקודתיים : לקריאות. מכיוון שכל תת־רשת בתפיסה הייחודית שלך יכולה להחזיק מספר כתובות IPv6 אפשריות כולל 18,446,744,073,709,551,616, ניתן להגביל את התת־רשת לגודל סטנדרטי של /64 לפשטות.

על ידי שימוש בבתים שנוצרו קודם עם גודל התת־רשת /64, התפיסה התוצאתית תהיה הבאה:

Unique Local IPv6 Address Prefix
fd24:609a:6c18::/64

טווח זה של fd24:609a:6c18::/64 הוא מה שתשתמש להקצאת כתובות IP יחידות לממשקי טונל של WireGuard בשרת ובעמיתים. להקצאת כתובת IP לשרת, הוסף 1 אחרי התווים הסופיים של ::. הכתובת התוצאה תהיה fd24:609a:6c18::1/64. עמיתים יכולים להשתמש בכל כתובת IP בטווח, אך בדרך כלל תגביר את הערך באחד על כל פעם שתוסיף עמית, לדוגמה fd24:609a:6c18::2/64. עשה הערה על הכתובת והמשך להגדרת שרת WireGuard בחלק הבא של המדריך הזה.

שלב 3 — יצירת הגדרות שרת WireGuard

לפני שתיצור את ההגדרות של השרת שלך ב־WireGuard, יש לך לזהות את המידע הבא:

  1. ודא שיש לך את המפתח הפרטי הזמין מ־שלב 1 — התקנת WireGuard ויצירת זוג מפתחות.

  2. אם אתה משתמש ב־WireGuard עם IPv4, תצטרך את כתובת ה־IP שבחרת עבור השרת ב־שלב 2(a) — בחירת טווח IPv4, שבדוגמה זו היא 10.8.0.1/24.

  3. אם אתה משתמש ב־WireGuard עם IPv6, תצטרך את כתובת ה־IP של השרת שיצרת ב־שלב 2(b) — בחירת טווח IPv6. בדוגמה זו ה־IP הוא fd24:609a:6c18::1/64.

כאשר יש לך את המפתח הפרטי הנדרש ואת כתובת ה־IP(ים), צור קובץ תצורה חדש באמצעות nano או העורך שאתה מעדיף על ידי הרצת הפקודה הבאה:

  1. sudo nano /etc/wireguard/wg0.conf

הוסף את השורות הבאות לקובץ, במקום המודגש base64_encoded_private_key_goes_here, החלף את המפתח הפרטי שלך, ועל השורת Address, החלף את כתובת(ות) ה־IP:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd24:609a:6c18::1/64 ListenPort = 51820 SaveConfig = true

השורה SaveConfig מבטיחה כי כאשר ממשק WireGuard מושבת, כל שינויים יישמרו בקובץ התצורה.

שמור וסגור את קובץ /etc/wireguard/wg0.conf. אם אתה משתמש ב־nano, אתה יכול לעשות זאת עם CTRL+X, לאחר מכן Y ו־ENTER כדי לאשר. עכשיו יש לך תצורת שרת ראשונית שבה תוכל לבנות עליה בהתאם לאיך שתתכנן להשתמש בשרת VPN של WireGuard שלך.

שלב 4 — כיבון תצורת הרשת של שרת WireGuard

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

כדי להגדיר הפנייה, פתח את קובץ /etc/sysctl.conf באמצעות nano או העורך שאתה מעדיף שלך:

  1. sudo nano /etc/sysctl.conf

אם אתה משתמש ב־IPv4 עם WireGuard, הוסף את השורה הבאה בתחתית הקובץ:

/etc/sysctl.conf
net.ipv4.ip_forward=1

אם אתה משתמש ב־IPv6 עם WireGuard, הוסף את השורה הבאה בתחתית הקובץ:

/etc/sysctl.conf
net.ipv6.conf.all.forwarding=1

אם אתה משתמש בשני IPv4 ו־IPv6, וודא שאתה כולל את שתי השורות. שמור וסגור את הקובץ כאשר אתה מסיים.

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

  1. sudo sysctl -p
Output
net.ipv6.conf.all.forwarding = 1 net.ipv4.ip_forward = 1

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

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

שלב 5 — הגדרת חומת האש של שרת WireGuard

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

כדי לאפשר תעבורת VPN של WireGuard דרך חומת האש של השרת, תצטרך לאפשר מסקריידינג, שהוא מושג של iptables שמספק תרגום דינמי של כתובת רשת (NAT) כדי להפנות את החיבורים של הלקוחות כראוי.

ראשית תמצא את ממשק הרשת הציבורי של שרת ה-WireGuard שלך באמצעות הפקודה המשנית ip route:

  1. ip route list default

ממשק הציבורי הוא המחרוזת שנמצאת בפלט של הפקודה הזו ובאה אחרי המילה "dev". לדוגמה, התוצאה הזו מציגה את הממשק בשם eth0, שמודגש למטה:

Output
default via 203.0.113.1 dev eth0 proto static

שים לב לשם המכשיר שלך מאחר ותוסיף אותו לכללי ה-iptables בשלב הבא.

כדי להוסיף כללי חומת אש לשרת ה-WireGuard שלך, תפתח את קובץ /etc/wireguard/wg0.conf בעזרת nano או העורך שאתה מעדיף שוב.

  1. sudo nano /etc/wireguard/wg0.conf

בתחתית הקובץ לאחר השורה SaveConfig = true, הדבק את השורות הבאות:

/etc/wireguard/wg0.conf
. . . PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

קוויות PostUp ירוצו כאשר שרת ה-WireGuard מפעיל את המנהל הווירטואלי של ה-VPN. בדוגמה כאן, הן יוסיפו שלושה כללים של ufw ו-iptables:

  • ufw route allow in on wg0 out on eth0 – כלל זה יאפשר העברת תעבורה IPv4 ו-IPv6 שנכנסת דרך ממשק ה-VPN wg0 לממשק הרשת eth0 של השרת. הוא פועל בשיתוף עם ערכי sysctl שהגדרת בקטע הקודם לכן של net.ipv4.ip_forward ו-net.ipv6.conf.all.forwarding.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE – כלל זה מגדיר מסקריידינג ומשנה מחדש תעבורת IPv4 שנכנסת דרך ממשק ה-VPN wg0 כך שתיראה כאילו היא מקורית ישירות מכתובת ה-IPv4 הציבורית של שרת ה-WireGuard.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE – כלל זה מגדיר מסקריידינג ומשנה מחדש תעבורת IPv6 שנכנסת דרך ממשק ה-VPN wg0 כך שתיראה כאילו היא מקורית ישירות מכתובת ה-IPv6 הציבורית של שרת ה-WireGuard.

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

בשני המקרים, ערוך את התצורה כדי לכלול או לא לכלול את הכללים של IPv4 ו-IPv6 המתאימים ל-VPN שלך. לדוגמה, אם אתה משתמש רק ב-IPv4, אז ניתן לא לכלול את השורות עם הפקודות ip6tables.

בניגוד לכך, אם אתה משתמש רק ב־IPv6, אז ערוך את ההגדרה כך שתכלול רק את פקודות ה־ip6tables. שורות ה־ufw צריכות להתקיים לכל קומבינציה של רשתות IPv4 ו־IPv6. שמור וסגור את הקובץ כאשר אתה מסיים.

החלק האחרון בהגדרת הגישה לגישה על הגן האש שלך על שרת WireGuard הוא לאפשר תעבורת נתונים אל ומהיציאה UDP של WireGuard עצמה. אם לא שינית את היציאה בקובץ ההגדרות של השרת בנתיב /etc/wireguard/wg0.conf, היציאה שתפתח היא 51820. אם בחרת ביציאה שונה בעת עריכת ההגדרה, וודא שתחליף אותה בפקודת UFW הבאה.

במקרה ששכחת לפתוח את יציאת SSH בעת מעקב אחר המדריך המקדים, הוסף אותה גם כאן:

  1. sudo ufw allow 51820/udp
  2. sudo ufw allow OpenSSH

הערה: אם אתה משתמש בגן האש אחר או עיצבת את התצורה של UFW באופן אישי, עשוי להיות עליך להוסיף כללי גישה נוספים בגן האש. לדוגמה, אם החלטת להעביר את כל תעבורת הרשת שלך דרך חיבור ה-VPN, עליך לוודא שתעבורת הפורט 53 מותרת לבקשות DNS, ופורטים כמו 80 ו־443 עבור תעבורת HTTP ו־HTTPS בהתאמה. אם ישנם פרוטוקולים אחרים שאתה משתמש בהם דרך ה-VPN, עליך להוסיף כללים עבורם גם כן.

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

  1. sudo ufw disable
  2. sudo ufw enable

ניתן לאמת שהכללים במקום על ידי הרצת פקודת ה־ufw status. הפעל אותה ואתה אמור לקבל פלט כמו בדוגמה הבאה:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- 51280/udp ALLOW Anywhere 22/tcp ALLOW Anywhere 51280/udp (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6)

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

שלב 6 — הפעלת השרת של WireGuard

WireGuard ניתן להגדיר לרוץ כשירות systemd באמצעות סקריפט ה-wg-quick המובנה שלו. במובן כללי, ניתן היה להשתמש בפקודת wg באופן ידני כל פעם שרצית להשתמש ב-VPN, אך עשיית כך היא תהליך ידני המשתק ומכניס אפשרויות לטעויות. במקום זאת, ניתן להשתמש ב־systemctl כדי לנהל את המנהרה בעזרת סקריפט ה־wg-quick.

שימוש בשירות systemd אומר שניתן להגדיר את WireGuard כך שיתחיל בעת האתחול כך שניתן יהיה להתחבר ל-VPN שלך בכל עת כל עוד השרת פועל. כדי לעשות זאת, יש לאפשר את השירות wg-quick עבור המנהרה wg0 שהגדרת על ידי הוספתו ל־systemctl:

  1. sudo systemctl enable [email protected]

שים לב שהפקודה מציינת את שם המנהרה wg0 כחלק משם השירות. שם זה ממפה לקובץ התצורה /etc/wireguard/wg0.conf. הגישה הזו לשימות שם משמע שניתן ליצור כמה מנהרות VPN נפרדות ככל שתרצה באמצעות השרת שלך.

לדוגמה, ניתן להיות ברשותך מכשיר מנהרה ושם קובץ התצורה שלו יהיה /etc/wireguard/prod.conf. כל תצורת מנהרה יכולה להכיל הגדרות שונות של IPv4, IPv6 וגישה אש ללקוחות. בכך תוכל לתמוך בחיבורי עמיתים שונים, כל אחד עם כתובות IP ייחודיות וחוקי ניתוב משלו.

עכשיו הפעל את השירות:

  1. sudo systemctl start [email protected]

וודא פעילות שירות WireGuard עם הפקודה הבאה. עליך לראות פעיל (פועל) בפלט:

  1. sudo systemctl status [email protected]
Output
[email protected] - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-04-18 17:22:13 UTC; 2s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 98834 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 98834 (code=exited, status=0/SUCCESS) CPU: 193ms Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] wg setconf wg0 /dev/fd/63 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -4 address add 10.8.0.1/24 dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -6 address add fd24:609a:6c18::1/64 dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip link set mtu 1420 up dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ufw route allow in on wg0 out on ens3 Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added (v6) Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE Apr 18 17:22:13 thats-my-jam systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

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

עם השרת מוגדר ופועל, השלב הבא הוא להגדיר את המכשיר הלקוח שלך כעמית WireGuard ולהתחבר לשרת WireGuard.

שלב 7 — הגדרת עמית WireGuard

הגדרת עמית WireGuard דומה להגדרת שרת WireGuard. לאחר התקנת התוכנה ללקוח, תצטרך ליצור זוג מפתחות ציבורי ופרטי, להחליט על כתובת או כתובות IP לעמית, להגדיר קובץ תצורה עבור העמית, ולאחר מכן להפעיל את המנהרה באמצעות תסריט wg-quick.

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

כדי להגדיר את עמית ה-WireGuard, ודא שיש לך את חבילת ה-WireGuard מותקנת באמצעות הפקודות הבאות apt. על מנת להריץ את עמית ה-WireGuard, הפעל את הפקודות הבאות:

  1. sudo apt update
  2. sudo apt install wireguard

יצירת זוג מפתחות של עמית ה-WireGuard

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

  1. wg genkey | sudo tee /etc/wireguard/private.key
  2. sudo chmod go= /etc/wireguard/private.key

שוב, תקבל פלט מקודד ב-base64 בשורה אחת, שהוא המפתח הפרטי. עותק של הפלט מאוחסן גם ב-/etc/wireguard/private.key. יש לקחת פרטיות ממה שיוצא כי תצטרך להוסיף אותו לקובץ ההגדרות של WireGuard מאוחר יותר בסעיף זה.

השתמש בפקודה הבאה כדי ליצור את קובץ המפתח הציבורי:

  1. sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

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

יצירת קובץ התצורה של עמית WireGuard

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

תצטרך מספר פריטים מידע עבור קובץ ההגדרות:

  • המפתח הפרטי המוצפן ב־base64 שיצרת על העמית.

  • טווחי כתובת IPv4 ו־IPv6 שהגדרת על שרת WireGuard.

  • המפתח הציבורי המוצפן ב־base64 משרת WireGuard.

  • כתובת ה־IP הציבורית ומספר הפתחה של שרת WireGuard. רוב הפעמים זה יהיה הכתובת IPv4, אך אם יש לשרת שלך כתובת IPv6 ולמחשב הלקוח יש חיבור IPv6 לאינטרנט תוכלו להשתמש בזה במקום IPv4.

עם כל המידע הזה ביד, פתח קובץ חדש /etc/wireguard/wg0.conf על מכונת עמית WireGuard באמצעות nano או העורך שאתה מעדיף שלך:

  1. sudo nano /etc/wireguard/wg0.conf

הוסף את השורות הבאות לקובץ, החלף את הנתונים השונים במקומות המודגשים ככל הדרוש:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.2/24 Address = fd24:609a:6c18::2/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd24:609a:6c18::/64 Endpoint = 203.0.113.1:51820

שים לב שהשורה הראשונה של כתובת משתמשת בכתובת IPv4 מתוך תת-רשת 10.8.0.0/24 שבחרת קודם. כתובת זו יכולה להיות כל דבר בתת-רשת כל עוד היא שונה מה-IP של השרת. להגדיר כתובות על ידי הוספת 1 בכל פעם שמוסיפים פיאר בדרך כלל היא הדרך הקלה ביותר להקצות כתובות.

באופן דומה, שים לב כיצד השורה השנייה של כתובת משתמשת בכתובת IPv6 מהתת-רשת שיצרת קודם, ומעלה את כתובת השרת ב-1. שוב, כל IP בטווח חוקי אם בחרת להשתמש בכתובת שונה.

החלק המספק של הקובץ הוא השורה האחרונה של AllowedIPs. שני טווחי ה-IPv4 וה-IPv6 הללו מפנים לעמית לשלוח תעבורה רק דרך ה-VPN אם למערכת היעד יש כתובת IP באחד מהטווחים. באמצעות ההוראה AllowedIPs, אתה יכול להגביל את ה-VPN על עמית כדי להתחבר רק לעמיתים אחרים ושירותים ב-VPN, או שתוכל להגדיר את ההגדרה כך שתטנל את כל התעבורה דרך ה-VPN ותשתמש בשרת WireGuard כשער.

אם אתה משתמש רק ב-IPv4, אז תשאיר את הטווח המתגלגל fd24:609a:6c18::/64 הנותר (כולל הפסיק ,). בנוסף, אם אתה משתמש רק ב-IPv6, אז כלול רק את הפיקסל fd24:609a:6c18::/64 והשאר את הטווח ה-IPv4 10.8.0.0/24 מחוץ לטווח.

בשני המקרים, אם תרצה לשלוח את כל תעבורת העמית שלך דרך ה-VPN ולהשתמש בשרת WireGuard כשער לכל התעבורה, אז תוכל להשתמש ב־0.0.0.0/0, שמייצג את כל מרחב כתובות ה־IPv4, וב־::/0 עבור כל מרחב כתובות ה־IPv6.

(אופציונלי) הגדרת עמית כדי להפנות את כל התעבורה דרך המנהרה

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

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

ראשית, תצטרך לקבוע את כתובת ה־IP שהמערכת משתמשת בה כשער ברירת מחדל. הרץ את הפקודה ip route הבאה:

  1. ip route list table main default

תקבל פלט דומה לזה:

Output
default via 203.0.113.1 dev eth0 proto static

שים לב לכתובת ה־IP המסומנת של השער 203.0.113.1 לשימוש מאוחר יותר, ולמכשיר eth0. שם המכשיר שלך עשוי להיות שונה. אם כך, החלף אותו במקום eth0 בפקודות הבאות.

אז חפש את כתובת ה־IP הציבורית של המערכת על ידי בדיקת המכשיר עם הפקודה ip address show:

  1. ip -brief address show eth0

תקבל פלט דומה לזה:

Output
eth0 UP 203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

בפלט הדוגמה הזה, ה־IP המסומן 203.0.113.5 (ללא ה־/20 בסופו) הוא כתובת הציבור שהוקצתה למכשיר eth0 שתצטרך להוסיף לתצורת WireGuard.

עכשיו פתח את קובץ התצורה של החברה של WireGuard, /etc/wireguard/wg0.conf, עם nano או העורך שאתה מעדיף.

  1. sudo nano /etc/wireguard/wg0.conf

לפני השורה [Peer], הוסף את השורות הבאות:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

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

  • PostUp = ip rule add table 200 from 203.0.113.5 – פקודה זו תיצור כלל שבו נבדקות רשומות ניתוב בטבלה המסופרת 200 כאשר ה־IP תואם לכתובת הציבורית של המערכת, 203.0.113.5.
  • PostUp = ip route add table 200 default via 203.0.113.1 – פקודה זו מבטיחה שכל תעבורה שמעובדת על ידי הטבלה 200 תשתמש בשער 203.0.113.1 לניתוב, במקום ממשק ה־WireGuard.

השורות PreDown מסירות את הכלל המותאם אישית ואת הנתיב כאשר המנהרה נסגרת.

הערה: מספר הטבלה 200 הוא שרירותי בבניית הכללים הללו. ניתן להשתמש בערך בין 2 ל־252, או ניתן להשתמש בשם מותאם אישית על ידי הוספת תווית לקובץ /etc/iproute2/rt_tables ואז להתייחס אל השם במקום לערך המספרי.

למידע נוסף אודות איך טבלאות הניתוב פועלות בלינוקס בקר ב־חלק על טבלאות הניתוב ב־מדריך לניהול רשת בשכבת ה־IP עם לינוקס.

אם אתה מנתב את כל תעבורת העמיתים דרך הוופן, וודא שהגדרת נכון את התצורה של sysctl ואת כללי iptables בשרת WireGuard ב־שלב 4 — כיוונון תצורת הרשת של שרת ה־WireGuard וב־שלב 5 — הגדרת חומת אש של שרת ה־WireGuard.

(אופציונלי) הגדרת מפעילי DNS של העמיתים של WireGuard

אם אתה משתמש בשרת WireGuard כשער VPN עבור כל תעבורה של העמיתים שלך, תצטרך להוסיף שורה לסעיף [ממשק] שמציין את מחלצי ה-DNS. אם אינך מוסיף את ההגדרה הזו, אז בקשות ה-DNS שלך עשויות לא להיות מאובטחות על ידי ה-VPN, או שהן עשויות לחשוף לספק שירותי האינטרנט שלך או לצדדים שלישיים אחרים.

אם אתה משתמש רק ב-WireGuard כדי לגשת למשאבים ברשת ה-VPN או בהגדרה פיר-לפיר, אז אתה יכול לדלג על סעיף זה.

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

  1. resolvectl dns eth0

תקבל פלט דומה לזה:

Output
Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

כתובות ה-IP שמתקבלות הן מחלצי ה-DNS שהשרת משתמש בהם. תוכל לבחור להשתמש בכל אחד מהם, או רק ב-IPv4 או IPv6 לפי הצורך שלך. עשה הערות על מחלצים אלו שתשתמש בהם.

בשלב הבא, עליך להוסיף את מחלצי ה-DNS שבחרת לקובץ ההגדרה של העמית של WireGuard. חזור ל־עמית WireGuard, פתח את קובץ /etc/wireguard/wg0.conf באמצעות nano או העורך שאתה מעדיף:

  1. sudo nano /etc/wireguard/wg0.conf

לפני השורה [עמית], הוסף את השורה הבאה:

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

שוב, לפי העדפתך או דרישותיך ל-IPv4 ול-IPv6, תוכל לערוך את הרשימה לפי הצורך שלך.

פעם שאתה מחובר ל-VPN בשלב הבא, תוכל לוודא שאתה שולח שאילתות DNS דרך ה-VPN על ידי שימוש באתר כמו DNS leak test.com.

תוכל גם לוודא שהעמית שלך משתמש במגדירי הפתרון המוגדרים עם הפקודה resolvectl dns כמו שהרצת על השרת. אתה אמור לקבל פלט כגון הבא, המציג את מגדירי הפתרון ה-DNS שהגדרת עבור טנלת ה-VPN:

Output
Global: 67.207.67.2 67.207.67.3 . . .

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

שלב 8 — הוספת מפתח הציבור של העמית לשרת WireGuard

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

וודא שיש לך עותק של המפתח הציבורי המוצפן ב-base64 עבור העמית ב-WireGuard על ידי הרצת:

  1. sudo cat /etc/wireguard/public.key
Output
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

כעת התחבר לשרת WireGuard, והרץ את הפקודה הבאה:

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd24:609a:6c18::2

שים לב שחלק הפקודה allowed-ips מקבל רשימה מופרדת בפסיקים של כתובות IPv4 ו-IPv6. ניתן לציין כתובות IP יחידות אם ברצונך להגביל את כתובת ה-IP שיכולה להקצות לעצמה עמית, או טווח כמו בדוגמה אם העמיתים שלך יכולים להשתמש בכל כתובת IP בטווח VPN. שים לב כי שתי עמיתים לא יכולים להגדיר את אותה הגדרת allowed-ips.

אם ברצונך לעדכן את allowed-ips עבור עמית קיים, באפשרותך להריץ שוב את אותה הפקודה, אך לשנות את כתובת ה-IP. נתמכות כמה כתובות IP. לדוגמה, כדי לשנות את העמית של WireGuard שהתווסף להוסיף כתובת IP כמו 10.8.0.100 ל-IPים הקיימים 10.8.0.2 ו-fd24:609a:6c18::2, עליך להריץ את הפקודה הבאה:

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd24:609a:6c18::2

לאחר שהרצת את הפקודה להוספת העמית, בדוק את מצב המנהרה בשרת באמצעות הפקודה wg:

  1. sudo wg
Output
interface: wg0 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= private key: (hidden) listening port: 51820 peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed ips: 10.8.0.2/32, fd24:609a:6c18::/128

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

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

שלב 9 — התחברות העמית של WireGuard למנהרה

עכשיו שהשרת והעמית שלך מוגדרים לתמוך ב-IPv4, IPv6, העברת חבילות, ובפתרון DNS, זמן לחבר את העמית למנהרת ה-VPN.

מאחר שייתכן שתרצה את ה-VPN פעיל רק במקרים מסוימים, נשתמש בפקודת wg-quick כדי להקים את החיבור באופן ידני. אם ברצונך לאוטומטזיה של התחלת המנהרת כמו שעשית על השרת, עקוב אחר השלבים בסעיף שלב 6 – הפעלת שרת WireGuard במקום להשתמש בפקודת wg-quick.

במקרה שאתה מעביר את כל התעבורה דרך ה-VPN והגדרת הפינוי DNS, תצטרך להתקין את כלי ה-resolvconf בעמית של WireGuard לפני הפעלת המנהרת. הרץ את הפקודה הבאה כדי להגדיר את זה:

  1. sudo apt install resolvconf

כדי להתחיל את המנהרת, הרץ את הפקודה הבאה על עמית של WireGuard:

  1. sudo wg-quick up wg0

תקבל פלט דומה לזה:

Output
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.2/24 dev wg0 [#] ip -6 address add fd24:609a:6c18::2/64 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x

שים לב לכתובות IPv4 ו-IPv6 שציינת לעמית.

אם הגדרת את AllowedIPs על העמית להיות 0.0.0.0/0 ו־::/0 (או להשתמש בטווחים שונים מאלה שבחרת עבור ה-VPN), אז הפלט שלך ידמה לדוגמה הבאה:

Output
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.2/24 dev wg0 [#] ip -6 address add fd24:609a:6c18::2/64 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x [#] wg set wg0 fwmark 51820 [#] ip -6 route add ::/0 dev wg0 table 51820 [#] ip -6 rule add not fwmark 51820 table 51820 [#] ip -6 rule add table main suppress_prefixlength 0 [#] ip6tables-restore -n [#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820 [#] ip -4 rule add not fwmark 51820 table 51820 [#] ip -4 rule add table main suppress_prefixlength 0 [#] sysctl -q net.ipv4.conf.all.src_valid_mark=1 [#] iptables-restore -n

בדוגמה זו, שים לב למסלולים המסומנים שהפקודה הוסיפה, שמתאימים ל-AllowedIPs בתצורת העמית.

ניתן לבדוק את מצב המנהרת על העמית באמצעות הפקודה wg:

  1. sudo wg
Output
interface: wg0 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= private key: (hidden) listening port: 49338 fwmark: 0xca6c peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= endpoint: 203.0.113.1:51820 allowed ips: 10.8.0.0/24, fd24:609a:6c18::/64 latest handshake: 1 second ago transfer: 6.50 KiB received, 15.41 KiB sent

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

וודא שרעיונך משתמש ב-VPN על ידי שימוש בפקודות ip route ו־ip -6 route. אם אתה משתמש ב-VPN כשער לכל תעבורת האינטרנט שלך, בדוק איזו ממשק יועבר בתעבורה המיועדת למרכזי DNS של CloudFlare, 1.1.1.1 ו־2606:4700:4700::1111.

אם אתה משתמש ב-WireGuard רק כדי לגשת למשאבים ב-VPN, החלף כתובת IPv4 או IPv6 חוקית כמו שער לתוך הפקודות אלו. לדוגמה 10.8.0.1 או fd24:609a:6c18::1.

  1. ip route get 1.1.1.1
Output
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000 cache

שים לב שהמכשיר wg0 משמש וגם הכתובת IPv4 10.8.0.2 שהשמת לרעיון. באופן דומה, אם אתה משתמש ב-IPv6, הרץ את הפקודות הבאות:

  1. ip -6 route get 2606:4700:4700::1111
Output
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd24:609a:6c18::2 metric 1024 pref medium

שוב, שים לב לממשק wg0, ולכתובת IPv6 fd24:609a:6c18::2 שהשמת לרעיון.

אם לרעיון יש דפדפן מותקן, תוכל גם לבקר ב־ipleak.net ו־ipv6-test.com כדי לאשר שהתעבורה שלך מופנית דרך ה-VPN.

כאשר אתה מוכן לנתק את ה-VPN מהרעיון, השתמש בפקודת wg-quick:

  1. sudo wg-quick down wg0

תקבל פלט כמו הבא המציין שהמנהרה של ה-VPN נסגרה:

Output
[#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f

אם הגדרת את ה-AllowedIPs על הרעיון להיות 0.0.0.0/0 ו־::/0 (או להשתמש בטווחים שונים מאלה שבחרת ל-VPN), אז הפלט שלך ידמה לדוגמה הבאה:

Output
[#] ip rule delete table 200 from 203.0.113.5 [#] ip route delete table 200 default via 203.0.113.1 [#] ip -4 rule delete table 51820 [#] ip -4 rule delete table main suppress_prefixlength 0 [#] ip -6 rule delete table 51820 [#] ip -6 rule delete table main suppress_prefixlength 0 [#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f [#] iptables-restore -n [#] ip6tables-restore -n

להתחבר מחדש ל-VPN, הריצו שוב את הפקודה wg-quick up wg0 על העמית. אם ברצונך להסיר לחלוטין את התצורה של עמית מהשרת של WireGuard, תוכל להריץ את הפקודה הבאה, בודק שאתה מחליף את המפתח הציבורי הנכון של העמית שברצונך להסיר:

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

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

מסקנה

במדריך זה התקנתם את חבילת ה-WireGuard וכלי הכלים על שני מערכות ה-Ubuntu 22.04, השרת והלקוח. הגדרתם כללי חומת אש עבור WireGuard, והגדרתם הגדרות בליבת המערכת כך שתאפשר העברת חבילות באמצעות הפקודה sysctl על השרת. למדתם כיצד ליצור מפתחות הצפנה פרטיים וציבוריים של WireGuard, וכיצד להגדיר את השרת והעמית (או העמיתים) כדי להתחבר אחד לשני.

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

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-22-04