נקודה חמה ניידת, עם VPN, מבוסס Nano PI R1

הקדמה

עבור המיני פרוייקט הזה אני אשתמש במוצר מ-FriendlyElec מסדרת NanoPi, גרסת R1. אני משער שאפשר לעשות שימוש במוצרים אחרים (לדוגמה Raspberry Pi), את ההחלטה כבר אשאיר לכם, אבל כנראה שתצטרכו לבצע מיני התאמות לפקודות בכדי שיעבדו לכם. אם כן החלטתם להשתמש באותה חומרה, ניתן לרכוש NanoPi R1 מאמזון.

כשלונות

FriendiyElec מספקים 2 גרסאות של מערכות הפעלה, אחת מבוססת Ubuntu ושניה מבוססת OepnWRT. עם שתיהן היו לי בעיות להגיע ליעד שקבעתי, עם OpenWRT שברתי את ההתקנה מספר פעמים מה שמאוד האט את ההתקדמות. בגרסת Ubuntu היו חסרים לי ההאדרים של הקרנל, מה שמנע ממני לבנות את Wireguard. לבסוף החלטתי להשתמש ב-DietPi.

מטרה

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

ציוד

  • NanoPi R1.
  • כרטיס מיקרו SD, בנפח של 8 גיגה לפחות.
  • LTE Modem (דונגל), עם סים דאטה.
  • סוללה 12,000mAh.

image

אז כמו שציינתי בהקדמה, אני אשתמש ב-NanoPi R1, על המיקרו SD מותקן לי DietPi 7. בדונגל יש לי סים של פלאפון עם 1TB תעבורה שהוגדר מראש (לא נכנס להגדרות של המודם, יתכן והמודם שלכם יהיה מסוגל לקלוט את ההגדרות לבד, אף לפעמים יש צורך להכניס אותם ידנית). ואני אשתמש בסוללה כלשהי של 12,000mAh, מה שחשוב בסוללה שיש לה יציאה שמסוגלת לספק 5V 2A (10W) לפחות (הצריכה תלויה בחומרה שאתם משתמשים בה).

הכנות

“צריבה”

אזהרה! הפקודה תמחק את כל התוכן שקיים ביעד.

למרות ש-FriendyElec מספקים מערכות הפעלה יעודיות, בחרתי להשתמש ב-DietPi, הורדתי את הגרסה שתואמת לחומרה שיש לי, חילצתי את התמונה והעתקתי אותה אל ה-SD בעזרת הפקודה dd:

dd bs=1M if=<path_to_image> of=<block_device_to_overwrite>

בסיום מומלץ להריץ את הפקודה sync בכדי לוודא כי הכתיבה הסתיימה ולא נשאר משהו ב-buffer לפני שמחלצים את ההתקן SD.

אתחול ראשוני

הכניסו את הכרטיס SD להתקן, חברו כבל רשת לכניסת WAN של האמצעי וחברו שנאי 5V 2A בכדי להפעילו. תבדקו בנתב שלכם איזה כתובת ההתקן או שתנסו לתחבר ל-dietpi (אם זה לא עובד, תאלצו לבדוק בנתב איזה כתובת ההתקן קיבל).

ההתחברות הראשונית היא עם השם משתמש root וססמה dietpi. בהתחברות זו יקפוץ לכם חלון להגדרות ראשוניות (עדכונים, שינוי ססמה).

יצירת נקודה חמה

אפשר גם לעקוב אחר המדריך

הריצו את הפקודה dietpi-config, בתפריט בחרו Network Options: Adapters והפעילו את הממשק רשת.

לאחר שהפעלנו את הממשק רשת נצטרך להתקין את התוכנה שתאפשר ליצור נקודה חמה, אז נריץ dietpi-software נבחר באופציה browse ונמצא את החבילה WiFi Hotspot: turn your device into a wifi hotspot ונתקין אותה.

לאחר בדיקה קצרה (שישנם 2 אמצעי רשת לפחות, ואחד מהם הוא אלחוטי), נצטרך לחזור למסך הראשי ולבחור ב-Install. לאחר ההתקנה נחזור שוב ל-dietpi-config ול-Network Options: Adapters ונגדיר את הנקודה החמה שלנו.

ההגדרות ברירת מחדל מייצרים רשת WPA2 שתומכת ב-TKIP/CCMP, אם הינכם מעוניינים לבטל את התמיכה באלגוריתם TKIP, תוכלו לערוך את הקובץ /etc/hostapd/hostapd.conf ישירות.

אינטרנט סלולרי

בכדי לעבוד עם הדונגל’ שברשותי, אני צריך להתקין את modeswitch

apt update && apt install usb-modeswitch usb-modeswitch-data

עכשיו, כאשר אחבר את הדונגל’, אראה אמצעי eth2. שכן, אנחנו עדיין מחוברים לרשת המקומית, נצטרך לבצע מספר שינויים בכדי שהאינטרנט יתקבל מהדונגל’. ערכו את הקובץ /etc/network/interfaces והוסיפו את השורות הבאות מעל להערה # WiFi

# LTE Dongle
allow-hotplug eth2
iface eth2 inet dhcp

החליפו את שם ההתקן eth2 בהתאם למערכת שלכם

לאחר מכן ערכו את הקובץ /etc/iptables.ipv4.nat ושנו את כל ההופעות של eth0 עם eth2. וזהו, לאחר אתחול, האינטרנט יגיע מהדונגל’.

Wireguard VPN

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

כעת נותר לנו להגדיר את ה-VPN, אם אין לכם שרת VPN, תרגישו חופשי לדלג על שלב זה. חזרו למנהל חבילות dietpi-software, בחרו ב-Browse Software ותתקינו את החבילה WireGuard: an extremely simple yet fast and modern VPN. לא לשכוח שצריך לסמן את החבילה ואז לבחור ב-Install.

לאחר שהתקנתם את Wireguard, פשוט העתיקו את הקובץ הגדרות של הלקוח שלכם ל-/etc/wireguard/wg0.conf, לדוגמה

[Interface]
Address = REDUCTED
PrivateKey = REDUCTED
DNS = 8.8.8.8
MTU = 1438
#PostUp = iptables -A FORWARD -i wg0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT ; iptables -A FORWARD -i wlan0 -o wg0 -j ACCEPT ; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
#PostDown = iptables -D FORWARD -i wg0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT ; iptables -D FORWARD -i wlan0 -o wg0 -j ACCEPT ; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE

[Peer]
PublicKey = REDUCTED
Endpoint = REDUCTED
AllowedIPs = 0.0.0.0/0, ::/0

תוכלו להשתמש ב-systemctl start wg-quick@wg0.service בכדי להפעיל את ה-VPN, ואם אתם רוצים שהשירות יעלה אוטומטית, תחליפו את start בהוראה enable.

בעיית קישוריות

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

ip link set mtu 1400 dev <dev_name>