Merancang IPv6 untuk hab WireGuard dua tapak: awalan, rakan, laluan
Usahakan hab IPv6 peribadi untuk dua LAN: pilih awalan, tempah alamat terowong, kemudian biarkan AllowedIPs menyatakan rakan mana yang memiliki setiap subrangkaian.
Dua LAN, satu hab WireGuard dan pelan alamat IPv6 yang mesti menjawab tiga soalan berasingan: awalan mana, alamat mana milik setiap penghala, dan rakan mana yang memiliki subrangkaian mana. Kesilapan pada salah satunya menghasilkan terowong yang berjabat tangan dan tidak menghala apa-apa. Pelan di bawah melalui reka bentuk peribadi dua tapak dalam urutan itu. Ia sengaja tidak menyediakan akses internet IPv6.
Tentukan untuk apa awalan itu
Awalan setempat unik daripada fd00::/8 ialah pilihan semula jadi apabila tujuannya ialah ketersampaian peribadi antara tapak. Ia kekal stabil tanpa mengira ISP mana yang melayani setiap lokasi, dan ia tidak diiklankan dalam jadual penghalaan global, jadi ia tidak boleh membocorkan penomboran dalaman anda ke internet.
Sifat yang sama ialah hadnya. ULA tidak memberikan laluan balik awam, kerana tiada penyedia huluan tahu untuk menghalakannya ke get laluan anda. Jika keperluan merangkumi keluar internet IPv6, anda memerlukan peruntukan daripada penyedia yang menghalakannya kepada anda, dan itu keputusan reka bentuk berasingan dengan saiz awalannya sendiri.
Jangan andaikan setiap penggunaan memerlukan /48. RFC 6177 telah beralih daripada satu saiz tapak akhir yang wajib, dan saiz yang betul bergantung pada bilangan rangkaian yang akan anda kendalikan. Jana ULA dengan prosedur RFC 4193 daripada mencipta awalan yang mungkin juga digunakan oleh organisasi lain. Tulis hasilnya dalam pelan alamat sebelum mana-mana peranti dikonfigurasikan, kerana awalan yang tiada siapa merekodkan ialah awalan yang seseorang akan guna semula.
Bahagikan awalan kepada peranan
Contoh di bawah menggunakan fd7c:2e91:4a00::/48, dan jadual itu disusun mengikut tempat setiap blok ditulis, bukan mengikut tapak. Anggap nilainya sebagai contoh dan jana milik anda sebelum menggunakan apa-apa.
| 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 ialah /64 kerana SLAAC biasa menjangkakan pengecam antara muka 64-bit. Membahagikan LAN kepada blok lebih kecil memecahkan andaian itu pada kebanyakan hos, dan kos operasi tidak berbaloi dengan penjimatan alamat dalam pelan peribadi. Kedua-dua blok LAN datang dari tengah /48, meninggalkan julat rendah bebas untuk tapak kemudian.
Alamat terowong ialah simpanan pentadbiran, bukan rangkaian di pautan. Setiap antara muka mendapat satu /128 daripadanya, jadi tiada hos menganggap subrangkaian dikongsi pada terowong dan penemuan jiran tidak berjalan di tempat yang tidak perlu. Kekalkan peranan berasingan dan rekodkannya dalam pelan alamat organisasi supaya tapak kemudian tidak menggunakan semula blok.
Beri setiap penghala satu alamat terowong
Peruntukkan satu /128 bagi setiap penghala dan kekalkan kunci serta titik akhir sedia ada hab yang berfungsi. Tiga nilai di bawah hanya berbeza pada bahagian hos.
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 menerangkan satu-satunya alamat yang diperuntukkan kepada antara muka itu. Ia tidak menyatakan berapa banyak destinasi rakan boleh halakan, kerana ketersampaian dinyatakan dalam AllowedIPs dan bukan dalam awalan antara muka.
Setiap penghala tapak juga memerlukan alamat dalam blok LAN-nya dan cara mengagihkannya, biasanya iklan penghala untuk SLAAC. WireGuard tidak menghantar iklan itu untuk anda dan ia tidak menjambatani kedua-dua LAN. Penghala tapak ialah penghala dalam kedua-dua arah.
Letakkan pemilikan subrangkaian dalam AllowedIPs
Entri rakan hab untuk Tapak A memiliki alamat terowong A dan LAN A, dan pasangan itu ialah keseluruhan pernyataan pemilikan. Tiada apa-apa lagi dalam bahagian rakan itu perlu menerangkan tapak.
AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64
Entri rakan untuk Tapak B memiliki pasangan yang sepadan, dan simetri di sini lebih penting daripada keringkasan. Baca kedua-dua baris bersama-sama dan pembahagian pemilikan menjadi kelihatan sekali pandang.
AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64
Ini dua bahagian rakan yang berasingan, bukan dua senarai yang bersaing untuk satu rakan. WireGuard menggunakan AllowedIPs dalam kedua-dua arah: ia memilih rakan untuk destinasi keluar, dan ia menolak paket masuk yang sumbernya tidak sepadan dengan julat yang diperuntukkan kepada rakan yang menyahsulitnya. Memberi seluruh /48 kepada kedua-dua rakan akan mematikan pemeriksaan kedua itu dan mengaburkan tapak mana yang memiliki blok mana. Perbezaan itulah yang menjadikan alamat sumber yang salah kelihatan dan bukannya diterima secara senyap.
Setiap tapak hanya memerlukan destinasi yang boleh dicapai melalui rakan habnya: Tapak A menyenaraikan alamat hab, alamat terowong Tapak B dan LAN B, dan Tapak B menyenaraikan set bertentangan. Senarai itu tidak simetri dengan sengaja, kerana setiap penghala melihat sisi topologi yang berbeza. Tulis kedua-duanya daripada pelan alamat dan bukan daripada konfigurasi tapak lain, kerana begitulah julat lapuk bertahan melalui penomboran semula.
Dengan wg-quick, julat ini juga mencipta laluan. Dengan systemd-networkd atau persediaan manual, tambah laluan setara sendiri; jika tidak terowong membawa paket yang kernel tidak pernah hantar ke dalamnya.
Lengkapkan penghantaran dan uji kedua-dua arah
Dayakan penghantaran IPv6 pada hab dan pada kedua-dua penghala tapak, dan benarkan perkhidmatan antara tapak yang diperlukan dalam dasar penghantaran. Kekalkan mesej ICMPv6 Packet Too Big boleh digunakan, kerana menggugurkannya memecahkan penemuan MTU laluan dan menghasilkan tersekatnya pemindahan besar yang kelihatan seperti kerosakan aplikasi. Hab yang menghantar tanpa kebenaran tembok api menggugurkan paket antara penghalaan dan terowong. Mod kegagalan ini wajar diketahui, kerana terowong kekal aktif dan hanya sebahagian aliran mati.
sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1
Uji daripada hos di Tapak A ke hos di Tapak B dan kemudian ke arah bertentangan. Ping ke alamat terowong hab hanya melatih lonjakan pertama dan akan lulus walaupun laluan LAN salah. Aliran hos-ke-hos itulah yang membuktikan pelan.
Sambungan WireGuard luar boleh berjalan melalui IPv4 sementara trafik dalaman ialah IPv6, dan kebebasan itu berguna semasa migrasi. Jika keluar IPv6 global ditambah kemudian, semak semula peruntukan penyedia, pemilihan alamat sumber dan penghalaan balik sebagai langkah reka bentuk baharu; pelan peribadi di atas kekal sah untuk trafik antara tapak.