Hantar paket bangun sejurus selepas dimatikan dan PC kembali hidup; arahan yang sama keesokan paginya tidak melakukan apa-apa. Tiada apa dalam konfigurasi VPN berubah, dan pengubahsuaian port masih menunjuk ke alamat yang betul. Bezanya ialah masa: jadual jiran penghala telah melupakan mesin yang tidur, jadi ia tiada alamat MAC untuk dimasukkan ke dalam bingkai. Tamat tempoh itulah, bukan terowong, yang menjelaskan kebanyakan kegagalan Wake-on-LAN melalui VPN.

Bangun pertama berjaya dan yang seterusnya tidak

Penghala memajukan bingkai ke alamat peribadi dengan mencari destinasi dalam jadual jirannya. Selagi mesin berjalan ia menjawab ARP, jadi pemetaan kekal segar. Sebaik sahaja ia dimatikan, tiada apa menjawab, entri menjadi lapuk selepas beberapa minit, dan bingkai seterusnya ke alamat itu digugurkan walaupun IP dan pengubahsuaian port masih sah.

Corak itu memberitahu anda kegagalan mana yang anda hadapi. Bangun yang tidak pernah berjaya menunjukkan penghantaran: port salah, destinasi salah, atau tembok api yang menggugurkan paket sebelum ia sampai ke LAN. Bangun yang berjaya sekali kemudian gagal berjam-jam menunjukkan entri jiran. Bangun yang berjaya sehingga pajakan DHCP berubah menunjukkan pengalamatan, yang dibetulkan oleh tempahan.

Pastikan alamat itu stabil sebelum menyentuh ARP. Jika mesin yang tidur mendapat alamat baharu selepas pajakan tamat, entri jiran yang dipin untuk alamat lama akan kekal dan tidak berguna pada masa yang sama. Tetapkan tempahan DHCP dahulu supaya alamat itu bertahan selepas but semula.

Apa yang paket sihir perlukan daripada rangkaian

Muatan itu mudah: 102 bait daripada enam bait 0xFF diikuti alamat MAC sasaran enam belas kali, biasanya dihantar ke port UDP 9. Dalam LAN rata ia keluar sebagai siaran, setiap port menerimanya, dan kad rangkaian yang dimatikan mengenali alamatnya sendiri.

Melalui VPN paket itu tiba di penghala sebagai unicast ke alamat peribadi atau sebagai siaran terarah ke subnet. Dalam kes unicast penghala mesti menyelesaikan destinasi kepada alamat MAC sebelum meletakkan bingkai di LAN, dan penyelesaian itulah yang gagal semasa hos tidur.

Sesetengah alat menghantar ke port 7 dan bukan 9, dan sesetengah perkakas menyekat siaran terarah secara lalai. Itu kegagalan penghantaran, bukan kegagalan ARP, jadi periksa destinasi dan port sebelum menukar jadual jiran.

Tiga laluan ke hos yang tidur

Anda ada tiga cara praktikal untuk membawa bingkai ke LAN, dan pilihan yang betul bergantung pada apa yang anda kawal.

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

Pilih hos pembantu apabila ada, kerana ia menyiarkan pada pautan dan tidak perlu pengecualian penghala. Pilih siaran terarah apabila penghala sudah membenarkannya dan alat bangun menyokong alamat. Pilih entri statik apabila kedua-duanya tiada dan anda boleh menjalankan arahan pada penghala.

Ini tidak saling meniadakan. Entri kekal juga membolehkan laluan unicast bertahan melalui tidur, yang berguna apabila klien VPN hanya boleh menghantar ke alamat tertentu.

Jadikan entri jiran kekal

Pada penghala dengan shell Linux, satu arahan memin pemetaan. Nilai di sini milik LAN contoh dan mesti diganti dengan nilai anda sendiri:

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

Keadaan nud permanent mengekalkan entri melepasi tamat masa ARP dan menggunakannya untuk pemajuan semasa mesin dimatikan. Arahan kedua membuktikan entri itu wujud dan menunjukkan antara muka yang dimilikinya, yang penting pada penghala dengan jambatan tetamu atau VLAN berasingan.

Jadikannya tahan but semula melalui cangkuk apa pun yang ditawarkan perisian tegar: skrip dalam /jffs/scripts pada Asuswrt-Merlin, unit oneshot systemd pada pelayan Linux yang bertindak sebagai get laluan, Neighbor= stanza dalam systemd-networkd, atau entri dalam /etc/ethers yang dibaca alat tempatan. Arahan yang ditaip dalam shell hilang pada permulaan semula seterusnya, dan itulah sebab paling biasa pembaikan yang berfungsi kelihatan berhenti berfungsi.

Uji dari luar dan tahu bila hendak membuangnya

Tidurkan mesin dan tunggu sekurang-kurangnya sepuluh minit, cukup lama untuk mana-mana entri dinamik tamat tempoh. Kemudian hantar permintaan bangun dari klien VPN dan perhatikan kedua-dua belah penghala:

tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9

Tangkapan pertama membuktikan paket itu tiba dari terowong; yang kedua membuktikan penghala meletakkan bingkai di LAN. Paket sihir yang sah muncul sebagai 102 bait dengan MAC berulang, jadi periksa panjang serta destinasi. Jika bingkai meninggalkan jambatan LAN tetapi mesin kekal dimatikan, masalah selebihnya ada pada peranti: mula pantas, tidur nyenyak atau tetapan BIOS yang memutuskan kuasa ke kad rangkaian.

Buang entri apabila kad rangkaian berubah, dan kemas kini apabila anda memindahkan mesin ke alamat lain. Pemetaan kekal ialah pengecualian yang disengajakan, dan pengecualian yang tidak diingati sesiapa ialah cara komputer riba masa depan mula menerima bingkai yang ditujukan untuk desktop yang telah bersara.

Artikel berkaitan