إعداد شبكة VPN بسيطة باستخدام WireGuard وراسبيري باي كخادم

منذ WireGuard يصبح جزءا من جوهر المستقبل Linux 5.6، قررت أن أرى أفضل طريقة لدمج هذه الشبكة الافتراضية الخاصة (VPN) مع جهازي راوتر LTE / نقطة وصول على Raspberry Pi.

معدات

  • Raspberry Pi 3 مع وحدة LTE و IP العام. سيكون هناك خادم VPN (يشار إليه فيما يلي باسم com.edgewalker)
  • الهاتف قيد التشغيل Androidوالتي يجب أن تستخدم شبكة افتراضية خاصة (VPN) لجميع الاتصالات
  • مفكرة Linuxوالتي ينبغي أن تستخدم VPN داخل الشبكة فقط

يجب أن يكون كل جهاز يتصل بشبكة VPN قادرًا على الاتصال بكل جهاز آخر. على سبيل المثال ، يجب أن يكون الهاتف قادرًا على الاتصال بخادم الويب على جهاز كمبيوتر محمول إذا كان كلا الجهازين جزءًا من شبكة VPN. إذا كان الإعداد بسيطًا بما يكفي ، فيمكنك التفكير في الاتصال بشبكة VPN وسطح مكتب (عبر Ethernet).

بالنظر إلى أن الاتصالات السلكية واللاسلكية أصبحت أقل أمانًا بمرور الوقت (الهجمات المستهدفة, هجوم اختراق KRACK WPA2 и هجوم Dragonblood ضد WPA3أفكر جدياً في استخدام WireGuard لجميع أجهزتي، بغض النظر عن البيئة التي تعمل فيها.

تثبيت البرنامج

WireGuard يوفر الحزم المترجمة مسبقا بالنسبة لمعظم التوزيعات Linux, Windows и macOSطلبات لـ Android يتم توفير تطبيقات iOS و 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 قمت بتثبيت التطبيق WireGuard VPN من الكتالوج الرسمي لمتجر 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 code) على الشاشة بصيغة ASCII. ويمكن مسحه ضوئياً من خلال التطبيق. Android VPN وتكوين نفق VPN تلقائيًا.

إنتاج

تعديل WireGuard ساحر بكل بساطة مقارنة بـ OpenVPN.

المصدر: www.habr.com

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster