Wake-on-LAN عبر VPN لا يعمل؟ البث لا يعبر أبدًا
النفق قائم والمشاركات تستجيب، لكن الجهاز يبقى نائمًا. يجب إرسال حزمة magic packet في مقطع الهدف نفسه، لذلك ضع هناك مساعدًا.
تُدخل جهاز المكتب في السكون، وتتصل بالـ VPN من المنزل، فيبقى مغلقًا. النفق قائم، ومشاركات الملفات تستجيب، وصفحة wake-on-LAN في الموجه تفيد بأنها أرسلت الطلب. كل إشارة مرئية تقول إن الشبكة بخير، ولهذا السبب تحديدًا يربك هذا الموقف: الإطار الذي كان سيوقظ الجهاز لا يصل أبدًا إلى المقطع الذي يوجد فيه.
الأعراض تشير إلى الشبكة الفرعية، لا إلى النفق
يفشل ping إلى المضيف النائم، وهذا الجزء طبيعي. الجهاز في وضع الاستعداد لا يملك حزمة IP عاملة، لذلك لا يستطيع الرد على ARP أو ICMP، ولا يوجد إعداد نفق يغير ذلك. الاختبار المفيد هو ما إذا كان جهاز ثانٍ في الشبكة المحلية نفسها يستيقظ، وما إذا كانت صفحة الإيقاظ الخاصة بالموجه تعمل لمضيف موصول به.
بمجرد نجاح الاختبار في المقطع نفسه، يكون العطل في النطاق. المرسل الذي تستخدمه يعيش على واجهة الـ VPN، والحزمة التي يبنيها بث للرابط المحلي، لذلك تخرج من الواجهة الخطأ أو لا تخرج إطلاقًا. النفق ليس معطلًا؛ إنه يحمل نوعًا خطأ من حركة المرور. اكتشف أي واجهة يختارها المرسل قبل أن تغير إعدادًا واحدًا في الموجه.
حزمة magic packet إطار، لا خدمة
تبدأ الحمولة بترويسة ثابتة من ستة بايتات، 0xFF، ثم عنوان العتاد لبطاقة الهدف مكررًا ست عشرة مرة، ثم كلمة مرور SecureOn اختيارية من أربعة بايتات. يغلّف المرسلون ذلك عادةً في UDP إلى المنفذ 7 أو المنفذ 9، لكن رقم المنفذ عرف مشترك بين المرسل والبطاقة، لا خدمة تستمع ويمكن الاتصال بها. لا شيء يستمع، ولا شيء يرد.
ما يوقظ الجهاز هو واجهة الشبكة، التي تبقي جزءًا صغيرًا من الدوائر مزودًا بالطاقة من سكة الاستعداد بينما بقية النظام مغلق. لهذا يجب أن يصمد الإعداد أمام انقطاع الكهرباء الكامل وأمام السكون معًا: اللوحة التي تقطع طاقة الاستعداد عند الإغلاق لم تعد تملك بطاقة تستقبل أي شيء.
لماذا لا يستطيع نفق موجّه تسليمها
واجهة الـ VPN الموجّهة وصلة IP من نقطة إلى نقطة بين عنواني نفق. وهي موجودة لتحمل الحزم الموجهة إلى النظير، ولهذا يتصرف ping وSSH ومشاركات الملفات بشكل طبيعي عبرها. إطار البث ليس موجهًا إلى ذلك النظير، وعنوان البث المحدود لا يعيد الموجه توجيهه من تلقاء نفسه أبدًا.
إعادة توجيه بث موجه إلى شبكة فرعية قدرة مقصودة في الموجه تعطّلها معظم الإعدادات الافتراضية، وحتى عند ذلك تُسلَّم إلى تلك الشبكة الفرعية لا إلى بطاقة نائمة معينة. المضيف النائم لا يستطيع الرد على ARP أيضًا، لذلك يُسقط الموجه الذي يحاول حل عنوان الهدف قبل إعادة التوجيه الإطارَ وهو ينتظر ردًا لن يأتي أبدًا. قيد ربط ثابت يصلح هذا الجزء ويترك مشكلة نطاق البث دون مساس. إذن قيدان منفصلان، وإزالة أحدهما لا تفعل شيئًا للآخر.
ثلاثة مواضع تصل فعلًا إلى البطاقة
كل ترتيب صالح يضع الإطار في مقطع الهدف، وهي تختلف في مقدار إزعاجها للشبكة:
- ضع جهازًا يعمل دائمًا في مقطع الهدف. يمكن للموجه أو وحدة NAS أو صندوق Linux صغير يبقى مزودًا بالطاقة أن يبث الإطار محليًا بمجرد وصولك إليه عبر النفق، ولا يتغير شيء في الـ VPN.
- دع الموجه يبث الإطار بنفسه. تقدم كثير من البرامج الثابتة صفحة إيقاظ ترسل من جسر الشبكة المحلية، وهذا يعمل ما دام الهدف على ذلك الجسر وليس خلف موجه ثانٍ.
- اجسر الموقعين بنفق من نوع TAP عندما يجب أن يعبر البث فعلًا. هذا يدمج نطاقي بث، ويجلب عواصف البث وخطة عناوين واحدة وكل بروتوكول اكتشاف يرى الموقعين في وقت واحد.
الخيار الأول هو الأنسب لجهاز واحد. الثالث قرار تصميم شبكة بتكلفة مستمرة، فتعامل معه على هذا الأساس لا كإصلاح سريع لسطح مكتب واحد.
سجّل أي مساعد يبث الإطار وعلى أي جسر أو VLAN يوجد. المساعد الذي يبث على الواجهة الخطأ يعطي التقاطًا مثاليًا وجهازًا لا يستيقظ أبدًا، وهذا المزيج يكلف بعد ظهر كامل.
تحقق من الإرسال قبل أن تلوم العميل
افحص بطاقة الهدف أولًا، لأن أي مرسل لا يستطيع إيقاظ بطاقة غير مجهزة. يقرأ الأمر أدناه أوضاع الإيقاظ المدعومة والحالية، حيث تعني القيمة الحالية g أن magic packet ممكن:
ethtool enp3s0 | grep -A1 'Wake-on' ip neigh show 192.168.1.50 tcpdump -ni br0 -e 'ether broadcast and udp dst port 9' etherwake -i br0 3c:7c:3f:00:11:22
شغّل الالتقاط على المساعد أثناء الإرسال، واقرأه بدلًا من افتراض النجاح. الإطار الذي يغادر الجسر الصحيح بعنوان MAC الخاص بالبث هو الدليل الوحيد على أن الإرسال نجح؛ إذا كان الالتقاط فارغًا فقد اختار المرسل واجهة أخرى وبقية الاختبار بلا معنى. المرسل الذي يبني إطارًا خامًا بدل حزمة UDP لا يطابق ذلك المرشح، لذا تحقق من الشكل الذي تستخدمه أداتك قبل أن تستنتج أنه لم يُرسل شيء.
في Windows يكون فحص البطاقة المكافئ هو powercfg /devicequery wake_armed، الذي يسرد الأجهزة المسموح لها بإيقاظ النظام. محول الشبكة الغائب عن تلك القائمة سيتجاهل كل حزمة ترسل إليه، مهما بدا الإطار صحيحًا على الكبل.
ثم أكد الإيقاظ نفسه والمتابعة. الجهاز الذي يشتعل لكنه يبقى غير قابل للوصول بالاسم يحتاج عنوانًا ثابتًا وسجل DNS، لأن تحليل الأسماء بالبث ما زال لا يعبر النفق. الإيقاظ اللاسلكي قدرة منفصلة وأقل موثوقية بكثير من النسخة السلكية، لذا اختبرها في المقطع نفسه قبل إشراك الـ VPN أصلًا. اكتب اسم الواجهة ومضيف المساعد في التذكرة، لأن العطل التالي يتعلق عادةً بالحقيقتين نفسهما.