Merencanakan IPv6 untuk hub WireGuard dua situs: prefiks, peer, rute
Kerjakan hub IPv6 privat untuk dua LAN: pilih prefiks, pesan alamat terowongan, lalu biarkan AllowedIPs menyatakan peer mana yang memiliki setiap subnet.
Dua LAN, satu hub WireGuard, dan rencana alamat IPv6 yang harus menjawab tiga pertanyaan terpisah: prefiks mana, alamat mana milik setiap router, dan peer mana yang memiliki subnet mana. Salah satu saja keliru menghasilkan terowongan yang melakukan jabat tangan dan tidak merutekan apa pun. Rencana di bawah ini menelusuri desain privat dua situs dalam urutan itu. Rencana ini sengaja tidak menyediakan akses internet IPv6.
Tentukan untuk apa prefiks itu
Prefiks lokal unik dari fd00::/8 adalah pilihan alami bila tujuannya adalah keterjangkauan privat antarsitus. Prefiks itu tetap stabil terlepas dari ISP mana yang melayani setiap lokasi, dan tidak diumumkan ke tabel perutean global, sehingga tidak dapat membocorkan penomoran internal Anda ke internet.
Sifat yang sama adalah batasannya. ULA tidak memberi jalur balik publik, karena tidak ada penyedia hulu yang tahu harus merutekannya ke gateway Anda. Jika persyaratannya mencakup egress internet IPv6, Anda memerlukan alokasi dari penyedia yang merutekannya kepada Anda, dan itu keputusan desain terpisah dengan ukuran prefiksnya sendiri.
Jangan berasumsi setiap penerapan membutuhkan /48. RFC 6177 menjauh dari satu ukuran wajib untuk situs ujung, dan ukuran yang tepat mengikuti jumlah jaringan yang akan Anda operasikan. Hasilkan ULA dengan prosedur RFC 4193 alih-alih mengarang prefiks yang mungkin juga dipakai organisasi lain. Tulis hasilnya ke rencana alamat sebelum perangkat apa pun dikonfigurasi, karena prefiks yang tidak dicatat siapa pun adalah prefiks yang akan dipakai ulang seseorang.
Bagi prefiks menjadi peran
Contoh di bawah memakai fd7c:2e91:4a00::/48, dan tabelnya disusun menurut tempat setiap blok ditulis, bukan menurut situs. Perlakukan nilainya sebagai contoh dan hasilkan milik Anda sebelum menerapkan apa pun.
| Where it is written | What appears there | Block used | What it establishes |
|---|---|---|---|
| Hub wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::1/128 | The hub's own tunnel identity |
| Hub wg0.conf, Site A peer | Two ranges in one AllowedIPs line | ::2/128 and :10::/64 | That A owns its tunnel address and its LAN |
| Hub wg0.conf, Site B peer | Two ranges in one AllowedIPs line | ::3/128 and :20::/64 | That B owns its tunnel address and its LAN |
| Site A wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::2/128 | A's identity as the hub sees it |
| Site B wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::3/128 | B's identity as the hub sees it |
Blok LAN adalah /64 karena SLAAC biasa mengharapkan pengenal antarmuka 64 bit. Membagi LAN menjadi blok yang lebih kecil merusak asumsi itu pada sebagian besar host, dan biaya operasionalnya tidak sepadan dengan penghematan alamat dalam rencana privat. Kedua blok LAN berasal dari tengah /48, sehingga rentang rendah tetap bebas untuk situs berikutnya.
Alamat terowongan adalah kumpulan administratif, bukan jaringan di tautan. Setiap antarmuka mendapat satu /128 darinya, jadi tidak ada host yang mengasumsikan subnet bersama di terowongan dan penemuan tetangga tidak berjalan di tempat yang tidak diperlukan. Jaga peran tetap terpisah dan catat di rencana alamat organisasi agar situs berikutnya tidak memakai ulang blok.
Beri setiap router satu alamat terowongan
Tetapkan satu /128 per router dan pertahankan kunci serta titik akhir hub yang sudah berfungsi. Tiga nilai di bawah hanya berbeda pada bagian host.
Hub: Address = fd7c:2e91:4a00:ff00::1/128
Site A: Address = fd7c:2e91:4a00:ff00::2/128
Site B: Address = fd7c:2e91:4a00:ff00::3/128
Ini /128 menjelaskan satu-satunya alamat yang ditetapkan ke antarmuka itu. Itu tidak mengatakan berapa banyak tujuan yang boleh dirutekan peer, karena keterjangkauan dinyatakan dalam AllowedIPs, bukan dalam prefiks antarmuka.
Setiap router situs juga memerlukan alamat di blok LAN-nya dan cara mendistribusikannya, biasanya iklan router untuk SLAAC. WireGuard tidak mengirim iklan itu untuk Anda, dan tidak menjembatani kedua LAN. Router situs adalah router di kedua arah.
Taruh kepemilikan subnet di AllowedIPs
Entri peer hub untuk Situs A memiliki alamat terowongan A dan LAN A, dan pasangan itu adalah seluruh pernyataan kepemilikan. Tidak ada hal lain di bagian peer itu yang perlu menjelaskan situs.
AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64
Entri peer untuk Situs B memiliki pasangan yang sesuai, dan simetri di sini lebih penting daripada keringkasan. Baca kedua baris bersama dan pembagian kepemilikan menjadi terlihat sekilas.
AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64
Ini dua bagian peer yang terpisah, bukan dua daftar yang bersaing untuk satu peer. WireGuard memakai AllowedIPs di kedua arah: ia memilih peer untuk tujuan keluar, dan menolak paket masuk yang sumbernya tidak cocok dengan rentang yang ditetapkan ke peer yang mendekripsinya. Memberikan seluruh /48 kepada kedua peer akan menonaktifkan pemeriksaan kedua itu dan mengaburkan situs mana yang memiliki blok mana. Perbedaan itulah yang membuat alamat sumber yang salah terlihat alih-alih diterima diam-diam.
Setiap situs hanya memerlukan tujuan yang terjangkau melalui peer hub-nya: Situs A mencantumkan alamat hub, alamat terowongan Situs B dan LAN B, dan Situs B mencantumkan himpunan kebalikannya. Daftar itu asimetris dengan sengaja, karena setiap router melihat sisi topologi yang berbeda. Tulis keduanya dari rencana alamat, bukan dari konfigurasi situs lain, karena begitulah rentang usang bertahan melewati penomoran ulang.
Dengan wg-quick, rentang ini juga membuat rute. Dengan systemd-networkd atau penyetelan manual, tambahkan sendiri rute yang setara; jika tidak, terowongan membawa paket yang tidak pernah dikirim kernel ke dalamnya.
Selesaikan penerusan dan uji kedua arah
Aktifkan penerusan IPv6 di hub dan di kedua router situs, dan izinkan layanan antarsitus yang diperlukan dalam kebijakan penerusan. Jaga pesan ICMPv6 Packet Too Big tetap dapat dipakai, karena membuangnya merusak penemuan MTU jalur dan menimbulkan kemacetan transfer besar yang tampak seperti kesalahan aplikasi. Hub yang meneruskan tanpa izin firewall membuang paket di antara perutean dan terowongan. Mode kegagalan itu layak diketahui, karena terowongan tetap hidup dan hanya sebagian aliran yang mati.
sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1
Uji dari host di Situs A ke host di Situs B lalu ke arah sebaliknya. Ping ke alamat terowongan hub hanya melatih lompatan pertama dan akan berhasil bahkan ketika rute LAN salah. Aliran host-ke-host itulah yang membuktikan rencananya.
Koneksi WireGuard luar dapat berjalan di atas IPv4 sementara lalu lintas dalam adalah IPv6, dan kemandirian itu berguna selama migrasi. Jika egress IPv6 global ditambahkan kemudian, tinjau ulang alokasi penyedia, pemilihan alamat sumber, dan perutean balik sebagai langkah desain baru; rencana privat di atas tetap berlaku untuk lalu lintas antarsitus.