Kotak rumah membuka terowongan dan mencapai server cloud tanpa masalah. Server cloud dapat menjangkau aplikasi rumah selama satu atau dua menit setelah kotak rumah terakhir mengirim sesuatu, lalu berhenti. Tidak ada yang muncul di log WireGuard, tidak ada kesalahan handshake yang dilaporkan, dan memulai ulang terowongan memperbaikinya sebentar. Pola itu adalah pemetaan yang kedaluwarsa, bukan terowongan rusak, dan panduan di bawah ini memastikannya sebelum ada yang diubah.

Pastikan polanya adalah kedaluwarsa saat menganggur

Detail yang membedakannya adalah waktu. Jika koneksi terbalik berfungsi tepat setelah peer rumah mengirim lalu lintas dan gagal setelah interval tenang, jalurnya baik dan status di tengahnya tidak. Jika tidak pernah berfungsi, bahkan tepat setelah lalu lintas, ini diagnosis yang salah.

sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer

Jalankan dua perintah pertama tepat setelah peer rumah mengirim sesuatu, tunggu lima menit, dan jalankan lagi. Stempel waktu handshake yang diperbarui sesuai jadwal tanpa titik akhir baru memberi tahu Anda bahwa terowongan itu hidup. Yang berubah adalah kemampuan paket yang tidak diminta untuk datang dari luar, yang merupakan sifat jalur, bukan terowongan.

Lalu lakukan percobaan terbalik dan perhatikan penghitung transfer. Jika sisi cloud mengirim byte dan sisi rumah tidak menerima satu pun, paket meninggalkan cloud dan mati di perangkat yang menyimpan status di sepanjang jalan. Itulah tanda yang Anda cari. Jika kedua penghitung bergerak, terowongan mengantarkan paket dan aplikasinya yang dicurigai.

Letakkan keepalive pada peer di belakang router

Keepalive persisten menjaga pemetaan NAT dan status firewall apa pun tetap hidup dengan mengirim paket kecil yang diautentikasi sesuai jadwal. Pengaturan itu milik mesin di belakang router, di entrinya untuk peer jarak jauh, karena sisi itulah yang paket keluarnya membuat status.

[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25

Gabungkan ke bagian peer yang sudah ada. Menambahkan blok kedua dengan kunci publik yang sama bukan cara yang sah untuk menambahkan opsi, dan wg-quick tidak akan menggabungkannya untuk Anda. 25 detik yang didokumentasikan adalah contoh yang dipilih untuk berada di bawah batas waktu UDP umum, bukan nilai dengan makna khusus.

Menaruh direktif yang sama di sisi cloud tidak membantu masalah ini. Paket peer itu sudah datang dari alamat publik, jadi tidak ada pemetaan yang perlu dipertahankan ke arah yang penting. Itu menambah lalu lintas dan tidak mengubah apa pun.

Baca timer alih-alih menebak interval

Keepalive berfungsi karena datang lebih sering daripada statusnya kedaluwarsa. Itu menjadikan batas waktu sebagai angka yang sebenarnya Anda butuhkan, dan di Linux angka itu dapat dibaca pada perangkat yang melakukan penerjemahan:

sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820

Nilai pertama adalah batas waktu untuk aliran UDP yang hanya terlihat satu arah, dan nilai kedua berlaku setelah balasan teramati. Keduanya biasanya pendek, dan pemetaan yang diam akan mengikuti mana pun yang berlaku untuk aliran Anda.

Bandingkan angka itu dengan interval Anda. Keepalive 25 detik di bawah batas waktu 30 detik berfungsi; keepalive yang sama di bawah batas waktu 15 detik tidak berfungsi. Sebanyak apa pun percobaan ulang tidak mengubah aritmetika itu. Beberapa router konsumen dan operator seluler memakai nilai yang jauh lebih pendek daripada bawaan Linux, itulah sebabnya konfigurasi yang berfungsi di satu jaringan gagal di jaringan lain.

ObservationWhat it meansReasonable response
Works after traffic, dies when idleMapping or firewall state expiringLower the keepalive interval
Never works, even immediatelyNo return route, listener or firewallStop tuning keepalive
Works for hours, then dies onceCarrier-side translation or address changeCheck the endpoint and logs together

Periksa pendengar dan firewall secara terpisah

Pemetaan yang hidup itu perlu dan tidak cukup. Aplikasi di kotak rumah harus mendengarkan di alamat yang benar, dan firewall host harus mengizinkan paket setelah didekripsi.

sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health

Jika soket hanya terikat ke alamat antarmuka fisik dan bukan ke alamat terowongan, paket yang datang melalui terowongan dibuang sebelum firewall bahkan ditanyai. Kegagalan itu dari sisi cloud tampak identik dengan masalah pemetaan, dan bertahan dari setiap penyesuaian keepalive.

Pemeriksaan daftar yang diizinkan sama pentingnya di arah lain. Peer cloud harus mengizinkan alamat terowongan rumah sebagai sumber jika akan membalas, dan peer rumah harus mengizinkan alamat cloud sebagai tujuan. Paket keepalive adalah lalu lintas yang diautentikasi dan menerapkan aturan yang sama, karena itu keepalive yang tampak berfungsi dapat hidup berdampingan dengan aplikasi yang tidak berfungsi.

Gulirkan perubahan dan ketahui batasnya

Terapkan pengaturan, mulai ulang antarmuka jika itu metode pembaruan Anda, lalu ulangi uji menganggur alih-alih uji langsung. Tunggu lebih lama dari batas waktu yang Anda baca tadi, buat permintaan terbalik, dan pastikan penghitung bergerak di kedua ujung.

Catat interval dan batas waktu yang Anda ukur di sebelahnya. Perubahan firmware router di masa depan, atau pindah ke koneksi seluler, dapat mengubah batas waktu. Catatan itulah yang memungkinkan seseorang menurunkan ulang nilainya alih-alih menyalinnya. Dua angka dalam satu baris menghemat seluruh penyelidikan nanti.

Keepalive persisten melindungi status. Mereka tidak membuka port, tidak menambahkan entri ke daftar yang diizinkan, dan tidak membuat pendengar muncul. Ketika koneksi terbalik sama sekali tidak berfungsi, kesalahannya adalah salah satu dari ketiganya, dan panduan cepat WireGuard menjelaskan pengaturan keepalive dalam istilah sempit yang sama.

Artikel terkait