TL; DR Artikel ini menjelaskan cara termudah untuk mengonfigurasi server VPN, yang alamat IP-nya untuk menghubungkan klien VPN berbeda dari alamat IP yang digunakan klien untuk mengakses Internet.Apakah Anda menggunakan VPN untuk melindungi privasi di Internet dan menyewa server Anda sendiri untuk ini? Apakah Anda satu-satunya klien yang terhubung ke server ini di seluruh dunia? Apakah sulit menemukan alamat IP asli Anda, menurut Anda? Dengan berlakunya paket Spring, menjadi jauh lebih mudah.
Double VPN adalah topik populer di mana ada banyak spekulasi. Seringkali istilah ini disebut teknologi yang sama sekali berbeda, tetapi hampir selalu berarti koneksi Internet dan titik keluar yang terpisah pada tingkat alamat IP. Kami akan mempertimbangkan cara termudah untuk mengonfigurasi server VPN dalam mode ini, yang tidak memerlukan konfigurasi tambahan di sisi server dan memungkinkan Anda untuk mendapatkan kecepatan maksimum dan latensi terendah.
Model Ancaman
Untuk melindungi diri Anda dari sesuatu, Anda perlu memahami model ancaman dengan jelas. Kami tidak akan membahas undang-undang baru yang mewajibkan penyedia untuk menyimpan semua lalu lintas klien, tetapi kami pasti dapat mengatakan bahwa data koneksi, yang disebut Netflow, penyimpanan cukup sederhana, dan telah berhasil dilakukan untuk waktu yang lama. Artinya, fakta menghubungkan alamat IP bersyarat
1.1.1.1
ke alamat
2.2.2.2
pada waktu tertentu dalam sehari dicatat.
Memiliki akses ke informasi semacam itu pada skala penyedia, kota atau negara, cukup dengan menetapkan siapa yang bersembunyi di balik VPN.
Untuk meningkatkan tingkat privasi saat menggunakan VPN, Anda harus memisahkan titik koneksi dan jalur akses Internet di tingkat IP. Pada gambar di atas, pengguna kami berada di belakang pagar di bawah pengawasan Irina Yarovoy. Semua koneksi yang melewati pagar, Irina ingat dengan ketat. Pengguna, sebagai warga negara yang layak, terhubung ke alamat
good.citizen.vpn
, sementara ia kembali dari alamat
super.cool.guy.vpn
. Alhasil, bagi Irina, kedua koneksi ini terlihat tidak terhubung.
Apa itu VPN ganda?
Di bawah nama "ganda" VPN, hal-hal yang berbeda sering dipahami, tetapi hampir selalu berarti node koneksi dan akses ke Internet yang berjarak geografis atau di tingkat jaringan. Kadang-kadang itu hanya trik pemasaran penyedia VPN, yang sama sekali tidak berarti apa-apa, layanan seperti itu bisa disebut "triple" dan "quadruple" VPN.
Kami akan menganalisis skema paling umum yang digunakan dalam praktik.
VPN antar server
Cara paling umum. Dalam mode ini, klien membuat koneksi VPN hanya ke server pertama. Terowongan ke yang kedua dikonfigurasi pada server pertama, dan semua lalu lintas dari klien pergi ke server kedua, dan seterusnya. Mungkin ada beberapa server perantara. Dalam hal ini, terowongan antara server dapat diinstal menggunakan protokol lain selain dari protokol yang digunakan klien terhubung, misalnya IPsec, atau tanpa enkripsi apa pun, seperti GRE atau IPIP. Dalam mode ini, semua server perantara
dapat dilihat dalam jejak rute . Tidak ada cara untuk memeriksa dengan tepat bagaimana server perantara di sisi klien terhubung, sehingga Anda hanya bisa mempercayai penyedia.
Sepanjang rute lalu lintas, MTU minimum (unit transmisi maksimum) tetap sama dengan nilai terowongan pertama, dan setiap server perantara
memiliki akses ke lalu lintas klien yang dienkripsi .

VPN melalui proxy
Juga cara yang cukup umum. Sering digunakan untuk menutupi lalu lintas VPN di bawah protokol yang berbeda, misalnya di Cina. Metode ini lebih nyaman daripada rantai proxy, karena menggunakan VPN, mudah untuk mengarahkan semua lalu lintas sistem ke terowongan. Ada juga alat untuk mencegat panggilan sistem dari program dan mengarahkan mereka ke proxy: ProxyCap, Proxifier, tetapi mereka kurang stabil karena mereka kadang-kadang kehilangan permintaan dan mereka mem-bypass proxy atau bekerja secara tidak benar pada beberapa program.
Dalam mode ini, server proxy tidak terlihat dalam jejak rute.

VPN di dalam VPN
Cara paling paranoid dan paling lambat: semua terowongan naik di sisi klien, dengan masing-masing di dalam yang lain. Metode ini membutuhkan konfigurasi rute yang licik di sisi klien dan peluncuran semua klien VPN dengan urutan yang benar. Ini buruk untuk latensi dan kinerja, tetapi server perantara tidak memiliki akses ke lalu lintas terbuka klien. Semua overhead enkapsulasi dirangkum, dan ukuran paket maksimum (MTU) yang akhirnya tersedia untuk klien berkurang tergantung pada jumlah terowongan. Server perantara tidak terlihat dalam jejak rute.

Konfigurasikan VDS
Cara termudah untuk mengatur VPN dengan titik masuk dan keluar terpisah adalah dengan menghubungkan beberapa alamat IP ke satu server virtual. Metode ini memungkinkan Anda untuk mendapatkan kecepatan maksimum dan penundaan minimum, karena sebenarnya lalu lintas dihentikan pada satu server. Di
Vdsina.ru, Anda dapat melakukannya sendiri dari panel kontrol. Sementara IPv4 berakhir di mana-mana, kami mengeluarkan alamat IP tambahan bahkan di server selama 60 rubel!
Kami akan menganalisis konfigurasi server langkah demi langkah.
Pilih server
Kami memesan VDS dengan tarif yang sesuai, di pusat data yang diperlukan. Mengingat tugas kami, kami akan memilih pusat data lebih jauh, di Belanda;)

Hubungkan alamat IP tambahan
Setelah membeli alamat IP tambahan, Anda harus mengonfigurasinya
sesuai dengan instruksi .

Untuk kejelasan, tetapkan catatan PTR ke IP. Ini adalah nama domain yang akan terlihat ketika alamat IP dikonversi kembali ke domain. Ini bisa berupa nilai apa pun, termasuk domain yang tidak ada.
Sebagai contoh, kami akan menggunakan nilai-nilai berikut:
xxx.xxx.38.220 — super.cool.guy.vpn

Dua Verifikasi IP
Penting untuk diingat bahwa alamat IP yang awalnya ditetapkan di server akan menjadi titik keluar, sehingga alamat baru akan menjadi titik masuk. Terhubung melalui SSH ke server dan periksa alamat mana yang digunakan sebagai alamat eksternal.
Untuk melakukan ini, paling mudah menggunakan layanan
ifconfig.co dari konsol. Saat meminta melalui ikal, itu mengembalikan alamat IP dari mana permintaan itu dibuat.
$ curl ifconfig.co xxx.xxx.38.220
Angka-angka terakhir menunjukkan bahwa alamat eksternal kami sangat cocok dengan titik keluar. Mari kita coba periksa operasi IP kedua yang benar sebagai titik masuk. Untuk melakukan ini, cukup gunakan fungsi proksi SOCKS yang dibangun ke dalam SSH.
Perintah dieksekusi pada klien:
ssh -D 9999 root@good.citizen.vpn
Perintah pertama mengatur sesi SSH dengan alamat good.citizen.vpn dan secara bersamaan mengaktifkan proxy SOCKS di dalam sesi ini, yang tersedia di port lokal. Yang kedua membuat permintaan HTTP normal melalui proxy ini.
Penting untuk diingat bahwa contoh kami menggunakan nama domain fiktif untuk kueri. Mereka akan ditampilkan hanya dengan resolusi PTR, dan permintaan penuh kepada mereka tidak dapat dibuat. Oleh karena itu, pada tahap ini, Anda perlu mengakses server melalui alamat IP.
Konfigurasi Server IKEv2
IPsec IKEv2 adalah protokol VPN modern yang didukung oleh hampir semua sistem operasi di luar kotak. Ini digunakan sebagai protokol default di Windows, macOS dan iOS. Namun, itu tidak memerlukan instalasi perangkat lunak pihak ketiga dan dalam kebanyakan kasus bekerja lebih cepat daripada OpenVPN. Sudah ada
artikel tentang pengaturan server IKEv2 di hub , tetapi semuanya menggambarkan penggunaan sertifikat yang ditandatangani sendiri, dan tidak nyaman karena mengharuskan Anda untuk menginstal sertifikat root di sisi klien VPN.
Kami akan menganalisis contoh konfigurasi server menggunakan sertifikat tepercaya dari Let's Encrypt. Ini memungkinkan Anda untuk tidak menginstal sertifikat root asing untuk klien, tetapi hanya mengeluarkan nama pengguna dan kata sandi.
Persiapan server
Kami akan menggunakan server berbasis Ubuntu 18.04, tetapi instruksi ini juga cocok untuk sebagian besar distribusi modern.
Kami memperbarui sistem dan menginstal paket yang diperlukan
apt update && apt upgrade apt install certbot strongswan libstrongswan-extra-plugins
Masalah sertifikat
Untuk mengeluarkan sertifikat tepercaya, Anda perlu mengarahkan domain asli ke alamat IP titik masuk. Kami tidak akan mempertimbangkan item ini secara terperinci, karena ini berada di luar cakupan artikel. Sebagai contoh, kita akan menggunakan domain fiktif
good.citizen.vpnJika Anda sudah memiliki server web di server, gunakan metode yang sesuai untuk menerbitkan sertifikat melalui certbot atau klien lain untuk Let's Encrypt. Contoh ini mengasumsikan bahwa port HTTP (80) tidak sibuk.
certbot certonly --standalone --agree-tos -d good.citizen.vpn
Menjawab pertanyaan penyihir? kami akan menerima sertifikat dan kunci yang ditandatangani
Untuk otentikasi server IKEv2, sertifikat X.509 yang sama digunakan untuk
Https Agar Strongswan dapat menggunakan sertifikat ini, sertifikat tersebut harus disalin ke folder /etc/ipsec.d.
Begini caranya sertifikat harus ditemukan:
cp /etc/letsencrypt/live/good.citizen.vpn/cert.pem /etc/ipsec.d/certs/ cp /etc/letsencrypt/live/good.citizen.vpn/privkey.pem /etc/ipsec.d/private/ cp /etc/letsencrypt/live/good.citizen.vpn/chain.pem /etc/ipsec.d/cacerts/
Karena sertifikat enkripsi mari kita sering dikeluarkan kembali, melakukannya secara manual tidak nyaman. Oleh karena itu, kami mengotomatiskan proses ini menggunakan hook untuk certbot.
Tugas skrip adalah menyalin tiga file ke folder yang diinginkan setiap kali sertifikat diperbarui, dan kemudian mengirim perintah strongswan untuk membaca kembali sertifikat.
Buat file
/etc/letsencrypt/renewal-hooks/deploy/renew-copy.sh dan buat itu bisa dieksekusi.
#!/bin/sh set -e for domain in $RENEWED_DOMAINS; do case $domain in good.citizen.vpn) daemon_cert_root=/etc/ipsec.d/ # Make sure the certificate and private key files are # never world readable, even just for an instant while # we're copying them into daemon_cert_root. umask 077 cp "$RENEWED_LINEAGE/cert.pem" "$daemon_cert_root/certs/" cp "$RENEWED_LINEAGE/chain.pem" "$daemon_cert_root/cacerts/" cp "$RENEWED_LINEAGE/privkey.pem" "$daemon_cert_root/private/" # Reread certificates /usr/sbin/ipsec reload /usr/sbin/ipsec purgecerts /usr/sbin/ipsec rereadall ;; esac done
Sekarang, setelah setiap penerbitan ulang sertifikat, skrip akan menyalin file baru ke folder Strongswan dan mengirim perintah ke daemon untuk membaca kembali sertifikat.
Setup Strongswan
Tambahkan konfigurasi /etc/ipsec.conf strongswan
config setup
Login dan kata sandi klien VPN diatur dalam file
/etc/ipsec.secretsDalam file ini Anda juga perlu menentukan nama kunci pribadi yang sebelumnya kami salin dari folder letsencrypt:
# /etc/ipsec.d/private/ : RSA privkey.pem # VPN # : EAP "" IrinaYarovaya : EAP "PleaseLoveMe123" Mizooleena : EAP "IwannaLoveToo3332"
Pada tahap ini, Anda dapat me-restart server Strongswan dan memeriksa apakah konfigurasi baru telah diaktifkan:
$ systemctl restart strongswan $ ipsec statusall Virtual IP pools (size/online/offline): 10.0.1.0/24: 254/0/0 Listening IP addresses: xxx.xxx.38.220 Connections: ikev2-mschapv2: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2: local: [CN=good.citizen.vpn] uses public key authentication ikev2-mschapv2: cert: "CN=good.citizen.vpn" ikev2-mschapv2: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear ikev2-mschapv2-apple: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2-apple: local: [good.citizen.vpn] uses public key authentication ikev2-mschapv2-apple: cert: "CN=good.citizen.vpn" ikev2-mschapv2-apple: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2-apple: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear
Anda dapat melihat bahwa konfigurasi berhasil diaktifkan dan sertifikat terhubung. Pada tahap ini, Anda sudah dapat terhubung ke server VPN, tetapi itu akan tanpa akses ke Internet. Untuk melepaskan klien di Internet, Anda harus mengaktifkan penerusan dan konfigurasi NAT.
Pengaturan NAT
Kami mengaktifkan paket penerusan:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
Nyalakan NAT. Penting untuk diingat bahwa ini hanyalah contoh konfigurasi iptables minimal. Sesuaikan sisa aturan sesuai dengan kebutuhan Anda.
ethName0 - ganti dengan nama antarmuka Anda
10.0.1.0/24 - kisaran alamat IP yang akan dikeluarkan untuk klien VPN. Kami menanyakannya di
/etc/ipsec.conf111.111.111.111 - alamat IP dari titik keluar, dalam contoh kita ini adalah alamat super.cool.guy.vpn
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o ethName0 -j SNAT --to-source 111.111.111.111
Debugging
Pada tahap konfigurasi ini, kita harus mendapatkan server yang berfungsi penuh, yang sudah dapat disambungkan oleh klien. Sebelum melanjutkan, lebih baik memverifikasi ini dengan memeriksa koneksi.
Jika ada masalah koneksi, Anda dapat menonton log secara langsung:
journalctl -f -u strongswan
Startup saat startup
Jika semuanya berhasil, Anda dapat menambahkan strongswan ke startup saat startup:
systemctl enable strongswan
Menyimpan aturan iptables
Untuk menyimpan aturan iptables setelah reboot, ada paket
iptables-persistent khusus. Penting untuk diingat bahwa itu akan menyimpan set aturan saat ini dan menambahkannya ke startup.
apt install iptables-persistent
Pengaturan pelanggan
Menyiapkan di sisi klien sangat sederhana - cukup beri tahu klien alamat server, nama pengguna dan kata sandi. Untuk macOS dan iOS, Anda dapat membuat profil konfigurasi otomatis yang cukup untuk diaktifkan dalam dua klik.
Pengaturan WindowsDalam versi baru Windows, IKEv2 dikonfigurasi dalam wizard sederhana, yang dapat diakses dari menu koneksi WiFi.

Windows tidak menetapkan rute default untuk koneksi seperti itu, jadi kami akan menginstalnya secara manual. Di properti koneksi VPN, buka properti TCP / IPv4 -> tambahan dan centang kotak "Gunakan gateway di jaringan jauh"
diklik Pengaturan MacOSMacOS mendukung IKEv2 dimulai dengan versi 10.11 (El Capitan). Koneksi dibuat melalui menu pengaturan jaringan.

Tambahkan koneksi baru. Nama koneksi adalah nama sembarang.

Untuk mengotentikasi sertifikat, Anda harus menentukan nama domain. Pada saat yang sama, di bidang "Alamat Server", Anda dapat menentukan alamat IP server, dan domain hanya dalam "Remote ID", maka resolusi DNS tidak akan dilakukan untuk koneksi, dan itu akan terjadi sedikit lebih cepat.

Nama pengguna dan kata sandi ditentukan dari file
/etc/ipsec.secrets
Pengaturan IOSKonfigurasi iOS dapat dilakukan secara manual melalui wizard, tetapi jauh lebih nyaman untuk menggunakan profil konfigurasi otomatis mobileconfig.
Penyetelan manual memiliki arti yang mirip dengan macOS desktop:
Pengaturan -> VPN -> Tambahkan Konfigurasi VPN
Profil Konfigurasi Otomatis untuk Perangkat Apple
Profil konfigurasi otomatis .mobileconfig adalah file konfigurasi XML yang dapat mengonfigurasi apa pun dari sertifikat SSL hingga koneksi VPN.
Cukup bagi pengguna untuk mengklik file, dan semua pengaturan yang diperlukan akan diinstal secara otomatis.
Contoh konfigurasi untuk terhubung ke server IKEv2 kami.
Untuk mengonfigurasi file untuk konfigurasi Anda, cukup edit beberapa parameter dalam templat ini:
AuthName - nama pengguna dari file
/etc/ipsec.secretsAuthPassword - kata sandi pengguna
/etc/ipsec.secretsRemoteAddress - domain atau alamat IP server
RemoteIdentifier - domain yang mengeluarkan sertifikat
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>IKEv2</key> <dict> <key>AuthName</key> <string>IrinaYarovaya</string> <key>AuthPassword</key> <string>PleaseLoveMe123</string> <key>RemoteAddress</key> <string>123.123.123.123</string> <key>RemoteIdentifier</key> <string>good.citizen.vpn</string> <key>AuthenticationMethod</key> <string>Certificate</string> <key>ChildSecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>DeadPeerDetectionRate</key> <string>High</string> <key>ExtendedAuthEnabled</key> <true/> <key>IKESecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>OnDemandEnabled</key> <integer>1</integer> <key>OnDemandRules</key> <array> <dict> <key>Action</key> <string>Connect</string> </dict> </array> </dict> <key>IPv4</key> <dict> <key>OverridePrimary</key> <integer>1</integer> </dict> <key>PayloadDescription</key> <string>Configures VPN settings</string> <key>PayloadDisplayName</key> <string>VPN</string> <key>PayloadIdentifier</key> <string>com.apple.vpn.managed.96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadType</key> <string>com.apple.vpn.managed</string> <key>PayloadUUID</key> <string>96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadVersion</key> <integer>1</integer> <key>UserDefinedName</key> <string>London VPN</string> <key>VPNType</key> <string>IKEv2</string> </dict> </array> <key>PayloadDisplayName</key> <string>My Super IKEv2 VPN</string> <key>PayloadIdentifier</key> <string>vpn.googd.citizen</string> <key>PayloadUUID</key> <string>F3FAD91C-019C-4A79-87A1-CF334C583339</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Penyiapan AndroidSayangnya, Android adalah satu-satunya sistem operasi populer yang masih belum memiliki dukungan bawaan untuk IKEv2. Untuk terhubung, Anda dapat menggunakan klien
Strongswan resmi
dari PlayMarket Ringkasan
Kami menunjukkan opsi pengaturan server paling sederhana dengan titik masuk dan keluar spasi. Konfigurasi ini memungkinkan Anda untuk mendapatkan kecepatan VPN maksimum, karena tidak menggunakan terowongan tambahan di antara server, terlepas dari kenyataan bahwa alamat IP titik masuk dan keluar berada pada subnet yang berbeda. Pendekatan ini memungkinkan Anda untuk bereksperimen lebih lanjut dengan menghubungkan lebih dari dua alamat IP ke server.
Protokol IKEv2 sangat cocok untuk menggunakannya pada OS desktop untuk pekerjaan sehari-hari, karena secara maksimal diintegrasikan ke dalam sistem dan, semua hal lain dianggap sama, memungkinkan Anda untuk mendapatkan kecepatan lebih daripada melalui program VPN pihak ketiga.


Berlangganan pengembang Instagram kami
