Wake-on-LAN melalui VPN berhenti berfungsi? Betulkan entri ARP
Paket sihir merentasi terowong, tetapi penghala membuangnya selepas entri ARP tamat tempoh. Bandingkan tiga laluan penghantaran, kemudian pin alamat MAC secara kekal.
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.
| 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 |
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.23Keadaan 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 9Tangkapan 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.