Cara kerja IPsec berbasis rute dengan antarmuka XFRM
Antarmuka XFRM memberi IPsec berbasis rute sebuah perangkat untuk dirutekan. if_id, asosiasi keamanan di belakangnya, dan rute luar semuanya harus sejajar.
IPsec berbasis rute menyerahkan ke tabel rute sebuah keputusan yang dulu diambil pemilih kebijakan. Di Linux, bagian yang memungkinkan hal itu adalah antarmuka XFRM: perangkat virtual yang lalu lintasnya dicocokkan dengan status IPsec melalui pengenal antarmuka, bukan melalui pemilih. Membuatnya hanya butuh satu perintah dan tidak membuktikan apa pun tentang ada tidaknya terowongan. Perangkat itu adalah kait antara perutean dan kebijakan keamanan, dan kedua sisi kait tersebut harus dikonfigurasi sebelum apa pun terlindungi.
Apa perangkat itu dan apa yang bukan
Antarmuka XFRM adalah pegangan perutean. Paket yang dirutekan ke dalamnya dicocokkan dengan kebijakan XFRM yang merujuk pengenal antarmuka yang sama, dan bila kebijakan serta status ada, paket itu dienkapsulasi. Tanpa itu, antarmuka tetap ada, penghitung tidak bergerak, dan lalu lintas berakhir di tempat yang tidak berguna.
Itulah pemisahan diagnostik pertama. Rute ke dalam perangkat adalah fakta perutean, status yang terpasang adalah fakta keamanan, dan penghitung yang naik pada perangkat bukan keduanya. Saat orang berkata terowongan menyala karena antarmuka menampilkan UP, mereka sedang menjelaskan bendera tautan sebuah perangkat virtual yang tidak punya pasangan sendiri. Bendera itu berarti perangkat telah dibuat dan diaktifkan, tidak lebih.
Satu batas lagi: pengenal antarmuka bukan nama. Dua perangkat dengan nama mirip dan pengenal berbeda tidak berbagi status, dan koneksi yang dikonfigurasi dengan pengenal salah akan memasang status yang tidak akan pernah dipakai rute mana pun.
Bangun satu dengan urutan yang benar
Mulailah dari perangkat luar dan angka yang juga akan Anda masukkan ke konfigurasi daemon. Contoh memakai eth0 sebagai antarmuka luar dan 42 sebagai pengenal, alamat yang sebaiknya Anda ganti dengan milik sendiri.
Naikkan perangkat, lalu pastikan pengenal yang dicatat kernel sebelum menyentuh konfigurasi VPN:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'Sekarang konfigurasikan koneksi di strongSwan dengan pengenal yang sama, karena daemon harus memasang kebijakan dan status yang merujuknya. Atur pemilih lalu lintas lokal dan jarak jauh ke rentang yang ingin Anda rutekan, lalu rutekan rentang itu ke dalam perangkat. Konfigurasi daemon dan tabel rute harus sepakat soal pengenal dan tujuan, dan tidak ada yang menyediakan yang lain.
Jauhkan IKE dan ESP dari rute terowongan
Rute default yang mengarah ke perangkat XFRM menangkap paket terenkapsulasi sekaligus lalu lintas yang dibawanya. Hasilnya adalah lingkaran: gateway mencoba mengirim ESP-nya sendiri lewat terowongan yang seharusnya dibangun ESP.
Perbaikannya adalah rute yang lebih spesifik untuk alamat luar pasangan lewat antarmuka fisik, yang menang atas rute default karena cocok pada lebih banyak bit. Perutean berbasis tanda melakukan hal yang sama ketika beberapa terowongan berbagi satu tabel, dan strongSwan mendokumentasikan kedua pendekatan untuk penerapan berbasis rute.
Apa pun yang Anda pilih, pastikan paket luar keluar tanpa enkapsulasi. Pemeriksaan cepat adalah melakukan ping ke alamat luar pasangan setelah terowongan naik; jika gagal sementara antarmuka naik, curigai penangkapan, bukan keterjangkauan. Alasan yang sama berlaku untuk port IKE, karena lalu lintas UDP daemon sendiri tidak boleh dirutekan ke perangkat yang sedang ia coba bangun.
Periksa penghitung di dua tempat sebelum menyalahkan enkripsi
Penghitung antarmuka dan penghitung status mengukur tahap yang berbeda. Paket yang dirutekan ke perangkat menaikkan penghitung perangkat meski tidak ada status yang cocok, sedangkan penghitung status hanya bergerak untuk lalu lintas yang benar-benar dienkapsulasi.
Baca keduanya, lalu baca pandangan daemon tentang asosiasi anak:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasPenghitung perangkat naik dengan keluaran status kosong berarti perutean bekerja dan kebijakan tidak cocok, biasanya kesalahan pengenal atau pemilih. Penghitung status naik sementara sisi jauh tidak melaporkan apa pun berarti paket keluar tetapi tidak sampai atau gagal autentikasi, yang menunjuk ke jalur atau konfigurasi pasangan. Asosiasi anak yang terdaftar tanpa lalu lintas adalah masalah pemilih di salah satu ujung, bukan sandi yang rusak.
Putuskan siapa yang memasang rute
Dua pemilik untuk satu tabel rute adalah sumber flapping yang lazim. Jika daemon memasang rute secara otomatis, pengelola jaringan Anda tidak boleh ikut memasang rute default lewat perangkat yang sama, dan rute manual yang ditambahkan skrip start akan dihapus saat daemon mengonfigurasi ulang berikutnya.
Pilih satu pemilik dan tuliskan. Saat daemon memiliki rute, jauhkan skrip start dari tabel dan biarkan definisi koneksi menjelaskan pemilih lalu lintas. Saat pengelola jaringan memilikinya, nonaktifkan pemasangan otomatis dan terima bahwa daemon tidak akan memperbaiki rute yang hilang saat menyambung ulang.
Aturan penerusan dan firewall adalah keputusan terpisah di atasnya, karena gateway yang meneruskan lalu lintas host lain membutuhkan keduanya. IPsec berbasis rute membuat lalu lintas itu mudah diungkapkan dengan alat perutean biasa; itu tidak membuat lapisan kebijakan menjadi opsional.