Satu hub OpenVPN, tiga LAN: rencana alamat dan berkas iroute
Empat prefiks terpisah, satu rute kernel per cabang, satu iroute per pemilik. Urutan kerja untuk hub tiga situs yang gagal secara senyap jika ada nama yang salah.
Tiga LAN privat dapat bertemu di satu hub tanpa ada situs yang perlu tahu isi internal situs lain, dan seluruh rancangan bertumpu pada empat keputusan konfigurasi yang singkat. Yang membuatnya berhasil bukan fitur protokol yang eksotis, melainkan rencana alamat yang tidak perlu ditebak siapa pun, ditambah rute per-klien yang memberi tahu hub cabang mana yang memiliki prefiks mana. Jika salah satu dari keduanya keliru, terowongan tetap naik, dan justru itulah yang membuat kegagalannya membingungkan.
Kerjakan langkah-langkahnya secara berurutan. Setiap langkah bergantung pada rencana dari langkah sebelumnya, dan tidak satu pun memerlukan otoritas sertifikat baru.
Mulailah dari rencana yang tidak perlu ditebak siapa pun
Tuliskan empat prefiks yang saling terpisah sebelum menyentuh berkas konfigurasi: LAN milik hub sendiri, LAN setiap cabang, dan kumpulan alamat yang diberikan kepada klien keliling. Keterpisahan itulah yang menjaga semua hal lain tetap sederhana, karena rentang yang tumpang tindih mengubah perutean menjadi teka-teki pencocokan terpanjang yang tidak dapat diperbaiki oleh konfigurasi per-klien sebanyak apa pun. Lalu pastikan mesin mana yang menjadi gateway default bagi setiap LAN, sebab router cabang yang bukan gateway LAN-nya memerlukan rute jarak jauh yang dipasang di tempat lain sepenuhnya. Terakhir, tetapkan nama terautentikasi yang mengidentifikasi setiap cabang, karena nama-nama itulah kunci yang dipakai untuk mencari berkas per-klien.
Rencana ilustratif menjauhkan kumpulan alamat dari ketiga LAN. Rencana Anda akan berbeda, dan satu-satunya aturan keras adalah tidak ada dua rentang yang tumpang tindih.
Hub LAN 172.20.0.0/24
Branch A LAN 172.21.0.0/24
Branch B LAN 172.22.0.0/24
VPN pool 10.77.0.0/24
identity branch-a owns 172.21.0.0/24
identity branch-b owns 172.22.0.0/24Beri tahu kernel hub di mana letak cabang-cabang
Hub membutuhkan dua informasi per cabang: rute kernel yang mengirim prefiks ke perangkat terowongan, dan entri iroute yang memberi tahu proses OpenVPN klien mana yang memilikinya. Rute kernel saja mengantarkan paket ke terowongan lalu berhenti di situ, karena daemon masih harus memutuskan peer mana yang seharusnya menerimanya. Entri iroute saja meninggalkan paket-paket itu di kernel tanpa rute yang bisa diikuti. Kedua baris itu harus berada dalam konfigurasi yang benar-benar dimuat daemon, dan itu layak diverifikasi sebelum men-debug hal lain.
dev tun
topology subnet
server 10.77.0.0 255.255.255.0
disable-dco
route 172.21.0.0 255.255.255.0
push "route 172.20.0.0 255.255.255.0"
client-config-dir /etc/openvpn/ccd
route 172.22.0.0 255.255.255.0Biarkan client-to-client nonaktif bila kernel yang dimaksudkan menjadi titik penegakan. Opsi itu meneruskan lalu lintas antar-peer di dalam daemon, yang memang praktis tetapi juga berarti aturan penerusan Anda tidak pernah melihat aliran tersebut. Semua pembahasan berikut mengasumsikan kernel melihat setiap paket antar-cabang.
Berikan setiap cabang rute yang dibutuhkannya
Setiap cabang memerlukan rute ke cabang lain dan ke LAN hub, dan tidak memerlukan rute untuk LAN-nya sendiri yang tersambung langsung. Dorong prefiks jarak jauh dari hub alih-alih menempelkannya ke setiap router, sehingga situs keempat nanti cukup menambah satu berkas per-klien baru, bukan mengubah empat berkas. Berkas per-klien juga memuat baris iroute, yang menjaga kepemilikan dan pengumuman tetap di satu tempat. Pastikan direktori dan berkas-berkasnya dapat dibaca sesuai model hak istimewa server, atau pencariannya gagal tanpa pesan.
# /etc/openvpn/ccd/branch-a
iroute 172.21.0.0 255.255.255.0
push "route 172.22.0.0 255.255.255.0"Situs keempat mengikuti pola yang sama: nama terautentikasi yang berbeda, prefiks yang dimiliki, rute kernel di hub, entri iroute, dan pengumuman hanya kepada situs yang diizinkan menjangkaunya.
Uji kedua arah sebelum menyatakan selesai
Aktifkan penerusan IPv4 di ketiga router, lalu pastikan firewall mengizinkan aliran yang dimaksud di kedua arah, sebab uji satu arah lebih sering lolos dengan jalur balik yang rusak daripada yang diperkirakan siapa pun. Tidak diperlukan penerjemahan alamat sumber antar-situs, dan mempertahankan alamat sumber asli itulah yang memungkinkan setiap cabang menerapkan kebijakannya sendiri pada suatu permintaan.
Uji dari host di salah satu LAN cabang ke layanan di cabang lain, lalu balik arahnya, lalu uji dari cabang ke LAN hub. Ketiga hasil itu adalah bukti yang berbeda, dan tidak satu pun menyiratkan yang lain. Jika router cabang bukan gateway default LAN-nya, pasang prefiks jarak jauh di gateway yang sebenarnya dan sertakan juga kumpulan alamat bila klien terowongan perlu memulai koneksi ke LAN tersebut.
Catat rencana, berkas per-klien, dan aturan firewall sebagai satu dokumen, karena penambahan situs berikutnya akan dinilai berdasarkan dokumen itu.
Rancangan ini tetap utuh karena setiap lapisan memiliki satu tugas: rencana menjaga prefiks tetap unik, rute kernel memindahkan paket, iroute menamai pemiliknya, dan firewall memutuskan apa yang diizinkan. Ketika ada yang rusak, daftar itu juga menjadi urutan pemeriksaannya.