Kumpulan alamat VPN dual-stack: menangani kedua-dua famili dalam strongSwan
Kumpulan alamat IPv4 dan IPv6 dalaman, prefiks terlindung dan famili tunnel luar ialah tiga keputusan berasingan. Rancang setiap satu sebelum menyebutnya dual stack.
Get laluan boleh memberikan alamat maya IPv4 dan IPv6 sekali gus kepada pengguna kembara, sementara tunnel luar masih melalui IPv4. Itu keputusan bebas, dan memperlakukannya sebagai satu ialah titik rancangan dual-stack biasanya runtuh. Famili dalaman klien, prefiks terlindung yang boleh dicapainya, dan pengangkutan yang membawa enkapsulasi ialah tiga pilihan berasingan.
Sebahagian besar kekeliruan datang daripada menggunakan perkataan dual stack pada reka bentuk yang dual stack di satu tempat sahaja. Perkhidmatan boleh dual stack di dalam, single stack pada alamat luarnya, dan masih berfungsi dengan sangat baik untuk klien. Apa yang tidak boleh ialah berfungsi secara kebetulan.
Dua famili di dalam, satu laluan di luar
Sambungan luar ialah IKE di atas UDP, dan ia memerlukan satu famili alamat yang boleh dicapai dari mana-mana klien berada. Alamat IPv6 dalaman tidak memerlukan penyedia yang menyokong IPv6, kerana paket dalaman ialah muatan di dalam paket luaran. Banyak penggunaan yang berfungsi mengangkut prefiks IPv6 melalui pautan naik yang hanya IPv4.
Apa yang benar-benar dihadkan oleh laluan luar ialah kebolehdapatan dan lintasan NAT. Jika get laluan hanya mengumumkan alamat IPv4, klien pada rangkaian yang hanya IPv6 tidak boleh bersambung langsung, berapa banyak kumpulan alamat yang anda konfigurasikan. Tentukan famili luar berdasarkan populasi klien anda, bukan berdasarkan pelan alamat dalaman.
Berikan klien alamat dalam setiap famili
Meminta kedua-dua famili ialah satu baris penyataan di sebelah klien, asalkan get laluan mempunyai sesuatu untuk diagihkan. Kumpulan alamat bernama mengekalkan sumber berasingan daripada rangkaian perkhidmatan, dan sifat inilah yang menjadikan peraturan firewall boleh dibaca enam bulan kemudian.
pools {
pool4 { addrs = 10.90.0.0/24 }
pool6 { addrs = fd42:90::/64 }
}
connections {
private-access {
version = 2
pools = pool4, pool6
local { auth = pubkey certs = gateway.pem id = vpn.example.com }
remote { auth = pubkey cacerts = ca.pem vips = 0.0.0.0, :: }
children {
private { local_ts = 10.60.0.0/16, fd42:60::/48 remote_ts = dynamic }
}
}
}
Nilai vips meminta satu alamat daripada setiap famili, dan senarai kumpulan alamat menentukan dari mana alamat itu datang. Dokumentasi strongSwan tentang IP maya merangkumi berbilang permintaan dan peruntukan kumpulan alamat, termasuk perkara bahawa klien yang meminta alamat tertentu hanya menyatakan keutamaan yang boleh diatasi oleh penjawab. Jangan bina peraturan akses yang menganggap klien sentiasa menerima nilai yang sama.
Jana prefiks setempat unik anda sendiri dan bukan menyalin contoh. Dua organisasi yang kedua-duanya fd42::/16 melaksanakannya akan menemui pertembungan pada kali pertama mereka saling bersambung, dan mendiagnosisnya tidak menyenangkan.
Pemilih menerangkan destinasi, bukan sumber
Pemilih trafik setempat SA anak menyatakan rangkaian terlindung mana yang berada di belakang get laluan, dan pemilih jauh menerangkan apa yang boleh digunakan oleh klien sebagai sumber. Alamat kumpulan alamat maya tergolong pada bahagian sumber dasar itu; meletakkannya dalam senarai destinasi ialah salah baca konfigurasi yang lazim.
Kedua-dua famili memerlukan laluan balik dan penghantaran yang dibenarkan pada get laluan. Menambah prefiks pada pemilih tanpa laluan balik ke kumpulan alamat menghasilkan tunnel yang terbentuk, melepaskan satu arah trafik dan menggugurkan balasan secara senyap. Pemilih ialah dasar, bukan penghalaan.
Simpan kumpulan alamat dan prefiks perkhidmatan dalam blok berasingan pelan alamat anda. Apabila ia bertindih, laluan yang sepatutnya sampai ke hos terlindung boleh sepadan dengan alamat kumpulan alamat dan hilang ke dalam tunnel.
DNS dan laluan balasan menentukan sama ada ia terasa siap
Jawapan penyelesai tidak bergantung pada pengangkutan yang digunakan untuk mencapainya. Nama boleh memulangkan rekod A, rekod AAAA atau kedua-duanya, dan klien memilih mengikut peraturan keutamaannya sendiri. Jika perkhidmatan dalaman menerbitkan rekod AAAA tetapi tiada apa-apa menghalakan prefiks itu, klien pada rangkaian dual-stack akan mencuba laluan IPv6 dahulu dan kekal di situ sehingga ia gagal. Tiada apa-apa dalam konfigurasi tunnel kelihatan salah semasa itu berlaku.
Jadi tentukan bagi setiap nama famili mana yang patut boleh digunakan, kemudian semak bahawa prefiks yang berkaitan ada dalam pemilih dan mempunyai laluan balik. Itu keputusan setiap perkhidmatan. Menerbitkan kedua-dua jenis rekod secara menyeluruh ialah cara perkhidmatan yang berfungsi hanya IPv4 mula tamat masa bagi separuh penggunanya.
Sahkan kedua-dua famili sebelum menyatakannya siap
Konfigurasi yang dimuatkan bukan konfigurasi yang berfungsi. Baca keadaan yang dilaporkan daemon, sahkan peruntukan kumpulan alamat, kemudian lihat laluan yang benar-benar dipasang oleh klien.
swanctl --list-sas
swanctl --list-pools
ip -6 addr show scope global
ip -6 route get fd42:60::10
Dua arahan pertama menunjukkan SA anak yang terbentuk dan kumpulan alamat mana yang masih mempunyai alamat tersedia, jadi rancangan yang berjaya untuk klien pertama dan gagal pada yang kesepuluh menjadi kelihatan. Dua yang terakhir menunjukkan sama ada klien menerima alamat IPv6 global daripada kumpulan alamat dan ke mana trafik ke prefiks terlindung sebenarnya akan pergi. Bandingkan alamat yang diberikan dengan kumpulan alamat yang anda konfigurasikan, bukan dengan alamat yang anda harapkan. Jika penjawab memilih nilai lain mengikut dasarnya, laluan dan peraturan firewall masih mesti sepadan dengan pilihannya.
Kemudian uji satu hos terlindung bagi setiap famili, dan uji nama yang menyelesaikan kepada kedua-duanya. Ujian satu famili tidak memberitahu apa-apa tentang separuh rancangan yang belum anda latih, dan di situlah biasanya laluan yang hilang berada.