Secara logis, VPN harus lebih cepat daripada SSH untuk tunneling, karena:
- Ini berjalan pada UDP dan bukan TCP (jadi tidak ada TCP melalui TCP)
- Ini memiliki kompresi
Namun, hari ini saya menguji replikasi Redis atas kedua metode.
Saya menjalankan tes melalui VM AWS Irlandia, menghubungkan ke AS-Timur AWS VM.
Karena test case saya adalah replikasi Redis, inilah yang saya uji - saya menjalankan server Redis kosong, dan setelah selesai memuat, saya mengeksekusi slaveof
server lain, dan mengukur waktu antara Connecting to MASTER
dan MASTER <-> SLAVE sync: Finished with success
. Di antara, saya menggunakan
while 1; do redis-cli -p 7777 info | grep master_sync_left_bytes;sleep 1; done
Untuk mendapatkan estimasi kasar kecepatan.
SSH dimenangkan oleh pukulan panjang: ~ 11MB / s dibandingkan dengan OpenVPN ~ 2MB / s.
Apakah itu berarti bahwa semua yang saya ulangi salah, atau sudahkah saya salah mengonfigurasi pengaturan saya?
Memperbarui
Saya telah membuat beberapa tes dengan dataset yang sama, dan mendapatkan hasil ini:
- OpenVPN
- TCP:
kompresi: 15m
tanpa kompresi: 21m - UDP:
kompresi: 5m
tanpa kompresi: 6m
- TCP:
- SSH
default: 1m50s
ada kompresi: 1m30s
kompresi: 2m30s
Pembaruan2
Berikut adalah hasil iperf, dengan tes dua arah (kecuali SSH, di mana tidak ada jalur balik yang tersedia)
| method | result (Mb/s)|
|------------------+--------------|
| ssh | 91.1 / N.A |
| vpn blowfish udp | 43 / 11 |
| vpn blowfish tcp | 13 / 12 |
| vpn AES udp | 36 / 4 |
| vpn AES tcp | 12 / 5 |
Spesifikasi teknis
Saya menjalankan CentOS 6.3 (server), CentOS 6.5 (klien).
Versi OpenVPN adalah 2.3.2 (sama seperti di Ubuntu 14.10, jadi tidak ada versi berjamur)
tunneling SSH saya terlihat seperti:
ssh -f XXXX@XXXX -i XXXX -L 12345:127.0.0.1:12345 -N
File konfigurasi saya terlihat seperti:
server
port 1194
proto udp
dev tun0
topology subnet
log /var/log/openvpn.log
ca XXXX
cert XXXX
key XXXX
dh XXXX
crl-verify XXXX
cipher AES-256-CBC
server XXXX 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 10 120
comp-lzo
status /var/log/openvpn-status.log
verb 3
tun-mtu 1500
fragment 1300
persist-key
persist-tun
klien
client
remote XXXX 1194
proto udp
dev tun
log /var/log/openvpn.log
comp-lzo
cipher AES-256-CBC
ns-cert-type server
# the full paths to your server keys and certs
ca XXXX
cert XXXX
key XXXX
tun-mtu 1500 # Device MTU
fragment 1300 # Internal fragmentation
persist-key
persist-tun
nobind
sumber
Jawaban:
Berkat kasperd 's komentar , saya belajar bahwa SSH tidak menderita dari TCP-over-TCP karena hanya bergerak data paket. Saya menulis posting blog tentang hal itu, tetapi hal yang paling menarik adalah
netstat
hasilnya, membuktikan bahwa SSH memang tidak menyimpan data Layer 3,4:setelah tunneling, sebelum menghubungkan
setelah tunneling dan menghubungkan
Jadi saya akan menggunakan tunneling SSH, karena tampaknya OpenVPN saya tidak terkonfigurasi atau apa pun, hanya saja bukan alat yang tepat untuk pekerjaan itu.
sumber
Itu tergantung apa yang Anda coba capai dan apa prioritas Anda. VPN menghubungkan Anda ke jaringan dan SSH ke mesin. VPN sedikit lebih aman dengan enkapsulasi, yang tidak dilakukan SSH.
Juga, VPN memungkinkan semua lalu lintas dengan mudah melewatinya, versus SSH di mana Anda harus memaksa aplikasi.
Apakah Anda akan menggunakan AD sama sekali? Karena VPN akan membiarkan Anda melakukannya dengan lebih mudah.
Saya lebih suka SSH untuk kebutuhan cepat dan VPN untuk aplikasi penting di mana saya harus meluangkan waktu ekstra.
Tergantung pada situasinya, saya telah menggunakan SSH dalam VPN jika VPN itu dikompromikan. Dengan cara ini seseorang yang menyelidik harus melewati penerobosan SSH.
sumber