Pembantu pelayan mengkonfigurasi subnet dan kemudian mengisinya dengan kumpulan dinamik pilihan mereka sendiri. Lalai itu mudah sehingga sesetengah alamat mesti kekal di luar peruntukan — sama ada ditempah untuk penetapan tetap atau disimpan untuk segmen masa depan. Menindas kumpulan automatik dan mengisytiharkan julat sendiri memerlukan dua baris dan satu keputusan sedar tentang alamat mana yang bukan untuk peruntukan. Selebihnya ialah disiplin operasi: inventori, laksana, sahkan, gulung balik.

Ini perubahan pada perkhidmatan yang sedang berjalan, jadi anggap ia sebagai tugas operasi: inventori dahulu, laksana melalui kitaran hayat biasa, sahkan dengan klien baharu dan sediakan gulung balik.

Mulakan dengan subnet yang sudah anda miliki

Baca konfigurasi pelayan semasa dan alamat yang benar-benar dipegang oleh klien. Perubahan kumpulan hanya bermakna berbanding garis dasar itu, dan garis dasar bukan selalu seperti yang dicadangkan fail, kerana produk terurus atau penjana konfigurasi mungkin memiliki fail yang anda baca.

grep -nE '^(topology|server|ifconfig-pool|max-clients|client-config-dir)' /etc/openvpn/server/lab.conf
ip -4 addr show tun0

Sahkan topologi yang berkuat kuasa. Dalam topologi subnet setiap klien mengambil satu alamat daripada kumpulan; susun atur net30 yang lebih lama memperuntukkan blok kecil bagi setiap klien dan aritmetiknya sama sekali berbeza. Jika pelayan masih pada net30, halaman ini ialah panduan migrasi yang salah dan nombor kumpulan tidak akan bermaksud seperti yang anda jangkakan. Semak baris itu sebelum menyalin aritmetik alamat dari tempat lain.

Catat alamat pelayan itu sendiri, setiap penetapan tetap dalam direktori konfigurasi klien, dan mana-mana alamat yang menjadi asas kepada laluan atau peraturan akses. Alamat inilah yang mesti kekal di luar julat dinamik. Mencatatnya dahulu ialah yang menjadikan julat itu keputusan dan bukan tekaan. Ia juga memberi gulung balik sesuatu yang konkrit untuk dipulihkan.

Tambah nopool dan isytiharkan julat

Kata kunci pembantu menerima nopool, yang mengekalkan konfigurasi subnet dan menindas kumpulan dinamik automatik, seperti yang diterangkan oleh manual OpenVPN 2.6. Baris eksplisit ifconfig-pool kemudian memberikan julat inklusif yang dimaksudkan, dan topeng rangkaiannya sepadan dengan subnet. Kedua-dua baris tergolong dalam blok pelayan yang sama, kerana kumpulan tanpa subnetnya tidak bermakna. Susunannya hanya penting untuk kebolehbacaan, kerana pembantu mengembangkan pasangan itu apabila perkhidmatan bermula.

topology subnet
server 10.70.0.0 255.255.255.0 nopool
ifconfig-pool 10.70.0.50 10.70.0.120 255.255.255.0

Kedua-dua sempadan adalah inklusif, jadi contoh menawarkan tujuh puluh satu alamat. Kekalkan alamat pelayan dan setiap penetapan tetap di luar julat itu; penetapan tetap yang jatuh di dalam julat dinamik menghasilkan pertembungan yang bergantung pada susunan sambungan, dan itulah jenis yang paling teruk untuk dinyahpepijat. Biarkan margin antara set tempahan dan julat jika penetapan tetap mungkin bertambah.

Saiz julat dan keserentakan ialah had yang berasingan. Seratus alamat tidak bermakna seratus klien serentak jika max-clients berkata sebaliknya, dan kumpulan yang lebih besar daripada had keserentakan adalah normal dan bukan pembaziran. Yang penting ialah kedua-dua had dipilih secara sedar dan bukan diwarisi daripada lalai.

Kekalkan penetapan tetap di luar julat dinamik

Khusus klien ifconfig-push ialah mekanisme berbeza daripada peruntukan kumpulan, dan ia mesti menggunakan parameter yang sesuai dengan topologi aktif. Dalam mod subnet ia ialah satu alamat dan topeng rangkaian; membawa pasangan net30 kerana ia muncul dalam contoh lama ialah kesilapan biasa.

Sejarah peruntukan ialah petunjuk, bukan autoriti. Fail persist mengingati klien mana yang memegang alamat mana supaya klien yang menyambung semula cenderung menerima yang sama, dan ia tidak menempah alamat, tidak melepaskannya dan tidak menggantikan penetapan tetap. Jika peranti tertentu mesti sentiasa memegang alamat tertentu, gunakan penetapan tetap dan bukan bergantung pada fail persist.

Kemudian semak laluan yang bergantung pada alamat. Laluan yang ditolak kepada klien, peraturan tembok api yang membenarkan subnet, atau semakan pemantauan yang menjangkakan hos tertentu semuanya mungkin menganggap julat lama. Menukar kumpulan tanpa membacanya memindahkan kegagalan ke tempat yang kelihatan tidak berkaitan.

Laksanakan melalui kitaran hayat, kemudian sahkan

Laksanakan perubahan seperti perkhidmatan biasanya menerima konfigurasi — sama ada fail langsung dan mula semula, atau lapisan pengurusan yang menjana semula fail. Suntingan manual pada fail yang dijana bertahan sehingga penjanaan seterusnya, dan tidak lebih lama. Catat mekanisme mana yang memiliki fail itu, kerana pengendali seterusnya perlu tahu di mana untuk membuat perubahan yang sama. Kemudian mula semula sekali dan baca log sebelum menjemput klien.

systemctl restart openvpn-server@lab
journalctl -u openvpn-server@lab -n 30 --no-pager
# on a fresh client
ip -4 addr show tun0

Sambungkan klien yang belum pernah disambungkan dan sahkan alamat itu jatuh di dalam julat yang diisytiharkan dan di luar set tempahan. Kemudian sahkan laluan balik: klien harus mencapai apa yang dibenarkan oleh dasar dan tidak lebih. Alamat yang sepadan dengan pelan tetapi tiada laluan yang berfungsi bukan perubahan yang berjaya.

Sambung semula klien yang memegang alamat daripada julat lama. Ia sepatutnya menerima alamat daripada julat baharu, dan sebarang keadaan peringkat sesi yang terikat pada alamat lama sepatutnya hilang. Jika ia mengekalkan alamat lama, sesuatu yang lain memberikannya dan kumpulan itu bukan pemilik yang anda sangkakan.

Menggulung balik perubahan julat

Simpan tiga baris sebelumnya dalam rekod perubahan anda, bukan hanya fail sebelumnya. Memulihkannya dan mula semula mengembalikan peruntukan kepada tingkah laku lama, dan klien yang menyambung semula selepas itu akan menerima alamat daripadanya.

Dua amaran tergolong dalam rekod. Klien yang sudah bersambung apabila anda menggulung balik mengekalkan alamat semasa mereka sehingga mereka menyambung semula, jadi gulung balik tidak serta-merta di seluruh armada. Dan jika julat lama bertindih dengan penetapan tetap, memulihkannya memulihkan pertembungan juga; pertindihan itulah sebab perubahan dibuat, dan ia memerlukan pembetulan yang berbeza daripada gulung balik.

Perubahan kumpulan selesai apabila klien baharu menerima alamat dalam julat, alamat tempahan tidak pernah diberikan, dan laluan serta peraturan yang menggunakan alamat itu masih berkelakuan seperti yang dimaksudkan. Apa-apa yang kurang meninggalkan orang seterusnya untuk mengetahui yang mana antara ketiga-tiganya tidak benar.

Artikel berkaitan