قم بإعداد VPN بسيط باستخدام WireGuard و Raspberry Pi كخادم

منذ 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 من خلال كتالوجات التطبيقات.

لدي أحدث إصدار من Fedora 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 الخاص بي WireGuardVPN من الكتالوج الرسمي لمتجر 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 [email protected]

تكوين عميل الكمبيوتر المحمول

على الكمبيوتر المحمول ، قم بإنشاء ملف تكوين /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 [email protected]

إعداد عميل على هاتف 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

سيتم إخراج رمز الاستجابة السريعة إلى وحدة التحكم كـ ASCII. يمكن فحصه من تطبيق Android VPN وإعداد نفق VPN تلقائيًا.

إنتاج

يعد إعداد WireGuard أمرًا سحريًا مقارنةً بـ OpenVPN.

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

إضافة تعليق