ส่งแพ็กเก็ตปลุกทันทีหลังปิดเครื่องแล้วคอมพิวเตอร์กลับมา คำสั่งเดิมในเช้าวันถัดไปกลับไม่ทำอะไรเลย ไม่มีอะไรเปลี่ยนในการตั้งค่า VPN และการส่งต่อพอร์ตยังชี้ไปที่ที่อยู่ถูกต้อง ความต่างอยู่ที่เวลา ตารางเพื่อนบ้านของเราเตอร์ลืมเครื่องที่หลับอยู่ จึงไม่มีที่อยู่ MAC จะใส่ลงในเฟรม การหมดอายุนีเอง ไม่ใช่อุโมงค์ ที่อธิบายความล้มเหลวของ Wake-on-LAN ผ่าน VPN ส่วนใหญ่

การปลุกครั้งแรกได้ผล ครั้งถัดไปไม่

เราเตอร์ส่งต่อเฟรมไปยังที่อยู่ส่วนตัวโดยค้นหาเป้าหมายในตารางเพื่อนบ้าน ตราบใดที่เครื่องยังทำงานอยู่ มันจะตอบ ARP ทำให้การจับคู่ยังสดใหม่ เมื่อปิดเครื่องก็ไม่มีอะไรตอบ รายการจึงหมดอายุในไม่กี่นาที และเฟรมที่มาถึงที่อยู่นั้นในภายหลังจะถูกทิ้ง แม้ว่า IP และการส่งต่อพอร์ตยังใช้ได้

รูปแบบบอกคุณว่าเป็นความล้มเหลวแบบไหน การปลุกที่ไม่เคยได้ผลชี้ไปที่การส่งมอบ: พอร์ตผิด เป้าหมายผิด หรือไฟร์วอลล์ที่ทิ้งแพ็กเก็ตก่อนถึง LAN การปลุกที่ได้ผลครั้งเดียวแล้วล้มเหลวหลายชั่วโมงชี้ไปที่รายการเพื่อนบ้าน การปลุกที่ได้ผลจนกว่าสัญญาเช่า DHCP เปลี่ยนชี้ไปที่การกำหนดที่อยู่ ซึ่งการจองที่อยู่แก้ไขได้

ยืนยันว่าที่อยู่คงที่ก่อนแตะ ARP ถ้าเครื่องที่หลับอยู่ได้ที่อยู่ใหม่เมื่อสัญญาเช่าหมด รายการเพื่อนบ้านที่ตรึงไว้สำหรับที่อยู่เก่าจะถาวรและไร้ประโยชน์ในเวลาเดียวกัน ตั้งการจอง DHCP ก่อนเพื่อให้ที่อยู่อยู่รอดหลังรีบูต

แพ็กเก็ตเวทมนตร์ต้องการอะไรจากเครือข่าย

เพย์โหลดง่ายมาก: 102 ไบต์จากไบต์ 0xFF หกไบต์ตามด้วยที่อยู่ MAC เป้าหมายสิบหกครั้ง ปกติส่งไปที่พอร์ต UDP 9 บน LAN แบนราบ มันจะออกไปเป็นการกระจายเสียง ทุกพอร์ตรับได้ และการ์ดเครือข่ายที่ปิดอยู่รู้จักที่อยู่ของตัวเอง

ผ่าน VPN แพ็กเก็ตมาถึงเราเตอร์เป็นการส่งตรงไปยังที่อยู่ส่วนตัว หรือเป็นการกระจายเสียงที่ชี้ไปยังซับเน็ต ในกรณีส่งตรง เราเตอร์ต้องแปลงเป้าหมายเป็นที่อยู่ MAC ก่อนจะวางเฟรมบน LAN และการแปลงนั้นเองที่ล้มเหลวขณะโฮสต์หลับ

เครื่องมือบางตัวส่งไปที่พอร์ต 7 แทน 9 และอุปกรณ์บางรุ่นบล็อกการกระจายเสียงแบบชี้เป้าโดยค่าเริ่มต้น สิ่งเหล่านี้คือความล้มเหลวของการส่งมอบ ไม่ใช่ของ ARP ดังนั้นตรวจสอบเป้าหมายและพอร์ตก่อนแก้ตารางเพื่อนบ้าน

สามเส้นทางไปยังโฮสต์ที่หลับ

คุณมีสามวิธีปฏิบัติในการนำเฟรมขึ้น LAN และการเลือกที่ถูกต้องขึ้นอยู่กับสิ่งที่คุณควบคุม

MethodWhat it needsWhere it breaks
Subnet-directed broadcastA wake tool that accepts a broadcast address and a router that forwards itBroadcast filtering, or a tool that only takes a MAC
Helper on the LANAn always-on host such as the VPN serverNo suitable host, or the host cannot reach the target VLAN
Permanent neighbour entryRouter shell access and the target MACNIC 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 ยูนิต systemd oneshot บนเซิร์ฟเวอร์ 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 ที่ตัดไฟของการ์ดเครือข่าย

ลบรายการเมื่อเปลี่ยนการ์ดเครือข่าย และอัปเดตเมื่อย้ายเครื่องไปที่อยู่อื่น การจับคู่ถาวรเป็นข้อยกเว้นที่ตั้งใจ และข้อยกเว้นที่ไม่มีใครจำได้คือทางที่แล็ปท็อปในอนาคตจะเริ่มรับเฟรมที่ส่งให้เดสก์ท็อปที่ปลดระวางแล้ว

บทความที่เกี่ยวข้อง