מאז WireGuard ליבת העתיד Linux 5.6, החלטתי לראות איך הכי טוב לשלב את ה-VPN הזה עם שלי .
Оборудование
- Raspberry Pi 3 עם מודול LTE וכתובת IP ציבורית. יהיה כאן שרת VPN (להלן בטקסט הוא נקרא ווקר קצה)
- הטלפון דולק Android, אשר חייב להשתמש ב-VPN לכל התקשורת
- מחשב נייד Linux, אשר אמור להשתמש ב-VPN רק בתוך הרשת
כל מכשיר שמתחבר ל-VPN חייב להיות מסוגל להתחבר לכל שאר המכשירים. לדוגמה, טלפון אמור להיות מסוגל להתחבר לשרת אינטרנט במחשב נייד אם שני המכשירים הם חלק מרשת VPN. אם ההגדרה מתבררת כפשוטה למדי, אז אתה יכול לחשוב על חיבור שולחן העבודה ל-VPN (באמצעות Ethernet).
בהתחשב בכך שחיבורים קוויים ואלחוטיים הופכים לפחות ופחות מאובטחים עם הזמן (, и ), אני שוקל ברצינות להשתמש WireGuard עבור כל המכשירים שלי, לא משנה באיזו סביבה הם פועלים.
התקנת תוכנה
WireGuard מספק עבור רוב ההפצות Linux, Windows и macOSיישומים עבור Android ו-iOS מסופקים דרך חנויות אפליקציות.
יש לי את הגרסה האחרונה של פדורה Linux 31, ולפני ההתקנה הייתי עצלן מדי לקרוא את המדריך. פשוט מצאתי את החבילות. wireguard-tools, התקינו אותם, ואז לא הצלחתי להבין מדוע שום דבר לא עובד. חקירה נוספת העלתה שאין לי את החבילה מותקנת wireguard-dkms (עם מנהל התקן רשת), אבל זה לא היה במאגר של ההפצה שלי.
אם הייתי קורא את ההוראות, הייתי נוקט בצעדים הנכונים:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools יש לי את הפצת Raspbian Buster מותקנת על Raspberry Pi שלי, יש שם כבר חבילה wireguard, התקן את זה:
$ sudo apt install wireguardבטלפון Android התקנתי את האפליקציה מהקטלוג הרשמי של Google App Store.
התקנת מפתחות
כדי לאמת צמתים Wireguard משתמש בסכימת מפתחות פרטית/ציבורית פשוטה לאימות צמתי VPN. ניתן ליצור בקלות מפתחות VPN באמצעות הפקודה הבאה:
$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.keyזה נותן לנו שלושה זוגות מפתח (שישה קבצים). לא נתייחס לקבצים בתצורה, אלא נעתיק את התוכן לכאן: כל מפתח הוא שורה אחת ב-base64.
יצירת קובץ תצורה עבור שרת ה-VPN (Raspberry Pi)
התצורה די פשוטה, יצרתי את הקובץ הבא /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE
[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32
[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32כמה הערות:
- במקומות המתאימים צריך להכניס שורות מהקבצים עם המקשים
- ה-VPN שלי משתמש בפס פנימי
10.200.200.0/24 - עבור צוותים
PostUp/PostDownיש לי את ממשק הרשת החיצוני wwan0, ייתכן שיש לך ממשק אחר (לדוגמה, eth0)
רשת ה-VPN מוגשת בקלות עם הפקודה הבאה:
$ sudo wg-quick up wg0 פרט אחד קטן: בתור שרת ה-DNS שהשתמשתי בו dnsmasq קשור לממשק רשת br0, הוספתי גם מכשירים wg0 לרשימת המכשירים המותרים. ב-dnsmasq זה נעשה על ידי הוספת שורת ממשק רשת חדשה לקובץ התצורה /etc/dnsmasq.conf, לדוגמה:
interface=br0
interface=wg0בנוסף, הוספתי כלל iptable כדי לאפשר תעבורה ליציאת ההאזנה של UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTעכשיו כשהכל עובד, אנחנו יכולים להגדיר את ההשקה האוטומטית של מנהרת ה-VPN:
$ sudo systemctl enable wg-quick@wg0.serviceתצורת לקוח במחשב נייד
צור קובץ תצורה במחשב נייד /etc/wireguard/wg0.conf עם אותן הגדרות:
[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820הערות:
- במקום edgewalker עליך לציין את מארח ה-IP הציבורי או ה-VPN
- על פי הגדרה
AllowedIPsעל10.200.200.0/24, אנו משתמשים רק ב-VPN כדי לגשת לרשת הפנימית. התנועה לכל כתובות/שרתי ה-IP האחרות תמשיך לעבור בערוצים פתוחים "רגילים". זה גם ישתמש בשרת ה-DNS שהוגדר מראש במחשב הנייד.
לבדיקה והשקה אוטומטית אנו משתמשים באותן פקודות wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceהגדרת הלקוח עבור Android-טֵלֵפוֹן
לטלפון Android אנו יוצרים קובץ תצורה דומה מאוד (בואו נקרא לזה mobile.conf):
[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820 בניגוד לתצורה במחשב הנייד, הטלפון חייב להשתמש בשרת ה-VPN שלנו כשרת ה-DNS (קו DNS), וגם להעביר את כל התעבורה דרך מנהרת ה-VPN (AllowedIPs = 0.0.0.0/0).
במקום להעתיק את הקובץ למכשיר הנייד שלך, אתה יכול להמיר אותו לקוד QR:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confקוד ה-QR יופק לקונסולה כ-ASCII. ניתן לסרוק אותו מהאפליקציה. Android VPN ולהגדיר באופן אוטומטי את מנהרת ה-VPN.
פלט
התאמה WireGuard פשוט קסום בהשוואה ל OpenVPN.
מקור: www.habr.com
