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