في الوقت الحالي ،
نطلق الوصول إلى الخوادم القائمة على
WireGuard ، واليوم أريد أن أتحدث عن كيفية تكوين العملاء الذين يتخلفون عن NAT ، على الرغم من أننا لن ننسى تكوين الخادم أيضًا.
أولاً ، حول مزايا WireGuard والجانب الخلفي للعملة ، حول الصعوبات التي تنشأ مع المزايا. WireGuard هو تطبيق صغير إلى حد ما للنفق بين نقطتين ، حيث يتم استخدام بروتوكول النقل بواسطة UDP. لهذا السبب ، ولأن تطبيق Linux نفسه يتم تطبيقه كوحدة kernel ، فإن الاختبارات تظهر ميزة سرعة مناسبة على المنافسين. لا يمكن اعتبار هذا شبكة نظير إلى نظير ، على الرغم من أن العقد النهائية تسمى
النظير . إن جوهر شبكة نظير إلى نظير ليس فقط أنه من الممكن توصيل عقدتين تعسفيتين. بالطبع ، باستخدام مجموعة الأدوات هذه ، يمكنك إنشاء بنية تحتية لشبكة معقدة للغاية ، لكن ليس لدي مثل هذا الهدف. سننظر في الاتصال بعقدة الخادم والوصول إلى الإنترنت من خلالها.
من الواضح ، إذا كانت العقدتان والخادم وعميل واحد لهما عناوين IP
بيضاء ، في هذه الحالة يجب ألا تكون هناك أي صعوبات في الإعداد. ولكن غالبًا ما يكون العملاء وراء NAT ، وفي هذه الحالة ، عند إعداد الخادم ، يجب عليك تحديد عنوان IP الخاطئ الذي تم إصداره / تسجيله على الجهاز. في هذا الصدد ، يمكن أن يساعد بروتوكول STUN. غالبًا ما يستخدم هذا البروتوكول عند العمل مع VoIP ، خاصةً عندما يكون كلا العميلين وراء NAT. ولكن في حالتنا ، وسوف يساعد أيضا. انطلاقًا من المعلومات الموجودة على Wikipedia ، لا يعمل STUN مع جميع أنواع NAT ؛ في أحد أنواع NATs الأربعة ، يمكن أن يكون للعميل (المتماثل) IP مختلف عن الذي يمكن تعريفه خارجيًا باستخدام عميل STUN.
يوجد عملاء STUN على جميع أنظمة التشغيل الشائعة باستثناء iOS. بموجب نظام التشغيل هذا ، لم أتمكن من العثور على عميل STUN. سأقدم مثالاً لنظام التشغيل MacOS. أولاً ، تحتاج إلى تثبيت عميل STUN نفسه.
$ brew install stunman
هناك الكثير من خوادم STUN على الإنترنت وليس من الصعب العثور على أي خادم للاختبار.
سأستخدم stun.ekiga.net . للاختبار ، ستحتاج إلى استخدام المنفذ المحلي ، وهو المنفذ الذي سنستخدمه لتكوين:
$ stunclient --localport 51820 stun.ekiga.net
مع اختبار ناجح ، نحصل على النتيجة التالية تقريبًا:
Binding test: success Local address: 192.168.88.23:51820 Mapped address: 82.207.27.3:51820
العنوان المعين هو بالضبط
عنوان IP الذي ستحتاج إلى استخدامه عند إعداد الخادم. في الواقع ، هذا هو عنوان IP الذي سيقدم في حالتي أي خدمة لتحديد IP الخارجي. لذلك ، يمكنك استخدام
خدمتك المفضلة لتحديد IP ، ولكن بالطبع ، يجدر النظر إلى أن هذا الاختبار سيكون غير مباشر وليس هناك ما يضمن أن كل شيء سوف يعمل على النحو المنشود.
للاتصال ، من جانب العميل ، للخادم ، يجب عليك توفير: IP والمنفذ والمفتاح العام. للتكوين من جانب العميل ، تحتاج بالضبط إلى نفس القائمة المتوفرة من جانب الخادم. بعد ذلك ، سأقدم خيارات للتكوينات ، إذا كنت ستستخدمها كأمثلة ، فمن المستحسن تجديد المفاتيح.
على نظام Linux ، يمكن القيام بذلك من سطر الأوامر ، على نظام macOS من خلال واجهة المستخدم الرسمية للعميل.
$ wg genkey | tee privatekey | wg pubkey > publickey
في هذه الحالة ، في مكان المكالمة ، سيتم إنشاء المفتاح الخاص في ملف المفتاح الخاص ، ويكون عامًا في publickey ، على التوالي.
أولاً ، ضع في الاعتبار تكوين العميل:
# [Interface] # PrivateKey = YPuKo2QXndQ2Vc3S/y90oKT7AJ0Swhq/HWKiF7GwS04= # ListenPort = 51820 # IP , # Address = 10.8.0.2/24 # DNS , DNS = 8.8.8.8 # [Peer] # , PublicKey = nFjDIkgsAh1RMZuaCJ+AKs7JmbMxxthhZ0POjUSTvkc= # , # IP , # , # WireGuard . IP , # . AllowedIPs = 0.0.0.0/0 # IP Endpoint = 46.101.122.130:51820 # 2 . - , , # AllowedIPs # . - # , - 25 . PersistentKeepalive = 25
حان الوقت لتهيئة الخادم:
# [Interface] # IP Address = 10.8.0.1/24 # ListenPort = 51820 # , PrivateKey = MNnxOy79xtXtSQ3UySWtdlOMbG7ff9dXGjeSTPEByn8= # 2 , wg0 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # [Peer] # , PublicKey = TdRtYd6XXI+ynPDXU6FF5TT3L5t/YlQVZswr2xsou34= # IP , , # AllowedIPs = 10.8.0.2/32 # IP , , STUN EndPoint = 82.207.27.3:51820
عند استخدام هذه التكوينات كأمثلة ، يوصى بحذف التعليقات باللغة الروسية ، ولا يضمن الخادم والعميل في حالة التعليقات.لقد استخدمت الموارد التالية لتكوين:
الموقع الرسمي ،
ArchWiki ، وهذا البرنامج التعليمي .
في النهاية ، أود أيضًا توضيح بعض الأسئلة المحتملة:
1. هل من الممكن إنشاء عدة أقسام من نفس
النظير على الخادم ، والتي ستختلف فقط في
EndPoint ؟
نعم ، هذا ممكن ، وقد يكون مفيدًا إذا كنت تستخدم الخدمة من أماكن مختلفة ، على سبيل المثال ، في العمل والمنزل. ولكن يمكن أن تنشأ مشاكل إذا كان هؤلاء
الأقران متصلين
بالإنترنت في وقت واحد ، في هذه الحالة سيكون هناك تعارض في عناوين IP.
2. ما IP الخارجي والمنفذ الذي سيتم تحديده بواسطة بروتوكول STUN لعدة عملاء لكل NAT؟
الشيء نفسه بالنسبة لجميع العملاء ، وسوف يكون هو نفسه. هل ستكون هذه مشكلة؟ كل هذا يتوقف على إعدادات الموفر / الموجه ، ولكن لا ينبغي أن تنشأ أي مشاكل في الأساس ، لأن الموجه يجب أن يبث حزم UDP داخل الشبكة بواسطة قناع الشبكة المحلية ، على التوالي ، على الأطراف المستقبلة التي يمكنها فك تشفير الحزم أن تستقبلها بنجاح. لقد أجرينا اختبارات على معداتنا ، وكانت الاختبارات ناجحة.
لم يكن الغرض من هذه المقالة كتابة برنامج تعليمي كامل حول كيفية تكوين WireGuard ، فليس من الصعب القيام به باستخدام الوثائق الرسمية. أردنا أن نوضح كيف يعمل WireGuard مع NAT.
إذا كنت ترغب في تجربة WireGuard في الأعمال التجارية ، فيمكنك الاتصال
بنا ، حيث يمكننا الدخول في وضع الاختبار.
UPD:كما أوضح من قبل المهتديين
aborouhin ، IP واحد فقط أبيض يكفي لقناة البيانات للعمل دون مشاكل. وفقًا لذلك ، يمكن حذف
EndPoint for
Peer من تهيئة الخادم ، مما يجعل التكوين أسهل. ويمكن أن يكون الدليل الموصوف مفيدًا إذا كانت كلا العقدتين وراء NAT.