Terowong penuh dalam strongSwan memerlukan 0.0.0.0/0 pada kedua-dua hujung
Terowong penuh memerlukan 0.0.0.0/0 sebagai remote_ts klien dan local_ts gerbang, serta penghantaran, NAT dan laluan balik. Semak keempat-empatnya.
Sambungan strongSwan yang berfungsi untuk satu subnet peribadi tidak akan membawa trafik internet hanya kerana seseorang menyunting satu baris. Terowong penuh ialah persetujuan antara dua hujung tentang alamat yang dilindungi child SA, dan setiap hujung menamakan hujung yang lain berbanding dirinya sendiri. Betulkan satu hujung dan salahkan hujung yang lain, maka child SA sama ada tidak naik atau naik lebih sempit daripada yang dimaksudkan. Lima pemeriksaan di bawah mengikut persetujuan itu dari klien, melalui gerbang, dan keluar ke internet.
Semak pemilih klien terlebih dahulu
Klien menerangkan apa yang ingin dilindungi di hujung jauh sebagai remote_ts, dan semua yang dihantarnya berasal dari alamatnya sendiri yang diberikan. Untuk trafik internet nilai itu mesti meliputi destinasi yang akan dicapai pengguna sebenarnya, yang dalam praktiknya bermakna seluruh ruang IPv4. Klien yang masih menyenaraikan satu subnet meminta terowong berpecah, apa pun nama profil dalam antara muka. Bahagian sumber biasanya dynamic kerana alamat diberikan semasa menyambung. Sumber tetap yang ditulis di situ rosak sebaik sahaja kumpulan alamat berubah.
children {
net {
local_ts = dynamic
remote_ts = 0.0.0.0/0
}
}
Serpihan ini bukan fail sambungan lengkap, dan ini menganggap pengesahan, identiti dan kumpulan alamat maya sudah dikonfigurasikan. Pemilih sumber klien dan alamat yang diberikan pelayan masih mesti sepadan, jika tidak child SA naik dengan skop yang tidak dijangka oleh mana-mana pihak. Muatkannya dengan swanctl --load-all dan baca output sebelum menganggap berjaya. Fail yang dihuraikan masih boleh ditolak kerana pemilih yang tidak bertindih dengan cadangan hujung yang lain.
Semak pemilih gerbang di sisinya sendiri
Gerbang membaca konsep yang sama dari arah bertentangan. Destinasi internet adalah setempat kepada gerbang, jadi local_ts-nya ialah yang lebar dan remote_ts-nya menerangkan kumpulan klien. Penyongsangan itu ialah kesilapan paling biasa dalam konfigurasi terowong penuh, dan ia bertahan semakan kerana kedua-dua baris kelihatan munasabah secara berasingan.
children {
rw {
local_ts = 0.0.0.0/0
remote_ts = 10.77.0.0/24
}
}
Menyalin serpihan klien ke fail gerbang menghasilkan pasangan pemilih yang tidak menerangkan apa-apa yang berguna, kerana kedua-dua pihak akan menuntut peranan yang sama. Panduan penghantaran strongSwan mendokumentasikan pasangan klien dan gerbang secara eksplisit, dan ia wajar dibaca di sisi fail sambungan dan bukan selepas kegagalan. Fail gerbang juga memerlukan definisi kumpulan alamat yang dirujuk remote_ts. Pemilih yang menamakan kumpulan yang tidak wujud dimuatkan tanpa aduan dan gagal semasa menyambung.
ipsec.conf lama menggunakan peranan kiri dan kanan dengan kunci berbeza, dan baris rightsubnet bukan pengganti langsung nilai swanctl. Simpan kedua-dua sintaks dalam fail berasingan dan bukannya menampal satu ke dalam yang lain. Mencampurkannya dalam satu direktori ialah cara sambungan yang berfungsi kembali senyap selepas but semula.
Semak child SA yang dirundingkan, bukan failnya
Konfigurasi yang disimpan membuktikan niat dan tidak lebih. Hujung yang lain boleh menyempitkan apa yang diminta, dan child SA sedia ada tidak diganti hanya kerana fail di bawahnya berubah. Sahkan apa yang benar-benar dipasang sebelum mengubah apa-apa yang lain.
swanctl --list-conns
swanctl --list-sas
ip xfrm policy list
Perintah pertama menunjukkan apa yang dimuatkan daemon, yang kedua menunjukkan child SA yang terbentuk, dan yang ketiga menunjukkan dasar yang akan digunakan kernel. Jika fail menyebut 0.0.0.0/0 dan senarai menunjukkan satu subnet, rundingan telah menyempitkan skop dan membaca semula fail tidak akan menjelaskannya. Hentikan child, mulakan semula, dan bandingkan ketiga-tiga output sekali lagi. Child yang kembali dengan skop sempit yang sama disempitkan oleh hujung jauh dan bukan oleh fail setempat, dan itu ialah perbualan dengan pentadbir lain dan bukan suntingan setempat.
Baca kedua-dua arah dalam senarai dasar, kerana terowong yang memasang satu arah dan bukan yang lain ialah masalah penghalaan dalam pakaian konfigurasi. Dasar ke hadapan dan ke belakang harus menamakan pasangan pemilih yang sama dalam imej cermin, dan cermin yang hilang ialah kecacatan pada daemon atau cadangan, bukan pada teks pemilih.
Semak penghantaran dan laluan balik
Pemilih membenarkan trafik masuk ke gerbang, tetapi ia tidak membuat gerbang menghalakan trafik itu lebih jauh. Penghantaran mesti diaktifkan, tembok api mesti membenarkan aliran, dan balasan mesti menemui jalan balik ke kumpulan klien. Itu tiga keperluan berasingan, dan setiap satu gagal dengan gejala berbeza. Peraturan penghantaran yang hilang berkelakuan seperti lubang hitam, manakala laluan balik yang hilang berkelakuan seperti terowong sehala.
sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1
Alamat klien peribadi biasanya memerlukan terjemahan sumber yang disengajakan sebelum boleh meninggalkan antara muka awam, manakala peruntukan yang dihalakan secara eksplisit memerlukan layanan berbeza. Jika NAT terlibat, kekalkan pengecualian yang disokong pelaksanaan supaya trafik yang perlu diperiksa dasar keselamatan tidak diterjemahkan melewatinya. Peraturan masquerade lebar yang disalin dari gerbang lain mengubah lebih banyak aliran daripada yang dimaksudkan penulisnya. Tulis peraturan hanya untuk kumpulan klien, dan tinggalkan komen mengapa ia wujud.
Pada klien, sahkan laluan yang dipasang backend dan bukan laluan yang anda andaikan. Pengurus dengan pemasangan laluan dilumpuhkan memerlukan reka bentuk penghalaan yang diselenggara secara manual, dan reka bentuk itu mesti dikemas kini setiap kali terowong berubah. Semak jadual penghalaan selepas menyambung semula, bukan hanya selepas but baharu.
Semak apa yang masih tidak diliputi terowong
Pasangan pemilih meliputi IPv4 dan tidak lebih. IPv6, DNS dan sebarang dasar peringkat aplikasi ialah keputusan berasingan yang diabaikan senyap oleh pemilih IPv4 yang lebar. Terowong yang membawa setiap paket IPv4 masih boleh membocorkan setiap carian nama.
Nyatakan laluan DNS yang dimaksudkan secara eksplisit, kerana terowong penuh yang masih menyelesaikan nama melalui penyelesai setempat membocorkan pertanyaan ke luar terowong dan merosakkan nama peribadi. Jika klien diberikan alamat IPv6, keluarga alamat itu memerlukan layanan yang sama, jika tidak hos akan memilih laluan yang tidak dilindungi terowong. Uji dengan nama yang hanya boleh dijawab pihak peribadi, dan anggap jawapan awam sebagai kebocoran.
resolvectl query intranet.example.internal
traceroute -n 1.1.1.1
Sahkan rantaian dengan dua perintah itu serta pemilih yang dirundingkan dari senarai di atas. Jika traceroute menunjukkan penghala setempat sebagai hop pertama, trafik tidak menggunakan terowong apa pun yang didakwa pemilih. Akses internet hanya lengkap apabila trafik yang dipilih diterima, dihantar dan dikembalikan melalui gerbang yang direka bentuk. Menemui 0.0.0.0/0 dalam profil ialah permulaan rantaian itu, bukan buktinya.