Kami menyewa sejumlah host di pusat data publik. Pusat data tidak menawarkan VLAN pribadi; semua host menerima satu (atau lebih) alamat IPv4 / IPv6 publik. Host datang dengan CPU yang sangat modern (Haswell quad-core, 3.4GHz) dan memiliki uplink Gbit. Area berbeda (kamar? Lantai? Gedung?) Dari pusat data saling berhubungan dengan - dari apa yang bisa saya katakan - tautan Gbit atau 500Mbit. Host kami menjalankan debian wheezy. Saat ini kami menjalankan tepat di atas 10 host, dengan harapan pertumbuhan dalam waktu dekat.
Saya mencari cara untuk membuat semua host berkomunikasi satu sama lain, aman dan percaya diri. Layer 3 baik-baik saja, layer 2 ok (tapi tidak perlu). Karena saya tidak memiliki akses ke VLAN, itu harus semacam VPN.
Yang penting bagi saya:
- throughput tinggi, idealnya dekat dengan wirespeed
- desentralisasi, arsitektur bertautan - ini untuk memastikan bahwa throughput tidak diperlambat oleh elemen pusat (mis. VPN concentrator)
- Jejak CPU tidak berlebihan (mengingat suite cipher AESNI dan GCM, saya berharap ini bukan persyaratan yang konyol)
- kemudahan penggunaan operasional; tidak terlalu rumit untuk diatur; jaringan dapat tumbuh tanpa kehilangan koneksi yang ada
Kami saat ini menggunakan tinc . Itu berdetak [2] dan [4], tapi saya hanya mencapai sekitar 600Mbit / s (simpleks) dari kecepatan kabel 960Mbit / s, dan saya kehilangan satu inti sepenuhnya. Juga, tinc 1.1 - saat ini dalam pengembangan - belum multithreaded, jadi saya terjebak dengan kinerja singlecore.
IPSec tradisional keluar dari pertanyaan, karena membutuhkan elemen pusat, atau sh * tload terowongan yang harus dikonfigurasi (untuk mencapai [2]). IPsec dengan enkripsi oportunistik akan menjadi solusi, tetapi saya tidak yakin apakah itu berhasil menjadi kode produksi yang stabil.
Saya menemukan tcpcrypt hari ini. Kecuali untuk otentikasi yang hilang, sepertinya yang saya inginkan. Implementasi Userspace berbau lambat, tetapi juga semua VPN lainnya juga. Dan mereka berbicara tentang implementasi kernel. Saya belum mencobanya, dan saya tertarik bagaimana ia berperilaku kembali [1] dan [3].
Opsi apa lagi yang ada? Apa yang dilakukan orang, yang tidak menggunakan AWS?
Informasi tambahan
Saya tertarik pada GCM, berharap itu akan mengurangi jejak CPU. Lihat makalah Intel tentang topik tersebut . Ketika berbicara dengan salah satu pengembang tinc, dia menjelaskan bahwa bahkan menggunakan AESNI untuk enkripsi, HMAC (misalnya SHA-1) masih sangat mahal pada kecepatan Gbit.
Pembaruan Terakhir
IPsec dalam mode transport bekerja dengan sempurna dan melakukan apa yang saya inginkan. Setelah banyak evaluasi, saya telah memilih Openswan daripada ipsec-tools, hanya karena mendukung AES-GCM. Pada CPU Haswell saya mengukur sekitar 910-920Mbit / detik throughput simpleks dengan sekitar 8-9% beban CPU satu kworkerd
.
sumber
Jawaban:
Yang tidak Anda inginkan adalah VPN. Apa yang Anda lakukan inginkan memang IPsec, tetapi tidak dalam mode tunnel. Sebaliknya, Anda ingin IPsec dalam mode transportasi .
Dalam konfigurasi ini, setiap host berkomunikasi langsung dengan rekannya, dan hanya muatan paket dienkripsi, meninggalkan header IP di tempat. Dengan cara ini, Anda tidak perlu melakukan senam perutean apa pun agar semuanya berfungsi.
Ya, Anda memerlukan bait koneksi IPsec untuk setiap host (kecuali host Anda dikelompokkan dalam subnet, dalam hal ini Anda dapat melakukan ini melalui blok CIDR), tetapi hal itu dapat dengan mudah dihasilkan secara programatik oleh sistem manajemen konfigurasi Anda.
Anda tidak bertanya tentang detail konfigurasi, tetapi jika Anda memerlukan beberapa petunjuk (tidak ada banyak informasi padat di sana tentang mode transportasi), Anda dapat merujuk ke posting blog ini yang saya tulis baru-baru ini.
sumber
racoonctl
yang sangat mirip dengan apa yang diizinkan router komersial dalam kontrol IPSEC mereka. KAME merasa lebih direkayasa secara menyeluruh sementara OpenSWAN agak merasa disatukan.