Kedua desain melindungi lalu lintas yang sama dengan mesin IPsec yang sama, dan keduanya berbeda pada apa yang memutuskan paket mana yang masuk terowongan. Pada koneksi berbasis kebijakan, selektor lalu lintas yang dinegosiasikan yang melakukan pekerjaan itu; pada koneksi berbasis rute, rute yang menunjuk ke antarmuka terowongan yang melakukannya. Mencampuradukkan keduanya menghasilkan utas dukungan yang lazim, tempat terowongan melaporkan dirinya terbentuk sementara aplikasi tidak mencapai apa pun. Perbedaannya paling penting ketika Anda menambah jaringan, menjalankan protokol perutean, atau men-debug jalur yang diam-diam keluar lewat pintu keluar yang salah.

Dua cara memutuskan apa yang masuk terowongan

VPN berbasis kebijakan membangun kebijakan keamanan yang cocok dengan prefiks sumber dan tujuan, lalu mengenkripsi apa pun yang cocok. Pihak lawan harus menegosiasikan selektor yang kompatibel, sehingga cakupan efektifnya akhirnya menjadi irisan dari apa yang diajukan kedua pihak. Tidak ada yang di luar irisan itu yang terlindungi, apa pun kata tabel perutean.

VPN berbasis rute membuat antarmuka yang mewakili terowongan dan membiarkan tabel perutean mengirim lalu lintas ke dalamnya. Daemon IKE tetap memasang status dan kebijakan per antarmuka, dan itulah detail yang dilewati orang ketika memutuskan bahwa rute telah menggantikan enkripsi. Kedua desain mengenkripsi dengan IPsec; hanya mekanisme pemilihannya yang berbeda.

Bacalah perbandingan di bawah sebagai kumpulan tanda kegagalan, bukan papan skor, karena tidak ada kolom yang menang dengan sendirinya.

AspectPolicy-basedRoute-based
What selects trafficNegotiated selectorsA route into the tunnel interface
Adding a networkEdit selectors on both peersAdd a route, widen the selector once
Dynamic routingAwkward to run over the tunnelRuns over the interface directly
Typical failureTunnel up, host outside the selectorTunnel up, no route or wrong source

Berbasis kebijakan: selektor adalah kontraknya

Selektor dinegosiasikan, bukan sekadar dikonfigurasi. Usulkan 10.10.0.0/16 di satu sisi dan 10.10.1.0/24 di sisi lain, lalu asosiasi akan mencakup apa yang disepakati negosiasi sementara setiap host lain tetap di luar.

Bacalah status terpasang, bukan berkas konfigurasi. Pada lawan Linux, tabel milik kernel sendiri adalah kebenaran dasar, dan tabel itu menunjukkan apa yang bertahan dari negosiasi. Kebijakan yang menyebut prefiks yang benar tanpa status yang cocok berarti asosiasi tidak pernah terbentuk. Status yang dipasangkan dengan kebijakan untuk prefiks yang salah adalah masalah sebaliknya, dan itu menghasilkan terowongan yang tampak sehat sementara satu subnet tidak mencapai apa pun.

sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas

Bandingkan kedua keluaran dengan prefiks yang Anda yakini sedang dilindungi. Perbandingan tunggal itu menyelesaikan sebagian besar laporan tentang terowongan yang berfungsi dengan server yang tak terjangkau. Perbandingan itu juga menunjukkan lawan mana yang harus diubah, karena ketidakcocokan biasanya hanya terlihat di satu arah.

Berbasis rute: antarmuka adalah kontraknya

Antarmuka XFRM memberi terowongan nama dan identitas, dan lalu lintas mencapainya karena tabel perutean mengatakan demikian. Beberapa prefiks jarak jauh lalu menjadi masalah perutean, bukan masalah selektor, dan protokol perutean dapat mengumumkannya. Itulah keuntungan sebenarnya, bukan enkripsi.

Antarmuka tidak menghapus kebutuhan akan kebijakan. Daemon memasang aturan per antarmuka yang terikat pada identitas antarmuka, sehingga paket yang datang di antarmuka yang salah tetap gagal. Alamat sumber yang tidak akan diterima lawan juga gagal, bahkan dengan rute yang sempurna. Berbasis rute berarti rute yang menentukan masuknya, bukan berarti kebijakan telah hilang.

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip route add 10.20.0.0/16 dev xfrm0
ip -s link show xfrm0
ip route get 10.20.5.10

Amati penghitung antarmuka setelah rute terpasang. Rute yang ada sementara penghitung tetap nol berarti tidak ada yang dicocokkan ke dalam terowongan, yang biasanya menunjuk pada status yang hilang, bukan rute yang hilang.

Di mana kedua desain benar-benar berbeda

Menambah jaringan adalah uji paling bersih untuk melihat model mana yang cocok bagi Anda. Desain berbasis rute menambah satu rute dan paling banyak melebarkan selektor sekali, sedangkan desain berbasis kebijakan menyunting pasangan prefiks di kedua lawan dan menegosiasikan ulang. Dua subnet stabil membuat suntingan itu sepele, dan dua puluh membuatnya menjadi proyek.

Tidak ada model yang menggantikan firewall, dan perbandingan biasanya berhenti sebelum titik ini. Selektor yang lebar atau rute yang lebar menentukan apa yang dienkripsi, bukan apa yang diizinkan.

Perilaku MTU juga berbeda dalam praktik. Enkapsulasi mengurangi muatan yang dapat dipakai, dan antarmuka berbasis rute membawa MTU-nya sendiri, sehingga menjepit MSS di kedua gerbang menghindari gejala lubang hitam, tempat balasan kecil tiba dan yang besar menghilang. Terowongan berbasis kebijakan menemui dinding yang sama dari sisi lain, karena selektor tidak mengatakan apa pun tentang ukuran paket. Tetapkan jepitannya dengan sengaja alih-alih menyalahkan lawan.

Bermigrasi tanpa kehilangan jalur balasan

Catat pasangan prefiks yang ada sebelum mengubah apa pun, lalu pindahkan satu jalur aplikasi dan awasi dari ujung ke ujung. Terowongan yang terbentuk bukan terowongan yang meneruskan, dan perbedaannya muncul di arah balasan.

Ketika kedua lawan terhubung tetapi host LAN tidak, periksa rute balasan dan alamat sumber yang akan dipakai host jauh. Host dengan dua antarmuka dapat menjawab dari antarmuka yang salah, dan tidak ada perubahan selektor yang memperbaikinya. Tangkap lalu lintas di kedua ujung sebelum menyunting algoritme.

ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns

Pertahankan jalur manajemen yang tidak bergantung pada terowongan selama Anda bekerja. Mengembalikan lebih mudah ketika akses gerbang itu sendiri tidak menumpang pada koneksi yang sedang Anda debug.

Artikel terkait