منذ WireGuard
معدات
- Raspberry Pi 3 مع وحدة LTE و IP العام. سيكون هناك خادم VPN (يشار إليه فيما يلي باسم com.edgewalker)
- هاتف Android يجب أن يستخدم VPN لجميع الاتصالات
- كمبيوتر محمول Linux يحتاج إلى استخدام VPN فقط داخل الشبكة
يجب أن يكون كل جهاز يتصل بشبكة VPN قادرًا على الاتصال بكل جهاز آخر. على سبيل المثال ، يجب أن يكون الهاتف قادرًا على الاتصال بخادم الويب على جهاز كمبيوتر محمول إذا كان كلا الجهازين جزءًا من شبكة VPN. إذا كان الإعداد بسيطًا بما يكفي ، فيمكنك التفكير في الاتصال بشبكة VPN وسطح مكتب (عبر Ethernet).
بالنظر إلى أن الاتصالات السلكية واللاسلكية أصبحت أقل أمانًا بمرور الوقت (
تثبيت البرنامج
يوفر WireGuard
لدي أحدث إصدار من 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 الخاص بي
تركيب المفاتيح
لمصادقة العقد ، يستخدم 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