Sebagian besar konfigurasi WireGuard yang rusak tidak salah nilai; mereka menaruh nilai yang benar di sisi yang salah. Kunci privat milik mesin ini, peer membawa kunci publik mesin lain, dan alamat duduk di blok interface meskipun menjelaskan di mana terowongan berada. Baca berkas itu sebagai dua arah yang bertemu, lalu periksa apa yang ditambahkan skrip bantu di atasnya. Protokolnya sendiri punya lebih sedikit bidang daripada berkasnya, dan bidang tambahan itu layak diketahui secara terpisah.

Kunci interface menjelaskan mesin ini

Blok interface menyimpan identitas ujung ini sendiri. PrivateKey adalah identitas itu dan tidak pernah meninggalkan host; kunci publik yang cocok diturunkan darinya dan itulah yang didaftar oleh peer lain. ListenPort adalah tempat sisi ini menerima jabat tangan, jadi dua klien di balik satu alamat memerlukan porta berbeda.

Address adalah alamat terowongan yang dijawab host ini, ditulis dengan panjang prefiks karena alamat itu juga menjadi sumber yang akan dipakainya. Salah prefiks di sini mengubah tujuan mana yang dianggap host langsung terhubung, dan itu menghasilkan kegagalan yang tampak seperti perutean, bukan konfigurasi.

Semua hal lain di [Interface] blok dengan klien nyata biasanya ditambahkan oleh wg-quick: DNS, MTU, Table, dan baris kait. Itu bukan bidang protokol, dan wg penyiapan telanjang mengabaikannya sepenuhnya.

Setiap entri peer menjelaskan satu sisi lain

Sebuah [Peer] blok adalah pihak jauh. PublicKey adalah kunci turunan pihak itu, tidak pernah kunci privatnya, dan PresharedKey adalah rahasia tambahan opsional yang harus dipegang sama oleh kedua sisi. Endpoint adalah ke mana mengirim, dan PersistentKeepalive meminta host ini mengirim paket setelah interval ketika tidak ada hal lain yang keluar.

Dua kesalahan menjelaskan sebagian besar kebingungan di sini. Menyalin kunci privat Anda ke blok peer membuat kedua ujung berbagi satu identitas, dan jabat tangan gagal dengan cara yang buruk dicatat. Membiarkan Endpoint keluar pada klien biasanya disengaja, karena server mempelajari alamat dari jabat tangan yang masuk; membiarkannya keluar pada server yang harus memulai tidak. Ingat juga bahwa keepalive menjaga pemetaan NAT tetap terbuka, dan itu tidak meningkatkan throughput atau mengurangi latensi, jadi tiga puluh detik paket tambahan tidak membeli apa pun ketika lalu lintas sudah mengalir.

AllowedIPs adalah perutean, bukan daftar izin

AllowedIPs adalah perutean kunci kripto WireGuard. Ke luar, itu memutuskan peer mana yang menerima paket berdasarkan tujuannya. Ke dalam, itu memutuskan apakah paket yang datang dari peer itu diterima berdasarkan sumbernya. Bidang yang sama melakukan kedua tugas, karena itu ini bukan daftar kendali akses dan bukan daftar situs yang diizinkan.

AllowedIPs sempit di server untuk klien berarti server hanya akan menerima paket yang mengklaim sumber itu, dan hanya mengirim tujuan itu ke klien tersebut. Lebarkan satu sisi tanpa melebarkan sisi lain, dan Anda mendapat terowongan yang naik tetapi tidak melewatkan apa pun.

Apa yang ditambahkan wg-quick di sekitar protokol

wg-quick membaca berkas yang sama dan melakukan langkah jaringan yang ditinggalkan protokol kepada sistem operasi. Itu menetapkan alamat interface, menambahkan rute yang diturunkan dari AllowedIPs, menulis pengaturan resolver, dan menjalankan perintah kait secara berurutan.

Lapisan itu menjelaskan asimetri klasik. Berkas dengan 0.0.0.0/0 dan baris DNS memberi klien rute bawaan dan resolver, dan itu sama sekali tidak melakukan apa pun pada aturan penerusan atau NAT server. Itu milik konfigurasi server sendiri, dan tidak ada berkas klien yang bisa menyediakannya.

Pegang satu pemilik untuk berkas itu. Mengeditnya dengan tangan saat SaveConfig aktif berarti editan Anda hilang saat antarmuka turun berikutnya, dan antarmuka tidak akan memberi tahu Anda bahwa itu terjadi.

Periksa keadaan yang diterapkan, bukan berkasnya

Berkas adalah niat. Keadaan yang diterapkan adalah apa yang dipegang kernel, dan keduanya menyimpang setiap kali pembantu, drop-in, atau kait mengedit sesuatu setelah aktivasi.

Baca keadaan hidup dan pengalamatan bersama-sama, lalu bandingkan keduanya dengan apa yang Anda tulis:

sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.conf

Jika daftar peer kosong, antarmuka dibuat tanpa konfigurasinya diterapkan. Jika alamat dan rute ada tetapi penghitung tetap nol, berkas termuat dan jabat tangan gagal, yang merupakan masalah kunci atau ujung dan bukan urutan bagian. Bandingkan kedua tampilan sebelum mengedit, karena celah di antaranya biasanya merupakan kesalahan sebenarnya.

Artikel terkait