Panduan ini menjelaskan cara menyambungkan koneksi IPsec ke Transit Router untuk menghubungkan IDC lokal Anda ke VPC.
Skenario
Sebuah perusahaan memiliki VPC di wilayah China (Hangzhou) dan perlu menghubungkan IDC lokalnya ke VPC tersebut menggunakan koneksi IPsec-VPN. Alih-alih terhubung langsung ke gateway VPN, skenario ini menyambungkan koneksi IPsec ke Transit Router. Konfigurasi ini memungkinkan Anda menggunakan Cloud Enterprise Network (CEN) untuk mengelola jaringan cloud secara terpusat dan dengan mudah melakukan penskalaan guna mencakup lebih banyak VPC atau membuat koneksi lintas wilayah.
Dalam skenario ini, IDC lokal memiliki satu alamat IP publik dan membuat koneksi IPsec dual-tunnel dengan Alibaba Cloud:
Perencanaan resource
Resource cloud: VPC dengan blok CIDR 10.0.0.0/16 di wilayah China (Hangzhou).
vSwitch 1: Di zona ketersediaan H, dengan blok CIDR 10.0.0.0/24.
vSwitch 2: Di zona ketersediaan J, dengan blok CIDR 10.0.2.0/24.
Instance ECS: Dideploy di vSwitch, dengan alamat IP 10.0.0.1 (digunakan untuk menguji konektivitas).
Instans CEN: Digunakan untuk menghost Transit Router.
Transit Router: Dibuat di wilayah China (Hangzhou), dengan kolam alamat 10.10.10.0/24. Blok CIDR ini tidak boleh tumpang tindih dengan blok CIDR VPC atau IDC lokal.
Resource lokal: IDC dengan blok CIDR 172.16.0.0/16.
Perangkat strongSwan: Alamat IP pribadi 172.16.0.1.
Alamat IP publik: XX.XX.3.3.
Algoritma enkripsi: IKEv2 / AES-128-CBC / SHA-1 / DH Group 2. Kedua ujung tunnel harus menggunakan parameter enkripsi yang sama.
Metode perutean: Skenario ini menggunakan mode perutean berdasarkan tujuan. Anda menambahkan route statis ke tabel rute Transit Router untuk mengarahkan traffic yang ditujukan ke IDC lokal ke koneksi VPN.
Prasyarat
Blok CIDR VPC tidak tumpang tindih dengan blok CIDR IDC lokal.
Anda telah membuat VPC dengan dua vSwitch di zona ketersediaan berbeda. VPC tersebut berisi setidaknya satu instance ECS untuk menguji konektivitas.
Anda telah membuat instans CEN dan Transit Router, serta menyelesaikan hal-hal berikut:
Aktifkan route learning dan route propagation antara VPC dan TR.
Konfigurasikan kolam alamat untuk TR.
Anda telah mendeploy server Linux di IDC lokal Anda. Panduan ini menggunakan CentOS Stream 9 sebagai contoh. Server tersebut memiliki satu alamat IP publik tempat Anda akan menginstal strongSwan untuk bertindak sebagai gateway lokal.
Langkah 1: Buat customer gateway
Customer gateway mencatat alamat IP publik perangkat gateway lokal Anda.
Buka halaman VPN Gateways. Di panel navigasi sebelah kiri, klik Customer Gateways.
Di bilah navigasi atas, pilih wilayah China (Hangzhou).
Klik Create Customer Gateway dan konfigurasikan parameter berikut:
Name: Masukkan nama untuk customer gateway, misalnya
cgw-idc.IP Address: Masukkan alamat IP publik IDC lokal Anda, misalnya XX.XX.3.3.
Langkah 2: Buat koneksi IPsec
Di panel navigasi sebelah kiri konsol VPN Gateway, klik IPsec Connections.
Klik Bind CEN dan konfigurasikan parameter dasar untuk koneksi IPsec:
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 telah Anda buat sebagai prasyarat.
Routing Mode: Pilih Destination Routing Mode. Nanti Anda akan menambahkan route statis ke tabel rute Transit Router untuk mengontrol penerusan traffic.
Effective Immediately: Pilih Yes. Start negotiations after the configuration is completed.. Ini memungkinkan Alibaba Cloud memulai negosiasi dengan gateway 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 telah Anda buat di Langkah 1.
Pre-Shared Key: Kunci yang digunakan untuk otentikasi timbal balik selama pembentukan tunnel. Kunci ini harus identik di gateway cloud dan gateway lokal.
Tunnel 1 (Backup):
Customer Gateways: Pilih customer gateway yang sama seperti Tunnel 1 karena dalam skenario ini IDC lokal hanya memiliki satu alamat IP publik.
Pre-Shared Key: Untuk panduan ini, gunakan kunci yang sama seperti Tunnel 1.
Anda dapat mempertahankan nilai default untuk parameter lain di bagian Encryption Configuration. Untuk menentukan algoritma secara manual, buka bagian Encryption Configuration dan lakukan perubahan Anda.
Klik OK. Saat diminta untuk memublikasikan rute setelah resource dibuat, klik Cancel untuk saat ini.
Koneksi IPsec memerlukan waktu sekitar lima menit untuk diinisialisasi. Selama periode ini, statusnya adalah Preparing dan Anda tidak dapat mengonfigurasi rute. Catat alamat IP publik di sisi cloud, lalu lanjutkan ke Langkah 3 untuk mengonfigurasi rute.
Catat alamat IP publik kedua tunnel di sisi cloud. Anda akan membutuhkannya untuk mengonfigurasi strongSwan.
Kembali ke daftar IPsec Connections dan temukan koneksi yang baru saja Anda buat. Di kolom Gateway IP Address, catat nilai untuk IPsec Address 1: dan IPsec Address 2:. Panduan ini menggunakan XX.XX.1.1 dan XX.XX.2.2 sebagai contoh.
Langkah 3: Tambahkan route statis ke TR
Karena Anda menggunakan mode perutean berdasarkan tujuan, Anda harus menambahkan rute secara manual ke blok CIDR IDC lokal di tabel rute TR.
Buka Cloud Enterprise Network Console dan klik ID instans CEN Anda.
Di tab Transit Router, temukan Transit Router di wilayah China (Hangzhou) dan klik ID-nya untuk membuka halaman detail.
Beralih ke tab Route Table. Tabel rute sistem ditampilkan secara default.
Di tab Route Entry tabel rute sistem, klik Add Route Entry.
Destination CIDR: Masukkan blok CIDR IDC lokal
172.16.0.0/16.Blackhole Route: Pilih No.
Next Hop: Pilih koneksi instans jaringan yang sesuai dengan koneksi VPN Anda. Koneksi ini dibuat secara otomatis saat koneksi IPsec disambungkan ke Transit Router.
Klik OK.
Setelah rute ditambahkan, route statis muncul di tabel rute dengan tujuan
172.16.0.0/16dan lompatan berikutnya diatur ke koneksi VPN.Rute ini mengarahkan traffic yang ditujukan ke IDC lokal ke tunnel IPsec. Rute di sisi VPC dikonfigurasi secara otomatis melalui fitur route propagation TR dan tidak memerlukan konfigurasi manual.
Langkah 4: Konfigurasikan perangkat strongSwan
Informasi berikut mengenai produk pihak ketiga hanya untuk referensi. Alibaba Cloud tidak memberikan jaminan, baik tersurat maupun tersirat, mengenai kinerja dan keandalan produk pihak ketiga, atau mengenai dampak potensial dari operasi yang dijelaskan.
Langkah-langkah berikut menjelaskan cara mengonfigurasi strongSwan pada sistem operasi CentOS Stream 9 64-bit. Untuk sistem operasi lain, lihat dokumentasi resmi strongSwan.
1. Konfigurasikan aturan firewall
Di perangkat strongSwan, izinkan traffic pada protokol ESP (nomor protokol IP 50), port UDP 500, dan port UDP 4500 dari dua alamat IPsec Alibaba Cloud.
Perintah berikut untuk iptables. Sesuaikan berdasarkan tool firewall yang Anda gunakan.
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 XFRM dan skrip updown
Karena pengaturan dual-tunnel memerlukan pembedaan traffic untuk setiap tunnel, Anda perlu membuat antarmuka virtual XFRM untuk menghindari konflik kebijakan perutean kernel.
# Buat antarmuka tunnel XFRM, satu untuk setiap tunnel.
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 ECMP untuk menyeimbangkan beban traffic ke blok CIDR cloud di 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 mematikan antarmuka XFRM yang sesuai saat tunnel terganggu. Ini memungkinkan 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 perubahan ini tetap berlaku setelah reboot, tambahkan perintah antarmuka dan rute XFRM ke skrip startup.
5. Konfigurasikan 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 Alibaba Cloud yang disambungkan ke Transit Router + satu alamat IP publik lokal + mode perutean berdasarkan tujuan # # Ubah hanya parameter yang ditandai dengan "Please modify". Pertahankan nilai default untuk semua parameter lainnya. # Konfigurasi ini menggunakan antarmuka XFRM (if_id) untuk membedakan traffic setiap tunnel dan 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 # Alamat IP pribadi antarmuka jaringan server strongSwan (Please modify: Gunakan alamat IP pribadi di lingkungan NAT; gunakan alamat IP publik jika langsung ditetapkan ke NIC) local { auth = psk id = XX.XX.3.3 # Alamat IP publik gateway lokal (Please modify) } remote_addrs = XX.XX.1.1 # Alamat IP publik Tunnel 1 di Alibaba Cloud (Please modify) remote { auth = psk id = XX.XX.1.1 # Alamat IP publik Tunnel 1 di Alibaba Cloud, sama dengan remote_addrs di atas (Please 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 # Alamat IP pribadi antarmuka jaringan server strongSwan, sama seperti Tunnel 1 (Please modify) local { auth = psk id = XX.XX.3.3 # Alamat IP publik gateway lokal, sama seperti Tunnel 1 (Please modify) } remote_addrs = XX.XX.2.2 # Alamat IP publik Tunnel 2 di Alibaba Cloud (Please modify) remote { auth = psk id = XX.XX.2.2 # Alamat IP publik Tunnel 2 di Alibaba Cloud, sama dengan remote_addrs di atas (Please 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 # Alamat IP publik gateway lokal (Please modify) id-2 = XX.XX.1.1 # Alamat IP publik Tunnel 1 di Alibaba Cloud (Please modify) secret = "your-psk-here" # Kunci pra-bersama untuk Tunnel 1, harus sesuai dengan kunci di Alibaba Cloud (Please modify) } ike-tunnel2 { id-1 = XX.XX.3.3 # Alamat IP publik gateway lokal (Please modify) id-2 = XX.XX.2.2 # Alamat IP publik Tunnel 2 di Alibaba Cloud (Please modify) secret = "your-psk-here" # Kunci pra-bersama untuk Tunnel 2, harus sesuai dengan kunci di Alibaba Cloud (Please modify) } }PentingParameter
if_id_indanif_id_outmengikat setiap tunnel ke antarmuka XFRM-nya masing-masing (xfrm1 atau xfrm2), sehingga mengisolasi traffic untuk setiap tunnel.Selector traffic
local_tsdanremote_tsdiatur ke0.0.0.0/0karena tabel rute antarmuka XFRM yang menentukan traffic mana yang masuk ke tunnel. Dalam mode perutean berdasarkan tujuan, selector traffic di sisi cloud juga diatur ke0.0.0.0/0.
6. Jalankan strongSwan dan periksa status
sudo systemctl enable strongswan
sudo systemctl restart strongswan
sudo swanctl --load-all
sudo swanctl --list-sasJika status kedua tunnel adalah ESTABLISHED dan status CHILD_SA adalah INSTALLED, koneksi IPsec-VPN antara perangkat strongSwan Anda dan Alibaba Cloud telah terbentuk.
# Contoh output (beberapa detail 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 konfigurasi
Verifikasi konektivitas
Pertama, pastikan bahwa aturan security group untuk instance ECS mengizinkan traffic ICMP. Kemudian, login ke perangkat strongSwan dan jalankan perintah berikut untuk ping instance ECS:
ping 10.0.0.1Jika Anda menerima balasan, VPC dan IDC lokal telah terhubung.
Pertama, pastikan bahwa perangkat strongSwan atau server lain di jaringan internal mengizinkan traffic ICMP. Kemudian, login ke instance ECS di VPC (
10.0.0.1) dan ping alamat IP pribadi perangkat strongSwan:ping 172.16.0.1Jika Anda menerima balasan, koneksi balik juga berfungsi.
Verifikasi ketersediaan tinggi
Koneksi IPsec yang disambungkan ke Transit Router menggunakan perutean Equal-Cost Multi-Path (ECMP) secara default untuk menyeimbangkan beban traffic di kedua tunnel. Saat salah satu tunnel terganggu, traffic secara otomatis dialihkan ke tunnel lain tanpa intervensi manual.
Dari instance ECS, jalankan ping berkelanjutan ke server di IDC lokal:
ping 172.16.0.1 -c 10000Ganggu salah satu tunnel. Misalnya, di konsol Alibaba Cloud, ubah kunci pra-bersama Tunnel 1 agar tidak cocok dan mengganggu tunnel tersebut.
Amati hasil ping. Setelah gangguan singkat, koneksi akan pulih karena traffic dialihkan ke Tunnel 2.
Pulihkan tunnel tersebut. Ubah kembali kunci pra-bersama Tunnel 1 ke nilai yang benar. Setelah tunnel dipulihkan, traffic akan diseimbangkan kembali di kedua tunnel.
Pemecahan Masalah
Bagian ini menjelaskan masalah umum dan solusinya.
Gejala | Kemungkinan penyebab | Solusi |
Negosiasi tunnel gagal di konsol. | Masalah konektivitas jaringan | Periksa apakah perangkat strongSwan dapat ping ke alamat IPsec Alibaba Cloud. Verifikasi bahwa firewall di IDC lokal mengizinkan traffic pada 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. | Verifikasi bahwa tabel rute VPC memiliki rute ke CIDR lokal dengan TR sebagai next hop. Juga verifikasi bahwa tabel rute TR memiliki route statis ke CIDR lokal dengan koneksi VPN sebagai next hop. Dalam mode perutean berdasarkan tujuan, rute TR harus ditambahkan secara manual. |
Batasan security group | Verifikasi bahwa security group instance ECS mengizinkan traffic ICMP masuk dari blok CIDR IDC lokal (172.16.0.0/16). | |
Batasan firewall lokal | Periksa apakah firewall di IDC lokal mengizinkan traffic dari blok CIDR VPC (10.0.0.0/16). | |
Rute tidak ada di sisi strongSwan | Verifikasi bahwa IP forwarding diaktifkan di perangkat strongSwan. Pastikan server lain di dalam IDC lokal memiliki rute ke blok CIDR VPC dan next hop-nya untuk blok CIDR VPC adalah perangkat strongSwan. |