Wake-on-LAN از طریق VPN کار نمیکند؟ ورودی ARP را درست کنید
بستههای جادویی از تونل میگذرند، اما روتر پس از انقضای ورودی ARP آنها را دور میریزد. سه مسیر تحویل را مقایسه کنید، سپس نشانی MAC را برای همیشه ثابت کنید.
یک بسته بیدارسازی را درست پس از خاموششدن بفرستید و رایانه برمیگردد؛ همان فرمان صبح روز بعد هیچ کاری نمیکند. هیچچیز در پیکربندی VPN تغییر نکرده و ارسال پورت همچنان به نشانی درست اشاره میکند. تفاوت در زمان است: جدول همسایههای روتر ماشین خوابیده را فراموش کرده، پس نشانی MAC برای گذاشتن در قاب ندارد. همین انقضا، نه تونل، بیشتر شکستهای Wake-on-LAN روی VPN را توضیح میدهد.
بیدارسازی اول کار میکند و دومی نه
روتر قابی را به یک نشانی خصوصی میفرستد و مقصد را در جدول همسایههای خود جستوجو میکند. تا زمانی که ماشین روشن است به ARP پاسخ میدهد، پس نگاشت تازه میماند. وقتی خاموش میشود هیچچیز پاسخ نمیدهد، ورودی پس از چند دقیقه منقضی میشود و قابهای بعدی برای آن نشانی دور ریخته میشوند، هرچند IP و ارسال پورت معتبر میمانند.
الگو به شما میگوید کدام شکست را دارید. بیدارسازیای که هرگز کار نمیکند به تحویل اشاره دارد: پورت اشتباه، مقصد اشتباه یا دیوار آتشی که بسته را پیش از رسیدن به LAN دور میریزد. بیدارسازیای که یک بار کار میکند و بعد ساعتها شکست میخورد به ورودی همسایه اشاره دارد. بیدارسازیای که تا تغییر اجاره DHCP کار میکند به نشانیدهی اشاره دارد که رزرو آن را درست میکند.
پیش از دست زدن به ARP مطمئن شوید نشانی پایدار است. اگر ماشین خوابیده پس از پایان اجاره نشانی تازه بگیرد، یک ورودی همسایه سنجاقشده برای نشانی قدیمی همزمان دائمی و بیفایده خواهد بود. نخست یک رزرو DHCP تنظیم کنید تا نشانی از راهاندازیهای دوباره جان سالم به در ببرد.
بسته جادویی از شبکه چه میخواهد
بار سودمند ساده است: 102 بایت از شش بایت 0xFF و پس از آن نشانی MAC هدف شانزده بار، که معمولاً به پورت UDP 9 فرستاده میشود. در یک LAN تخت بهصورت پخش بیرون میرود، هر پورت آن را میگیرد و کارت شبکه خاموش نشانی خودش را میشناسد.
از طریق VPN بسته به روتر بهصورت تکپخشی به یک نشانی خصوصی یا پخش جهتدار به زیرشبکه میرسد. در حالت تکپخشی روتر باید مقصد را پیش از گذاشتن قاب روی LAN به نشانی MAC تبدیل کند و دقیقاً همین تبدیل است که وقتی میزبان میخوابد شکست میخورد.
برخی ابزارها به جای 9 به پورت 7 میفرستند و برخی دستگاهها پخش جهتدار را بهطور پیشفرض مسدود میکنند. اینها شکست تحویلاند، نه شکست ARP، پس پیش از تغییر جدول همسایهها مقصد و پورت را بررسی کنید.
سه مسیر به یک میزبان خوابیده
سه راه عملی برای رساندن قاب به LAN دارید و انتخاب درست به این بستگی دارد که چه چیزی را کنترل میکنید.
| Method | What it needs | Where it breaks |
|---|---|---|
| Subnet-directed broadcast | A wake tool that accepts a broadcast address and a router that forwards it | Broadcast filtering, or a tool that only takes a MAC |
| Helper on the LAN | An always-on host such as the VPN server | No suitable host, or the host cannot reach the target VLAN |
| Permanent neighbour entry | Router shell access and the target MAC | NIC replacement or address change |
میزبان کمکی را وقتی وجود دارد برگزینید، چون در همان پیوند پخش میکند و به استثنای روتر نیاز ندارد. پخش جهتدار را وقتی روتر از پیش اجازه میدهد و ابزار بیدارسازی نشانی را پشتیبانی میکند برگزینید. ورودی ایستا را وقتی هیچکدام در دسترس نیست و میتوانید روی روتر فرمان اجرا کنید برگزینید.
اینها یکدیگر را حذف نمیکنند. ورودی دائمی مسیر تکپخشی را هم از خواب عبور میدهد، که وقتی کارساز است که کارخواه VPN تنها بتواند به نشانی مشخصی بفرستد.
ورودی همسایه را دائمی کنید
روی روتری با پوسته Linux یک فرمان نگاشت را سنجاق میکند. ارزشهای اینجا به یک LAN نمونه تعلق دارند و باید با ارزشهای خودتان جایگزین شوند:
ip neigh replace 192.168.50.23 lladdr 3c:7c:3f:12:9a:4e dev br0 nud permanent
ip neigh show dev br0 | grep 192.168.50.23وضعیت nud permanent ورودی را در طول مهلتهای ARP نگه میدارد و تا وقتی ماشین خاموش است از آن برای ارسال استفاده میکند. فرمان دوم ثابت میکند ورودی وجود دارد و واسطهای را نشان میدهد که به آن تعلق دارد، که در روترهایی با پل مهمان یا VLAN جداگانه مهم است.
آن را با هر قلابی که میانافزار عرضه میکند در برابر راهاندازی دوباره پایدار کنید: یک اسکریپت در /jffs/scripts در Asuswrt-Merlin، یک واحد oneshot در systemd روی سرور Linux بهعنوان دروازه، یک Neighbor= stanza در systemd-networkd، یا یک ورودی در /etc/ethers که ابزارهای محلی آن را میخوانند. فرمانی که در پوسته تایپ شود در راهاندازی دوباره بعدی ناپدید میشود و این رایجترین دلیل آن است که اصلاحی کارآمد بهنظر میرسد از کار میافتد.
از بیرون آزمایش کنید و بدانید چه وقت آن را بردارید
ماشین را به خواب ببرید و دستکم ده دقیقه صبر کنید، بهاندازهای که هر ورودی پویا منقضی شود. سپس درخواست بیدارسازی را از کارخواه VPN بفرستید و دو سوی روتر را تماشا کنید:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9ضبط نخست ثابت میکند بسته از تونل رسیده است؛ دومی ثابت میکند روتر قابی روی LAN گذاشته است. بسته جادویی معتبر بهصورت 102 بایت با MAC تکرارشده دیده میشود، پس طول و مقصد را با هم بررسی کنید. اگر قاب از پل LAN بیرون برود و ماشین خاموش بماند، مشکل باقیمانده در دستگاه است: راهاندازی سریع، خواب عمیق یا تنظیم BIOS که برق کارت شبکه را قطع میکند.
وقتی کارت شبکه عوض شد ورودی را بردارید و وقتی ماشین را به نشانی دیگری بردید آن را بهروز کنید. نگاشت دائمی یک استثنای آگاهانه است و استثنایی که کسی آن را به یاد ندارد همان راهی است که یک لپتاپ آینده قابهایی را دریافت میکند که برای یک رایانه رومیزی بازنشسته در نظر گرفته شده بودند.