Baca konfigurasi WireGuard baris demi baris, dari Interface ke Peer
Kunci Interface milik hujung ini, kunci peer milik sebelah lagi. Baca setiap baris sebagai satu arah, kemudian sahkan apa yang wg-quick tambahkan di sekeliling protokol.
Kebanyakan konfigurasi WireGuard yang rosak tidak silap pada nilai; mereka meletakkan nilai yang betul di sebelah yang salah. Kunci peribadi milik mesin ini, peer membawa kunci awam mesin lain, dan alamat duduk dalam blok interface walaupun ia menerangkan di mana terowong tinggal. Baca fail itu sebagai dua arah yang bertemu, kemudian semak apa yang ditambah oleh skrip bantuan di atasnya. Protokol itu sendiri mempunyai lebih sedikit medan daripada fail, dan medan tambahan itu wajar diketahui secara berasingan.
Kunci interface menerangkan mesin ini
Blok interface menyimpan identiti hujung ini sendiri. PrivateKey salah satu identiti itu dan tidak pernah meninggalkan hos; kunci awam yang sepadan diterbitkan daripadanya dan itulah yang disenaraikan oleh peer lain. ListenPort ialah tempat sebelah ini menerima jabat tangan, jadi dua klien di belakang satu alamat memerlukan port berbeza.
Address ialah alamat terowong yang dijawab oleh hos ini, ditulis dengan panjang awalan kerana ia juga sumber yang akan digunakannya. Silap awalan di sini mengubah destinasi mana yang dianggap hos terus bersambung, dan itu menghasilkan kegagalan yang kelihatan seperti penghalaan, bukan konfigurasi.
Segala-galanya dalam [Interface] blok dengan klien sebenar biasanya ditambah oleh wg-quick: DNS, MTU, Table, dan baris cangkuk. Itu bukan medan protokol, dan wg persediaan kosong mengabaikannya sepenuhnya.
Setiap entri peer menerangkan satu sebelah lagi
[Peer] blok ialah pihak jauh. PublicKey ialah kunci terbitan pihak itu, tidak pernah kunci peribadi mereka, dan PresharedKey ialah rahsia tambahan pilihan yang kedua-dua belah mesti pegang sama. Endpoint ialah ke mana hendak dihantar, dan PersistentKeepalive meminta hos ini menghantar paket selepas selang apabila tiada apa-apa lain keluar.
Dua kesilapan menerangkan sebahagian besar kekeliruan di sini. Menyalin kunci peribadi anda ke dalam blok peer menjadikan kedua-dua hujung berkongsi satu identiti, dan jabat tangan gagal dengan cara yang tercatat dengan buruk. Endpoint membiarkan keluar pada klien biasanya disengajakan, kerana pelayan mempelajari alamat daripada jabat tangan yang masuk; membiarkannya keluar pada pelayan yang mesti memulakan tidak. Ingat juga bahawa keepalive mengekalkan pemetaan NAT terbuka, dan ia tidak meningkatkan daya pemprosesan atau mengurangkan kependaman, jadi tiga puluh saat paket tambahan tidak membeli apa-apa apabila trafik sudah mengalir.
AllowedIPs ialah penghalaan, bukan senarai kebenaran
AllowedIPs ialah penghalaan kunci kripto WireGuard. Ke luar, ia memutuskan peer mana menerima paket berdasarkan destinasinya. Ke dalam, ia memutuskan sama ada paket yang tiba daripada peer itu diterima berdasarkan sumbernya. Medan yang sama melakukan kedua-dua tugas, sebab itu ia bukan senarai kawalan akses dan bukan senarai laman web yang dibenarkan.
Sempit AllowedIPs pada pelayan untuk klien bermakna pelayan hanya akan menerima paket yang mendakwa sumber itu, dan hanya menghantar destinasi itu kepada klien tersebut. Luaskan satu sebelah tanpa meluaskan sebelah lagi, dan anda mendapat terowong yang naik tetapi tidak melepaskan apa-apa.
Apa yang wg-quick tambah di sekeliling protokol
wg-quick membaca fail yang sama dan melakukan langkah rangkaian yang ditinggalkan protokol kepada sistem pengendalian. Ia menetapkan alamat interface, menambah laluan yang diterbitkan daripada AllowedIPs, menulis tetapan penyelesai dan menjalankan arahan cangkuk mengikut urutan.
Lapisan itu menerangkan asimetri klasik. Fail dengan 0.0.0.0/0 dan baris DNS memberi klien laluan lalai dan penyelesai, dan ia tidak melakukan apa-apa sama sekali pada peraturan penghantaran atau NAT pelayan. Itu milik konfigurasi pelayan itu sendiri, dan tiada fail klien boleh menyediakannya.
Pegang satu pemilik untuk fail itu. Menyuntingnya dengan tangan semasa SaveConfig diaktifkan bermakna suntingan anda hilang pada kali seterusnya interface turun, dan interface tidak akan memberitahu anda bahawa ia berlaku.
Semak keadaan yang digunakan, bukan fail
Fail ialah niat. Keadaan yang digunakan ialah apa yang dipegang kernel, dan kedua-duanya menyimpang setiap kali pembantu, drop-in atau cangkuk menyunting sesuatu selepas pengaktifan.
Baca keadaan hidup dan pengalamatan bersama-sama, kemudian bandingkan kedua-duanya 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.confJika senarai peer kosong, interface dicipta tanpa konfigurasinya digunakan. Jika alamat dan laluan wujud tetapi pembilang kekal sifar, fail dimuatkan dan jabat tangan gagal, yang merupakan masalah kunci atau hujung dan bukan susunan bahagian. Bandingkan kedua-dua paparan sebelum menyunting, kerana jurang antara keduanya biasanya merupakan kerosakan sebenar.