WireGuard PersistentKeepalive: kekalkan pemetaan NAT hidup
Jika sambungan songsang hanya berfungsi serta-merta selepas rakan menghantar trafik, pemetaan itu tamat tempoh. Tetapkan keepalive di belakang penghala, kemudian baca had masa sebenar.
Kotak rumah membuka terowong dan mencapai pelayan awan tanpa masalah. Pelayan awan boleh mencapai aplikasi rumah selama satu atau dua minit selepas kotak rumah terakhir menghantar sesuatu, dan kemudian berhenti. Tiada apa-apa muncul dalam log WireGuard, tiada ralat jabat tangan dilaporkan, dan memulakan semula terowong membaikinya sebentar. Corak itu ialah pemetaan yang tamat tempoh, bukan terowong rosak, dan panduan di bawah mengesahkannya sebelum apa-apa diubah.
Sahkan bahawa corak itu ialah tamat tempoh semasa melahu
Perincian yang membezakannya ialah masa. Jika sambungan songsang berfungsi serta-merta selepas rakan rumah menghantar trafik dan gagal selepas selang tenang, laluan itu baik dan keadaan di tengah tidak. Jika ia tidak pernah berfungsi, walaupun serta-merta selepas trafik, ini diagnosis yang salah.
sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer
Jalankan dua yang pertama serta-merta selepas rakan rumah menghantar sesuatu, tunggu lima minit dan jalankannya semula. Cap masa jabat tangan yang diperbaharui mengikut jadual tanpa titik akhir baharu memberitahu anda bahawa terowong itu hidup. Apa yang berubah ialah keupayaan paket yang tidak diminta untuk tiba dari luar, yang merupakan sifat laluan dan bukan terowong.
Kemudian buat percubaan songsang dan perhatikan pembilang pemindahan. Jika sisi awan menghantar bait dan sisi rumah tidak menerima satu pun, paket itu meninggalkan awan dan mati dalam peranti yang menyimpan keadaan di sepanjang laluan. Itulah tandatangan yang anda cari. Jika kedua-dua pembilang bergerak, terowong menyampaikan paket itu dan aplikasi itulah yang disyaki.
Letakkan keepalive pada rakan di belakang penghala
Keepalive berterusan mengekalkan pemetaan NAT dan sebarang keadaan tembok api hidup dengan menghantar paket kecil yang disahkan mengikut jadual. Tetapan itu milik mesin di belakang penghala, dalam entrinya untuk rakan jauh, kerana sisi itulah yang paket keluarnya mencipta keadaan.
[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25
Gabungkan ke dalam bahagian rakan sedia ada. Menambah blok kedua dengan kunci awam yang sama bukan cara yang sah untuk menambah pilihan, dan wg-quick tidak akan menggabungkannya untuk anda. 25 saat yang didokumenkan ialah contoh yang dipilih untuk berada di bawah had masa UDP biasa, bukan nilai dengan makna khas.
Meletakkan arahan yang sama di sisi awan tidak membantu masalah ini. Paket rakan itu sudah tiba dari alamat awam, jadi tiada pemetaan yang perlu dipelihara dalam arah yang penting. Ia menambah trafik dan tidak mengubah apa-apa.
Baca pemasa dan bukannya meneka selang
Keepalive berfungsi kerana ia tiba lebih kerap daripada keadaan tamat tempoh. Itu menjadikan had masa sebagai nombor yang anda benar-benar perlukan, dan pada Linux ia boleh dibaca pada peranti yang melakukan terjemahan:
sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820
Nilai pertama ialah had masa untuk aliran UDP yang hanya dilihat dalam satu arah, dan yang kedua terpakai setelah balasan diperhatikan. Kedua-duanya biasanya pendek, dan pemetaan yang senyap akan mengikut mana yang terpakai pada aliran anda.
Bandingkan nombor itu dengan selang anda. Keepalive 25 saat di bawah had masa 30 saat berfungsi; keepalive yang sama di bawah had masa 15 saat tidak berfungsi. Berapa kali pun dicuba semula, aritmetik itu tidak berubah. Sesetengah penghala pengguna dan pengendali mudah alih menggunakan nilai yang jauh lebih pendek daripada lalai Linux, sebab itulah konfigurasi yang berfungsi pada satu rangkaian gagal pada rangkaian lain.
| Observation | What it means | Reasonable response |
|---|---|---|
| Works after traffic, dies when idle | Mapping or firewall state expiring | Lower the keepalive interval |
| Never works, even immediately | No return route, listener or firewall | Stop tuning keepalive |
| Works for hours, then dies once | Carrier-side translation or address change | Check the endpoint and logs together |
Periksa pendengar dan tembok api secara berasingan
Pemetaan yang hidup adalah perlu dan tidak mencukupi. Aplikasi pada kotak rumah mesti mendengar pada alamat yang betul, dan tembok api hos mesti membenarkan paket itu selepas dinyahsulit.
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 pada alamat antara muka fizikal dan bukan pada alamat terowong, paket yang tiba melalui terowong digugurkan sebelum tembok api ditanya. Kegagalan itu dari sisi awan kelihatan sama seperti masalah pemetaan, dan ia bertahan dalam setiap pelarasan keepalive.
Pemeriksaan senarai dibenarkan juga sama pentingnya dalam arah yang lain. Rakan awan mesti membenarkan alamat terowong rumah sebagai sumber jika ia akan membalas, dan rakan rumah mesti membenarkan alamat awan sebagai destinasi. Paket keepalive ialah trafik yang disahkan dan ia menggunakan peraturan yang sama, sebab itulah keepalive yang kelihatan berfungsi boleh wujud bersama aplikasi yang tidak berfungsi.
Gulung perubahan dan ketahui hadnya
Terapkan tetapan itu, mulakan semula antara muka jika itu kaedah kemas kini anda, dan kemudian ulangi ujian melahu dan bukan ujian segera. Tunggu lebih lama daripada had masa yang anda baca tadi, buat permintaan songsang dan sahkan bahawa pembilang bergerak di kedua-dua hujung.
Catat selang dan had masa yang anda ukur di sebelahnya. Perubahan masa depan pada perisian tegar penghala, atau peralihan ke sambungan mudah alih, boleh mengubah had masa. Nota itulah yang membolehkan seseorang memperoleh semula nilai itu dan bukannya menyalinnya. Dua nombor pada satu baris menjimatkan seluruh penyiasatan kemudian.
Keepalive berterusan melindungi keadaan. Ia tidak membuka port, tidak menambah entri pada senarai dibenarkan, dan tidak menyebabkan pendengar muncul. Apabila sambungan songsang langsung tidak berfungsi, kesalahannya ialah salah satu daripada tiga itu, dan panduan pantas WireGuard menerangkan tetapan keepalive dalam istilah sempit yang sama.