Terowong naik pada data mudah alih dan kemudian kekal pada menyambung di rumah, dengan profil yang sama, kunci peer yang sama dan tiada perubahan konfigurasi di antaranya. Bezanya terletak pada perjalanan: permintaan dari dalam LAN ke alamat awam penghala bukan perjalanan yang sama dengan permintaan yang tiba dari internet. Kebanyakan get laluan rumah sama ada tidak melaksanakan laluan balik atau hanya melaksanakannya untuk protokol tertentu. Itu membuatkan gejala kelihatan seperti kunci rosak sedangkan tiada apa pun pada kunci yang berubah. Tentukan laluan mana yang gagal sebelum menyentuh kunci, pemajuan port atau profil klien.

Satu alamat, dua laluan berbeza

Dari luar, paket sampai ke alamat awam penghala dan peraturan pemajuan port menyerahkannya kepada pendengar WireGuard pada hos dalaman. Dari dalam, klien mendail alamat awam yang sama, jadi paket meninggalkan klien, tiba di penghala dan mesti dipusingkan semula ke arah LAN. Di pusingan itulah dua laluan berpisah, kerana penghala mesti menterjemah aliran yang keluar dan masuk semula melalui antara muka yang sama. Banyak pelaksanaan membuangnya dan bukannya menterjemahnya, dan klien kemudian menunggu jabat tangan yang tidak pernah dihantar.

Tingkah laku ini biasanya dipanggil NAT loopback atau hairpinning, dan ia milik penghala dan bukan WireGuard; RFC 4787 membentangkan kes terjemahan yang mungkin atau tidak mungkin disokong oleh get laluan. WireGuard sendiri tidak mempunyai pendapat tentang laluan itu, kerana ia hanya melihat paket yang sampai ke antara mukanya. Apabila penghala membuang aliran itu, daemon tidak pernah menerima apa-apa, klien melaporkan tamat masa jabat tangan, dan log pelayan kekal kosong. Log kosong kerana itu ialah petunjuk di mana paket berhenti, bukan bukti bahawa pelayan sudah mati. Itu juga sebab pemasangan semula tidak mengubah apa-apa.

Sebaliknya juga penting: log pelayan yang menunjukkan percubaan jabat tangan dari alamat LAN membuktikan paket telah tiba dan laluan itu elok, yang memindahkan siasatan kepada kunci dan alamat yang dibenarkan. Baca log itu untuk apa yang dibuktikannya, bukan untuk apa yang anda harap untuk lihat.

Hasilkan semula dahulu sebelum mengubah apa-apa

Uji dari rangkaian luaran yang dibenarkan dengan peranti yang sama dan profil yang sama, kemudian ulangi ujian itu di dalam LAN tanpa menyunting apa-apa. Jabat tangan yang selesai di luar dan klien yang di dalam tidak pernah meninggalkan peranti menghasilkan semula keadaan itu dan bukannya menekanya. Kedua-dua percubaan mesti menggunakan profil yang sama, jika tidak perbandingan itu tidak membuktikan apa-apa.

Kemudian lihat ke mana nama titik akhir diselesaikan untuk peranti ini. Tiga arahan berikut juga menunjukkan alamat mana yang sebenarnya didail oleh klien:

wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.net

Arahan pertama melaporkan titik akhir yang sedang digunakan oleh antara muka sekarang, dan dua yang lain menunjukkan ke mana nama itu diselesaikan pada mesin ini. Klien yang mendail alamat awam semasa berada pada rangkaian yang sama dengan pelayan sedang menggunakan laluan hairpin. Klien yang mendail alamat LAN tidak berbuat demikian, dan kegagalan di situ tergolong dalam siasatan lain. Perbezaan itulah yang menentukan sama ada bahagian seterusnya terpakai langsung.

Cara yang disokong untuk mencapai pelayan berhampiran

Susunan paling bersih ialah jawapan split-horizon: nama awam diselesaikan ke alamat awam untuk internet dan ke alamat LAN pelayan untuk klien di dalam. Profil menyimpan satu nama titik akhir dan penyelesai memilih laluan itu. Itu memerlukan kawalan ke atas jawapan DNS dalaman, yang biasanya ditawarkan oleh penghala rumah dan boleh diatur dengan sengaja oleh sesebuah organisasi. Tanpa kawalan itu, pilihan yang tinggal ialah ciri penghala atau profil kedua.

Ciri penghala itu ialah pantulan: get laluan menterjemah aliran dari dalam ke luar dan menghantarnya kembali ke dalam. Di tempat ia berfungsi, tiada perubahan klien diperlukan, dan di tempat ia tidak berfungsi, tiada tetapan klien akan menyelamatkannya. Ujinya dengan memerhati log pelayan semasa percubaan dalaman dan bukannya membaca senarai ciri penghala.

Menyunting profil kepada alamat peribadi ialah diagnosis, bukan reka bentuk. Ia membuktikan pelayan menjawab pada LAN, dan ia merosakkan profil yang sama pada saat komputer riba meninggalkan rumah.

ApproachWhat it depends onWhere it fails
Split-horizon nameControl of the internal DNS answerClients that resolve through a server outside the zone
Router reflectionGateway support for hairpin translationRouters that drop the flow silently
Private address in the profileNothing beyond the LANEvery network except the one at home

Kekalkan profil boleh guna di luar rumah

Laluan mana pun yang anda pilih, biarkan pemeriksaan identiti. Alamat titik akhir bukan identiti peer, dan perubahan alamat tidak pernah membenarkan menerima kunci awam asing yang kebetulan menjawab. WireGuard mengesahkan melalui kunci, jadi hos yang salah gagal pada jabat tangan dan bukannya memberi akses kepada sesuatu yang tidak dijangka.

Jika alamat awam bergerak, DNS dinamik itulah yang menjadikan nama itu berguna, dan tingkah laku penyegaran klien menentukan berapa cepat perubahan itu tiba. Ujinya dari luar selepas perubahan alamat, kerana kes LAN tidak dapat mengesahkannya. Awas penyelesai yang menyimpan jawapan lama melebihi jangka hayat rekod. Nama yang masih menunjuk ke alamat sebelumnya kelihatan betul-betul seperti pelayan yang jatuh.

Catat nama mana yang digunakan oleh profil dan ke mana ia diselesaikan pada setiap sisi sempadan. Profil yang bergantung pada ciri penghala yang tidak dicatat oleh sesiapa ialah panggilan sokongan yang menunggu kemas kini firmware seterusnya. Catatan itu juga yang memberitahu orang seterusnya sama ada kegagalan dalaman ialah kes hairpin yang dikenali atau sesuatu yang baharu.

Artikel berkaitan