Gunakan perangkat lunak open source strongSwan untuk segera membuat koneksi IPsec-VPN dengan Alibaba Cloud. Koneksi ini mengaitkan koneksi IPsec-VPN dengan router transit dan memungkinkan konektivitas jaringan antara VPC dan pusat data lokal (IDC).
Ikhtisar skenario
Sebuah perusahaan telah membuat VPC di wilayah China (Hangzhou) dan kini perlu menghubungkan IDC lokalnya ke VPC melalui IPsec-VPN. Berbeda dengan mengaitkan Gateway VPN secara langsung, skenario ini mengaitkan koneksi IPsec-VPN dengan router transit. Router transit, yang dikelola oleh Cloud Enterprise Network (CEN), mengelola jaringan cloud secara terpusat. Anda nantinya dapat secara fleksibel menambahkan lebih banyak VPC atau mengaktifkan komunikasi antar-wilayah.
Dalam skenario ini, IDC hanya memiliki satu alamat IP publik. Gunakan alamat IP ini untuk membuat koneksi IPsec-VPN dual-tunnel dengan Alibaba Cloud:
Perencanaan resource
Resource cloud: Blok CIDR VPC 10.0.0.0/16 di wilayah China (Hangzhou)
vSwitch 1: zona H, blok CIDR 10.0.0.0/24
vSwitch 2: zona J, blok CIDR 10.0.2.0/24
Instance ECS: dideploy di vSwitch, alamat IP 10.0.0.1 (digunakan untuk verifikasi konektivitas)
Instans CEN: digunakan untuk menampung router transit
Router transit: dibuat di wilayah China (Hangzhou), blok CIDR TR 10.10.10.0/24 (tidak boleh tumpang tindih dengan blok CIDR VPC atau IDC)
Resource lokal: blok CIDR IDC lokal 172.16.0.0/16
Perangkat strongSwan: alamat IP privat 172.16.0.1
IP egress publik: XX.XX.3.3
Algoritma enkripsi: IKEv2, AES-128-CBC, SHA-1, dan DH Group 2. Konfigurasikan parameter enkripsi yang identik di kedua ujung tunnel.
Metode perutean: Gunakan perutean berbasis tujuan. Tambahkan route statis di tabel rute router transit untuk meneruskan traffic yang ditujukan ke blok CIDR IDC ke koneksi VPN.
Prasyarat
Blok CIDR VPC tidak boleh tumpang tindih dengan blok CIDR IDC lokal.
Buat VPC dan buat satu vSwitch di masing-masing dua zona berbeda. Deploy setidaknya satu instance ECS di VPC untuk memverifikasi konektivitas.
Instans CEN dan Router Transit (TR) telah dibuat, serta kondisi berikut terpenuhi:
Aktifkan route learning dan route synchronization antara VPC dan router transit
TR telah dikonfigurasi dengan segmen alamat.
Deploy server Linux di IDC lokal Anda. Topik ini menggunakan CentOS Stream 9 sebagai contoh. Server harus memiliki satu alamat IP egress publik. Anda akan menginstal strongSwan pada server ini untuk bertindak sebagai gateway lokal.
Langkah 1: Buat customer gateway
Customer gateway mencatat alamat IP publik perangkat gateway lokal Anda di Alibaba Cloud. Dalam skenario ini, IDC hanya memiliki satu alamat IP egress publik. Buat satu customer gateway.
Buka halaman VPN Gateway. Di panel navigasi sebelah kiri, klik Customer Gateways.
Di bilah menu atas, pilih wilayah China (Hangzhou).
Klik Create Customer Gateway. Konfigurasikan pengaturan berikut:
Name: Masukkan nama untuk customer gateway, misalnya cgw-idc.
IP Address: Masukkan alamat IP egress publik IDC lokal (XX.XX.3.3).
Langkah 2: Buat koneksi IPsec-VPN
Di konsol VPN Gateway, klik IPsec Connections di panel navigasi sebelah kiri.
Klik Bind CEN. Konfigurasikan parameter dasar koneksi IPsec-VPN:
Name: Masukkan nama untuk resource, misalnya ipsec-demo.
Region: Pilih China (Hangzhou).
Gateway Type: Pilih Public.
Bind CEN: Pilih Same Account.
Associate Resource: Pilih Transit Router.
CEN Instance ID: Pilih instans CEN yang Anda buat di prasyarat.
Routing Mode: Pilih Destination Routing Mode. Nantinya, tambahkan route statis di tabel rute router transit untuk mengontrol penerusan traffic.
Effective Immediately: Pilih Yes. Start negotiations after the configuration is completed.. Alibaba Cloud memulai negosiasi dengan sisi peer.
Advanced Configuration (including route table association and route forwarding): Pilih semua opsi, termasuk Automatic Advertising, Automatically Associate with Default Route Table of Transit Router, dan Automatically Advertise System Routes to Default Route Table of Transit Router.
Konfigurasikan parameter tunnel:
Tunnel 1 (Primary):
Customer Gateways: Pilih customer gateway yang Anda buat di Langkah 1.
Pre-Shared Key: Masukkan password yang disepakati kedua pihak untuk mengautentikasi identitas saat membuat tunnel. Gunakan password kompleks. Password harus identik di kedua sisi.
Tunnel 1 (Backup):
Customer Gateways: Pilih customer gateway yang sama seperti Tunnel 1 (IDC hanya memiliki satu alamat IP egress publik dalam skenario ini).
Pre-Shared Key: Gunakan kunci yang sama seperti Tunnel 1.
Pertahankan parameter enkripsi lainnya pada nilai default. Untuk menentukan algoritma secara manual, perluas Encryption Configuration dan ubah sesuai kebutuhan.
Klik OK. Setelah berhasil dibuat, sistem akan meminta Anda untuk memublikasikan rute. Klik Cancel.
Inisialisasi koneksi IPsec-VPN memerlukan waktu sekitar 5 menit (statusnya Preparing). Anda tidak dapat mengonfigurasi rute selama periode ini. Catat alamat IP publik tunnel sisi cloud. Kemudian lanjutkan ke Langkah 3 untuk mengonfigurasi rute.
Catat alamat IP publik kedua tunnel sisi cloud. Anda memerlukan alamat ini nanti untuk mengonfigurasi strongSwan:
Kembali ke halaman daftar IPsec Connections. Temukan koneksi IPsec-VPN yang baru saja Anda buat. Di kolom Gateway IP Address, catat IPsec Address 1: dan IPsec Address 2:. Topik ini menggunakan XX.XX.1.1 dan XX.XX.2.2 sebagai contoh.
Langkah 3: Tambahkan route statis ke router transit
Karena Anda menggunakan perutean berbasis tujuan, tambahkan secara manual entri rute ke blok CIDR IDC di tabel rute router transit.
Buka konsol Cloud Enterprise Network. Klik ID instans CEN.
Di tab Transit Router, temukan router transit di wilayah China (Hangzhou). Klik ID-nya untuk membuka halaman detail.
Beralih ke tab Route Table. Tabel rute sistem akan muncul secara default.
Di tab Route Entry dari tabel rute sistem, klik Add Route Entry.
Destination CIDR: Masukkan blok CIDR IDC 172.16.0.0/16.
Blackhole Route: Pilih No.
Next Hop: Pilih koneksi instance jaringan yang sesuai dengan koneksi VPN (otomatis dibuat setelah mengaitkan koneksi IPsec-VPN dengan router transit).
Klik OK.
Setelah menambahkan rute, Anda akan melihat route statis di tabel rute: blok CIDR tujuan 172.16.0.0/16, lompatan berikutnya adalah koneksi VPN.
Rute ini meneruskan traffic yang ditujukan ke blok CIDR IDC dari router transit ke dalam tunnel IPsec. Rute di sisi VPC dikonfigurasi secara otomatis oleh fitur route synchronization router transit. Anda tidak perlu mengonfigurasinya secara manual.
Langkah 4: Konfigurasi perangkat strongSwan
Informasi produk pihak ketiga di bawah ini hanya sebagai referensi. Alibaba Cloud tidak memberikan pernyataan atau jaminan apa pun mengenai kinerja, keandalan, atau dampak potensial dari operasi yang melibatkan produk pihak ketiga.
Bagian ini menggunakan CentOS Stream 9 (64-bit) sebagai contoh untuk mengonfigurasi strongSwan. Untuk sistem operasi lain, lihat dokumentasi resmi strongSwan.
1. Izinkan kebijakan firewall
Di perangkat strongSwan, izinkan protokol ESP (nomor protokol IP 50), port UDP 500, dan port UDP 4500 dari dua alamat IPsec sisi cloud.
Contohnya, jika Anda menggunakan iptables, sesuaikan perintah berdasarkan tool firewall yang sebenarnya:
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p esp -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 500 -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 4500 -j ACCEPT2. Aktifkan IP forwarding
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sudo sysctl -p3. Instal strongSwan
sudo dnf install epel-release -y
sudo dnf install strongswan -y4. Buat antarmuka tunnel XFRM dan skrip updown
Dalam skenario dual-tunnel, buat antarmuka virtual XFRM untuk membedakan traffic tiap tunnel dan menghindari konflik kebijakan perutean kernel.
# Buat antarmuka tunnel XFRM (untuk Tunnel 1 dan Tunnel 2)
sudo ip link add xfrm1 type xfrm dev eth0 if_id 1
sudo ip link add xfrm2 type xfrm dev eth0 if_id 2
sudo ip link set xfrm1 up
sudo ip link set xfrm2 up
# Tambahkan rute multi-jalur biaya-sama (ECMP): distribusikan traffic yang ditujukan ke blok CIDR cloud ke kedua tunnel
sudo ip route add 10.0.0.0/16 nexthop dev xfrm1 weight 1 nexthop dev xfrm2 weight 1Buat skrip updown untuk secara otomatis mengatur antarmuka XFRM yang sesuai menjadi DOWN saat tunnel mati. Hal ini menyebabkan kernel Linux mengkonvergen traffic ke tunnel aktif:
sudo tee /usr/local/bin/xfrm-updown.sh > /dev/null << 'EOF'
#!/bin/bash
XFRM_IF="xfrm${PLUTO_IF_ID_IN}"
case "${PLUTO_VERB}" in
up-client)
ip link set "${XFRM_IF}" up 2>/dev/null
;;
down-client)
ip link set "${XFRM_IF}" down 2>/dev/null
;;
esac
EOF
sudo chmod +x /usr/local/bin/xfrm-updown.shUntuk membuat antarmuka dan rute XFRM tetap ada setelah reboot, tambahkan perintah pembuatan antarmuka dan rute XFRM ke skrip startup.
5. Konfigurasi strongSwan
Buat cadangan file konfigurasi asli:
mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bakBuat file konfigurasi baru:
vi /etc/strongswan/swanctl/swanctl.confTambahkan dan simpan konfigurasi berikut. Ganti alamat IP dan kunci contoh dengan nilai aktual Anda:
# Konfigurasi IPsec-VPN dual-tunnel strongSwan # Untuk: koneksi IPsec-VPN yang dikaitkan dengan router transit Alibaba Cloud + satu egress publik lokal + perutean berbasis tujuan # # Hanya parameter yang ditandai "Modify" yang perlu diubah. Pertahankan parameter lain pada nilai default. # Gunakan antarmuka XFRM (if_id) untuk memisahkan traffic kedua tunnel. Gunakan ECMP untuk load balancing. connections { # === Tunnel 1 === tunnel1 { version = 2 dpd_delay = 10s rekey_time = 86400s proposals = aes128-sha1-modp1024 local_addrs = 172.16.0.1 # IP NIC perangkat strongSwan (Modify: gunakan IP privat di lingkungan NAT; gunakan IP publik jika NIC terikat ke IP publik) local { auth = psk id = XX.XX.3.3 # IP egress publik lokal (Modify) } remote_addrs = XX.XX.1.1 # IP publik Tunnel 1 Alibaba Cloud (Modify) remote { auth = psk id = XX.XX.1.1 # IP publik Tunnel 1 Alibaba Cloud, sama dengan remote_addrs di atas (Modify) } children { tunnel1-child { local_ts = 0.0.0.0/0 remote_ts = 0.0.0.0/0 mode = tunnel esp_proposals = aes128-sha1-modp1024 dpd_action = restart start_action = start close_action = start updown = /usr/local/bin/xfrm-updown.sh if_id_in = 1 # Sesuai dengan antarmuka xfrm1 if_id_out = 1 } } if_id_in = 1 if_id_out = 1 } # === Tunnel 2 === tunnel2 { version = 2 dpd_delay = 10s rekey_time = 86400s proposals = aes128-sha1-modp1024 local_addrs = 172.16.0.1 # IP NIC perangkat strongSwan, sama seperti tunnel 1 (Modify) local { auth = psk id = XX.XX.3.3 # IP egress publik lokal, sama seperti tunnel 1 (Modify) } remote_addrs = XX.XX.2.2 # IP publik Tunnel 2 Alibaba Cloud (Modify) remote { auth = psk id = XX.XX.2.2 # IP publik Tunnel 2 Alibaba Cloud, sama dengan remote_addrs di atas (Modify) } children { tunnel2-child { local_ts = 0.0.0.0/0 remote_ts = 0.0.0.0/0 mode = tunnel esp_proposals = aes128-sha1-modp1024 dpd_action = restart start_action = start close_action = start updown = /usr/local/bin/xfrm-updown.sh if_id_in = 2 # Sesuai dengan antarmuka xfrm2 if_id_out = 2 } } if_id_in = 2 if_id_out = 2 } } secrets { ike-tunnel1 { id-1 = XX.XX.3.3 # IP egress publik lokal (Modify) id-2 = XX.XX.1.1 # IP publik Tunnel 1 Alibaba Cloud (Modify) secret = "your-psk-here" # Kunci pra-bersama untuk Tunnel 1, harus sesuai dengan Alibaba Cloud (Modify) } ike-tunnel2 { id-1 = XX.XX.3.3 # IP egress publik lokal (Modify) id-2 = XX.XX.2.2 # IP publik Tunnel 2 Alibaba Cloud (Modify) secret = "your-psk-here" # Kunci pra-bersama untuk Tunnel 2, harus sesuai dengan Alibaba Cloud (Modify) } }PentingParameter
if_id_indanif_id_outmengikat setiap tunnel ke antarmuka XFRM yang sesuai (xfrm1 atau xfrm2). Ini memastikan traffic tiap tunnel tidak saling mengganggu.Atur
local_tsdanremote_tske0.0.0.0/0. Tabel rute antarmuka XFRM menentukan traffic mana yang masuk ke tunnel. Dalam mode perutean berbasis tujuan, traffic selector sisi cloud juga0.0.0.0/0.
6. Mulai dan verifikasi status tunnel
sudo systemctl enable strongswan
sudo systemctl restart strongswan
sudo swanctl --load-all
sudo swanctl --list-sasJika kedua tunnel menampilkan ESTABLISHED dan CHILD_SA menunjukkan INSTALLED, koneksi IPsec-VPN antara perangkat strongSwan dan Alibaba Cloud berhasil dibuat.
# Contoh output yang diharapkan (sebagian konten dihilangkan)
tunnel1: #1, ESTABLISHED, IKEv2
tunnel1-child: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96
tunnel2: #2, ESTABLISHED, IKEv2
tunnel2-child: #2, reqid 2, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96Uji verifikasi
Verifikasi konektivitas
Pertama, pastikan aturan grup keamanan ECS mengizinkan traffic ICMP. Lalu login ke perangkat strongSwan dan jalankan perintah berikut untuk ping ke ECS sisi cloud:
ping 10.0.0.1Jika menerima balasan, konektivitas antara VPC dan IDC lokal berhasil.
Pertama, pastikan traffic ICMP diizinkan di perangkat strongSwan atau server internal. Lalu login ke instance ECS di VPC (10.0.0.1) dan ping alamat IP privat perangkat strongSwan:
ping 172.16.0.1Jika menerima balasan, konektivitas balik normal.
Verifikasi ketersediaan tinggi
Secara default, koneksi IPsec-VPN yang dikaitkan dengan router transit menggunakan perutean multi-jalur biaya-sama (ECMP) di kedua tunnel. Traffic diseimbangkan di antara tunnel. Jika satu tunnel gagal, traffic secara otomatis dikonvergen ke tunnel lain tanpa intervensi manual.
Jalankan ping terus-menerus dari ECS ke server IDC:
ping 172.16.0.1 -c 10000Putuskan satu tunnel: Di konsol Alibaba Cloud, ubah kunci pra-bersama untuk Tunnel 1 koneksi IPsec-VPN. Hal ini akan memutus tunnel tersebut.
Amati hasil ping: Setelah gangguan singkat, konektivitas kembali normal. Ini mengonfirmasi bahwa traffic telah dikonvergen ke Tunnel 2.
Pulihkan tunnel: Ubah kembali kunci pra-bersama Tunnel 1 ke nilai yang benar. Setelah tunnel dipulihkan, traffic kembali diseimbangkan di kedua tunnel.
Pemecahan masalah
Masalah umum dan solusinya:
Masalah | Kemungkinan penyebab | Solusi |
Konsol menampilkan kegagalan negosiasi untuk tunnel | Jaringan tidak terjangkau | Periksa apakah perangkat strongSwan dapat ping ke alamat IPsec Alibaba Cloud. Pastikan firewall IDC lokal mengizinkan port UDP 500 dan 4500. |
Ketidaksesuaian kunci pra-bersama | Verifikasi bahwa kunci pra-bersama di kedua sisi identik, termasuk huruf besar/kecil dan karakter khusus. | |
Ketidaksesuaian parameter IKE | Periksa apakah versi IKE, algoritma enkripsi, algoritma autentikasi, dan grup DH cocok di kedua sisi. | |
Tunnel terbentuk tetapi ping gagal | Rute belum dikonfigurasi | Periksa apakah tabel rute VPC berisi rute ke blok CIDR IDC (lompatan berikutnya adalah router transit). Periksa juga apakah tabel rute router transit berisi route statis ke blok CIDR IDC (lompatan berikutnya adalah koneksi VPN). Dalam mode perutean berbasis tujuan, tabel rute router transit tidak menghasilkan rute secara otomatis. Anda harus menambahkannya secara manual. |
Pembatasan grup keamanan | Periksa apakah grup keamanan ECS mengizinkan traffic ICMP dari blok CIDR IDC (172.16.0.0/16). | |
Pembatasan firewall lokal | Periksa apakah firewall IDC mengizinkan traffic dari blok CIDR VPC (10.0.0.0/16). | |
Rute tidak ada di sisi strongSwan | Pastikan IP forwarding diaktifkan di perangkat strongSwan. Pastikan juga server lain di IDC memiliki rute ke blok CIDR VPC (lompatan berikutnya adalah perangkat strongSwan). |