Terapkan strongSwan pada perangkat Linux di pusat data lokal untuk membuat koneksi IPsec-VPN dual-tunnel dengan Alibaba Cloud VPN Gateway guna mendukung komunikasi situs-ke-situs berbasis ketersediaan tinggi.
strongSwan adalah solusi VPN open-source berbasis IPsec yang berjalan pada distribusi Linux utama. Solusi ini mendukung negosiasi IKEv1/IKEv2, pemilih traffic berbasis rute maupun kebijakan (policy-based), serta perutean dinamis BGP melalui antarmuka virtual XFRM, menjadikannya pilihan fleksibel untuk menghubungkan jaringan lokal ke Alibaba Cloud.
Contoh dalam topik ini menggunakan mode dual-tunnel bawaan dari instans VPN Gateway. Untuk informasi lebih lanjut, lihat Apa itu koneksi IPsec-VPN?. Jika instans VPN Gateway Anda hanya mendukung mode single-tunnel, lihat Bagaimana cara mengonfigurasi tunnel tunggal? di akhir topik ini.
Prasyarat
Sebelum memulai, pastikan Anda telah menyiapkan:
Instans VPN Gateway yang mendukung mode dual-tunnel
Perangkat Linux yang menjalankan CentOS Stream 9 (64-bit) atau distribusi yang kompatibel
strongSwan versi 5.8.0 atau lebih baru (diperlukan untuk antarmuka virtual XFRM dalam skenario dual-egress dan BGP)
Kernel Linux 4.19 atau lebih baru dengan dukungan modul XFRM, serta iproute2 5.1.0 atau lebih baru (untuk konfigurasi berbasis XFRM)
Konektivitas jaringan pada port UDP 500 dan 4500, serta protokol ESP (protokol IP 50) diizinkan melalui semua firewall perantara
Contoh skenario
Gambar berikut menunjukkan penerapan khas. Perangkat strongSwan di jaringan lokal membuat koneksi IPsec-VPN dual-tunnel dengan Alibaba Cloud, memungkinkan komunikasi antara VPC dan pusat data Anda.
Perencanaan alamat IP
Sisi pusat data lokal
Blok CIDR pribadi: 172.16.0.0/16
Perangkat strongSwan
Kartu antarmuka jaringan eth0: 172.16.20.80, egress publik NAT-mapped 1: 120.XX.XX.202
(Opsional) Kartu antarmuka jaringan eth1: 172.16.21.248, egress publik NAT-mapped 2: 47.XX.XX.127
Untuk skenario non-NAT, lihat Bagaimana cara mengonfigurasi strongSwan ketika antarmuka jaringan memiliki alamat IP publik (non-NAT)?.
Anda dapat membuat koneksi IPsec-VPN dual-tunnel dengan Alibaba Cloud dari perangkat yang memiliki satu egress publik (single egress) atau dua egress publik (dual egress). Topik ini menyediakan contoh untuk kedua skenario tersebut.
Sisi Alibaba Cloud
Blok CIDR VPC: 192.168.0.0/16
Blok CIDR vSwitch 1: 192.168.10.0/24
Blok CIDR vSwitch 2: 192.168.20.0/24
Blok CIDR vSwitch 3: 192.168.30.0/24
Blok CIDR vSwitch 4: 192.168.40.0/24
Blok CIDR vSwitch 5: 192.168.50.0/24
VPN Gateway
Alamat IPsec 1: 47.XX.XX.151
Alamat IPsec 2: 47.XX.XX.87
Setelah Anda membuat instans VPN Gateway, sistem secara otomatis menetapkan dua alamat IPsec ke instans tersebut.
Alamat IP BGP
Topik ini mencakup perutean statis dan Border Gateway Protocol (BGP) dynamic routing. Lewati bagian ini jika Anda tidak berencana menggunakan BGP. Tabel berikut menunjukkan perencanaan blok CIDR BGP yang digunakan dalam topik ini.
Sumber Daya | Tunnel | Blok CIDR tunnel BGP | Alamat IP BGP | Nomor AS BGP |
VPN Gateway | Tunnel 1 | 169.254.10.0/30 Blok CIDR setiap tunnel di bawah instans VPN Gateway harus unik. | 169.254.10.1 | 65535 |
Tunnel 2 | 169.254.20.0/30 | 169.254.20.1 | ||
Perangkat strongSwan | Tunnel 1 | 169.254.10.0/30 | 169.254.10.2 | 65530 |
Tunnel 2 | 169.254.20.0/30 | 169.254.20.2 |
Perencanaan parameter VPN
Kedua tunnel menggunakan nilai parameter yang sama dalam contoh ini. Untuk setiap tunnel, konfigurasi IKE dan IPsec pada perangkat strongSwan harus sesuai dengan konfigurasi di sisi Alibaba Cloud.
Kunci pra-bersama: ChangeMe***
Parameter | IKE | IPsec |
Versi / Mode | IKEv2 / main | - |
Algoritma enkripsi | aes128 | aes128 |
Algoritma autentikasi | sha1 | sha1 |
Grup DH | group2 (modp1024) | group2 (modp1024) |
Masa aktif SA (detik) | 86400 | 86400 |
Parameter enkripsi dalam contoh ini (aes128-sha1-modp1024) dipilih untuk kompatibilitas luas. Untuk lingkungan produksi, pertimbangkan penggunaan algoritma yang lebih kuat seperti aes256-sha256-modp2048 atau aes256gcm16-sha384-ecp384.
Persiapkan sisi Alibaba Cloud
Lengkapi konfigurasi Alibaba Cloud berdasarkan jumlah egress publik dan metode perutean Anda. Pilih tab yang sesuai dengan skenario Anda.
Dual egress—perutean dinamis BGP
Untuk informasi lebih lanjut, lihat Hubungkan VPC ke pusat data lokal dalam mode dual-tunnel dan gunakan perutean BGP. Lengkapi langkah-langkah Create a VPN gateway, Create customer gateways, Create an IPsec-VPN connection, dan Enable BGP dynamic routing .
Karena perangkat strongSwan memiliki dua alamat IP egress publik, buat dua gateway pelanggan.
Saat membuat koneksi IPsec-VPN, asosiasikan Tunnel 1 dengan egress publik 1 dan Tunnel 2 dengan egress publik 2. Contoh ini menggunakan Destination Routing Mode.
Dual egress—perutean statis
Untuk informasi lebih lanjut, lihat Menghubungkan VPC ke pusat data lokal dalam mode saluran ganda. Ikuti langkah-langkah berikut: Buat Gateway VPN, Buat gateway pelanggan, Buat koneksi IPsec, dan Mengonfigurasi rute Gateway VPN.
Karena perangkat strongSwan memiliki dua alamat IP egress publik, buat dua gateway pelanggan.
Saat membuat koneksi IPsec-VPN, asosiasikan Tunnel 1 dengan egress publik 1 dan Tunnel 2 dengan egress publik 2. Contoh ini menggunakan Destination Routing Mode.
Single egress—perutean dinamis BGP
Untuk informasi lebih lanjut, lihat Hubungkan VPC ke pusat data lokal dalam mode dual-tunnel dan gunakan perutean BGP. Lengkapi langkah-langkah Create a VPN gateway, Create customer gateways, Create an IPsec-VPN connection, dan Enable BGP dynamic routing .
Perangkat strongSwan memiliki satu alamat IP egress publik. Buat satu gateway pelanggan.
Saat membuat koneksi IPsec-VPN, asosiasikan kedua tunnel dengan gateway pelanggan yang sama. Contoh ini menggunakan Destination Routing Mode.
Single egress—perutean statis
Untuk informasi lebih lanjut, lihat Hubungkan VPC ke pusat data lokal dalam mode dual-tunnel. Lengkapi langkah-langkah Create a VPN gateway, Create a customer gateway, Create an IPsec connection, dan Configure VPN Gateway routes . Perhatikan poin-poin berikut:
Perangkat strongSwan memiliki satu alamat IP egress publik. Buat satu gateway pelanggan.
Saat membuat koneksi IPsec-VPN, pilih mode Protected Data Flows dan asosiasikan kedua tunnel dengan gateway pelanggan yang sama. Konfigurasikan parameter berikut:
Tetapkan Local Network ke blok CIDR VPC di sisi Alibaba Cloud, yaitu 192.168.0.0/16.
Tetapkan Remote Network ke blok CIDR pribadi pusat data lokal, yaitu 172.16.0.0/16.
Jika koneksi IPsec-VPN diasosiasikan dengan Transit Router, gunakan perutean dinamis BGP. Perutean statis tidak disarankan untuk skenario ini.
Konfigurasi perangkat strongSwan
Langkah-langkah berikut menggunakan CentOS Stream 9 (64-bit) sebagai contoh. Untuk distribusi lainnya, lihat dokumentasi resmi strongSwan.
1. Konfigurasi kebijakan firewall
Izinkan protokol ESP (protokol IP 50), port UDP 500, dan port UDP 4500 pada perangkat strongSwan.
iptables -I INPUT -p 50 -j ACCEPT
iptables -I INPUT -p udp --dport 500 -j ACCEPT
iptables -I INPUT -p udp --dport 4500 -j ACCEPTAturaniptablesini tidak bertahan setelah reboot. Untuk membuatnya permanen, gunakaniptables-save,firewall-cmd --permanent, atau tool manajemen firewall pilihan distribusi Anda.
2. Aktifkan penerusan traffic
Aktifkan IP forwarding agar perangkat strongSwan dapat meneruskan traffic antara jaringan lokal dan VPC. Perintah berikut berlaku langsung dan bertahan setelah reboot.
Tambahkan konfigurasi penerusan ke /etc/sysctl.conf.
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.confTerapkan konfigurasi.
sudo sysctl -pVerifikasi bahwa IP forwarding telah diaktifkan.
cat /proc/sys/net/ipv4/ip_forwardOutput seharusnya
1.
3. Instal strongSwan
dnf install epel-release -y
dnf install strongswan -y4. Konfigurasi dual tunnel
Dual egress—perutean statis dan perutean dinamis BGP
Dual egress memerlukan antarmuka jaringan virtual XFRM. Verifikasi hal berikut sebelum melanjutkan: strongSwan 5.8.0 atau lebih baru, kernel Linux 4.19 atau lebih baru, iproute2 5.1.0 atau lebih baru, serta dukungan modul XFRM (jalankan lsmod | grep xfrm untuk memeriksa). Untuk informasi lebih lanjut, lihat XFRM Interfaces on Linux.
Tambahkan rute agar traffic ke alamat IPsec 1 melewati eth0 dan traffic ke alamat IPsec 2 melewati eth1.
ip route add 47.XX.XX.151 via 172.16.20.253 dev eth0 # 172.16.20.253 adalah alamat gateway pribadi eth0. ip route add 47.XX.XX.87 via 172.16.21.253 dev eth1 # 172.16.21.253 adalah alamat gateway pribadi eth1.Verifikasi konektivitas ke kedua alamat IPsec.
ping 47.XX.XX.151 ping 47.XX.XX.87Buat dua antarmuka jaringan virtual untuk membuat tunnel IPsec-VPN.
ip link add ipsec0 type xfrm dev eth0 if_id 42 # Buat antarmuka jaringan virtual XFRM untuk Tunnel 1. ID antarmuka adalah 42 dan antarmuka dasar adalah eth0 publik. ip link add ipsec1 type xfrm dev eth1 if_id 43 # Buat antarmuka jaringan virtual XFRM untuk Tunnel 2. ID antarmuka adalah 43 dan antarmuka dasar adalah eth1 publik. ip link set ipsec0 up # Aktifkan antarmuka jaringan virtual XFRM untuk Tunnel 1. ip link set ipsec1 up # Aktifkan antarmuka jaringan virtual XFRM untuk Tunnel 2.PentingAntarmuka XFRM tidak bertahan setelah reboot. Anda harus mengonfigurasi skrip startup berikut agar antarmuka dibuat ulang secara otomatis dan strongSwan dimuat ulang setiap kali boot.
Ubah file konfigurasi strongSwan.
Buat cadangan file konfigurasi strongSwan asli.
mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bakBuat file konfigurasi strongSwan baru.
vi /etc/strongswan/swanctl/swanctl.confTambahkan konfigurasi berikut. Setiap nilai parameter harus sesuai dengan konfigurasi tunnel Alibaba Cloud yang bersesuaian.
PentingUntuk perutean statis, hapus komentar baris
updown = /root/connect_1.shdanupdown = /root/connect_2.shdalam konfigurasi.connections { vco1 { # Tambahkan konfigurasi VPN untuk Tunnel IPsec-VPN 1. version = 2 # Tentukan versi IKE. Harus sama dengan versi IKE Tunnel 1 di sisi Alibaba Cloud. Angka 2 menunjukkan IKEv2. local_addrs = 172.16.20.80 # Alamat IP kartu antarmuka jaringan lokal pertama. remote_addrs = 47.XX.XX.151 # Tentukan alamat IP peer Tunnel 1 sebagai alamat IP gateway Tunnel 1 di sisi Alibaba Cloud, yaitu alamat IPsec 1. dpd_delay = 10 rekey_time = 84600 # Tentukan masa aktif SA untuk Tunnel 1. Harus sama dengan masa aktif SA dalam konfigurasi IKE Tunnel 1 di sisi Alibaba Cloud. over_time = 1800 proposals = aes128-sha1-modp1024 # Tentukan algoritma enkripsi, algoritma autentikasi, dan grup DH untuk Tunnel 1. Harus sama dengan konfigurasi IKE Tunnel 1 di sisi Alibaba Cloud. group2 sesuai dengan modp1024. encap = yes local { auth = psk # Tetapkan metode autentikasi sisi lokal ke PSK, yaitu metode kunci pra-bersama. id = 120.XX.XX.202 # Alamat IP egress publik lokal pertama. Harus sama dengan RemoteId Tunnel 1 di sisi Alibaba Cloud. } remote { auth = psk # Tetapkan metode autentikasi peer ke PSK. Artinya Alibaba Cloud menggunakan metode kunci pra-bersama. id = 47.XX.XX.151 # Alamat IPsec 1 di sisi Alibaba Cloud. Harus sama dengan LocalId Tunnel 1 di sisi Alibaba Cloud. } children { vco_child1 { local_ts = 0.0.0.0/0 # Pemilih traffic berbasis kebijakan untuk mode perutean berbasis tujuan di Alibaba Cloud adalah 0.0.0.0/0. remote_ts = 0.0.0.0/0 # Pemilih traffic berbasis kebijakan untuk mode perutean berbasis tujuan di Alibaba Cloud adalah 0.0.0.0/0. mode = tunnel rekey_time = 85500 life_time = 86400 # Tentukan masa aktif SA untuk Tunnel 1. Harus sama dengan masa aktif SA dalam konfigurasi IPsec Tunnel 1 di sisi Alibaba Cloud. dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 # Tentukan algoritma enkripsi, algoritma autentikasi, dan grup DH untuk Tunnel 1. Harus sama dengan konfigurasi IPsec Tunnel 1 di sisi Alibaba Cloud. group2 sesuai dengan modp1024. if_id_out = 42 # Tentukan antarmuka egress dan ingress untuk Tunnel 1 sebagai antarmuka jaringan virtual XFRM Tunnel 1. if_id_in = 42 #updown = /root/connect_1.sh # Jalankan skrip /root/connect_1.sh untuk mengonfigurasi rute berdasarkan status UP dan DOWN Tunnel 1. Parameter ini hanya diperlukan saat menggunakan perutean statis. } } } vco2 { # Tambahkan konfigurasi VPN untuk Tunnel IPsec-VPN 2. version = 2 # Tentukan versi IKE. Harus sama dengan versi IKE Tunnel 2 di sisi Alibaba Cloud. Angka 2 menunjukkan IKEv2. local_addrs = 172.16.21.248 # Alamat IP kartu antarmuka jaringan lokal kedua. remote_addrs = 47.XX.XX.87 # Alamat IPsec 2 di sisi Alibaba Cloud. dpd_delay = 10 rekey_time = 84600 # Masa aktif SA. Harus sesuai dengan konfigurasi IKE Tunnel 2. over_time = 1800 proposals = aes128-sha1-modp1024 # group2 = modp1024. Harus sesuai dengan konfigurasi IKE Tunnel 2. encap = yes local { auth = psk # Autentikasi kunci pra-bersama. id = 47.XX.XX.127 # Alamat IP egress publik lokal kedua. Harus sesuai dengan RemoteId Tunnel 2. } remote { auth = psk # Tetapkan metode autentikasi peer ke PSK. Artinya Alibaba Cloud menggunakan metode kunci pra-bersama. id = 47.XX.XX.87 # Alamat IPsec 2 di sisi Alibaba Cloud. Harus sama dengan LocalId Tunnel 2 di sisi Alibaba Cloud. } children { vco_child2 { local_ts = 0.0.0.0/0 # Pemilih traffic berbasis kebijakan untuk mode perutean berbasis tujuan di Alibaba Cloud adalah 0.0.0.0/0. remote_ts = 0.0.0.0/0 # Pemilih traffic berbasis kebijakan untuk mode perutean berbasis tujuan di Alibaba Cloud adalah 0.0.0.0/0. mode = tunnel rekey_time = 85500 life_time = 86400 # Tentukan masa aktif SA untuk Tunnel 2. Harus sama dengan masa aktif SA dalam konfigurasi IPsec Tunnel 2 di sisi Alibaba Cloud. dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 # Tentukan algoritma enkripsi, algoritma autentikasi, dan grup DH untuk Tunnel 2. Harus sama dengan konfigurasi IPsec Tunnel 2 di sisi Alibaba Cloud. group2 sesuai dengan modp1024. if_id_out = 43 # Tentukan antarmuka egress dan ingress untuk Tunnel 2 sebagai antarmuka jaringan virtual XFRM Tunnel 2. if_id_in = 43 #updown = /root/connect_2.sh # Jalankan skrip /root/connect_2.sh untuk mengonfigurasi rute berdasarkan status UP dan DOWN Tunnel 2. Parameter ini hanya diperlukan saat menggunakan perutean statis. } } } } secrets { ike-vco1 { id = 47.XX.XX.151 # Alamat IP publik Tunnel 1 gateway VPN di sisi Alibaba Cloud. secret = ChangeMe*** # Tentukan kunci pra-bersama untuk Tunnel 1. Kunci harus sama dengan kunci pra-bersama Tunnel 1 di sisi Alibaba Cloud. } ike-vco2 { id = 47.XX.XX.87 # Alamat IP publik Tunnel 2 gateway VPN di sisi Alibaba Cloud. secret = ChangeMe*** # Tentukan kunci pra-bersama untuk Tunnel 2. Kunci harus sama dengan kunci pra-bersama Tunnel 2 di sisi Alibaba Cloud. } }
Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.
sudo systemctl restart strongswan swanctl --load-all watch swanctl --list-sasOutput berikut mengonfirmasi bahwa koneksi IPsec-VPN telah terbentuk. Namun, konektivitas jaringan memerlukan konfigurasi rute pada langkah berikutnya.

Konfigurasi rute.
Lihat bagian yang sesuai dengan metode perutean yang akan Anda gunakan.
Perutean dinamis BGP
Alamat IP BGP yang ditetapkan ke antarmuka XFRM (
ip address add) tidak bertahan setelah reboot. Tambahkan perintah ini ke skrip startup XFRM yang dijelaskan sebelumnya. Konfigurasi BGP FRR akan bertahan secara otomatis setelah Anda menjalankanwrite memorydivtysh(lihat langkah terakhir di bawah).Konfigurasi alamat IP BGP pada antarmuka XFRM.
ip address add 169.254.10.2/30 dev ipsec0 ip address add 169.254.20.2/30 dev ipsec1Instal FRR (Free Range Routing) untuk dukungan BGP.
yum install -y frrEdit
vi /etc/frr/daemonsdan tetapkan parameter bgpd keyesuntuk mengaktifkan BGP.Edit file, lakukan perubahan, lalu simpan.
Aktifkan dan mulai FRR.
systemctl enable frr systemctl restart frrTambahkan konfigurasi BGP. Ganti alamat IP dan nomor AS dengan nilai aktual Anda.
Masuk ke antarmuka konfigurasi FRR.
vtyshMasuk ke mode konfigurasi.
config terminalTambahkan konfigurasi BGP dengan perintah berikut.
Ganti nilai berikut dengan alamat aktual Anda:
Ganti "169.254.10.1" dan "169.254.20.1" dengan alamat IP BGP aktual tunnel di sisi Alibaba Cloud.
Ganti "65535" dengan nomor AS BGP aktual Gateway VPN.
Ganti "172.16.20.0/24" dan "172.16.21.0/24" dengan blok CIDR aktual pusat data lokal Anda.
route-map allow-all permit 1 exit router bgp 65530 bgp router-id 169.254.10.2 neighbor 169.254.10.1 remote-as 65535 neighbor 169.254.10.1 timers 10 30 neighbor 169.254.20.1 remote-as 65535 neighbor 169.254.20.1 timers 10 30 address-family ipv4 unicast network 172.16.20.0/24 network 172.16.21.0/24 neighbor 169.254.10.1 soft-reconfiguration inbound neighbor 169.254.10.1 route-map allow-all in neighbor 169.254.10.1 route-map allow-all out neighbor 169.254.20.1 soft-reconfiguration inbound neighbor 169.254.20.1 route-map allow-all in neighbor 169.254.20.1 route-map allow-all out maximum-paths 32 exit-address-family exit
Jalankan
exituntuk keluar dari mode konfigurasi, lalu jalankanshow ip bgpuntuk melihat rute BGP.Output mengonfirmasi bahwa perangkat strongSwan telah mempelajari rute VPC. Pusat data lokal dan VPC kini dapat berkomunikasi.

Simpan konfigurasi BGP agar bertahan setelah FRR direstart.
write memory
Perutean statis
Buat dua skrip yang dipanggil strongSwan untuk mengonfigurasi rute dan mengontrol aliran traffic.
Buat dan edit skrip /root/connect_1.sh.
vi /root/connect_1.shTambahkan dan simpan konten berikut.
#!/usr/bin/env bash if [ x"$PLUTO_VERB" == "xup-client" ]; then echo "ip route add 192.168.0.0/16 dev ipsec0" >> /root/vpn_route.log;ip route add 192.168.0.0/16 dev ipsec0 metric 100 elif [ x"$PLUTO_VERB" == "xdown-client" ]; then echo "ip route del 192.168.0.0/16 dev ipsec0" >> /root/vpn_route.log;ip route del 192.168.0.0/16 dev ipsec0 metric 100 fiSkrip ini menambahkan rute untuk traffic dari pusat data lokal ke VPC Alibaba Cloud (192.168.0.0/16) melalui antarmuka jaringan virtual XFRM Tunnel 1 saat tunnel aktif. Nilai metric rute ini diatur ke 100, memberikan prioritas lebih tinggi daripada rute Tunnel 2. Jika Tunnel 1 mati, skrip mencabut rute tersebut.
Buat dan edit skrip /root/connect_2.sh.
vi /root/connect_2.shTambahkan dan simpan konten berikut.
#!/usr/bin/env bash if [ x"$PLUTO_VERB" == "xup-client" ]; then echo "ip route add 192.168.0.0/16 dev ipsec1" >> /root/vpn_route.log;ip route add 192.168.0.0/16 dev ipsec1 metric 101 elif [ x"$PLUTO_VERB" == "xdown-client" ]; then echo "ip route del 192.168.0.0/16 dev ipsec1" >> /root/vpn_route.log;ip route del 192.168.0.0/16 dev ipsec1 metric 101 fiSkrip ini menambahkan rute untuk traffic dari pusat data lokal ke VPC Alibaba Cloud (192.168.0.0/16) melalui antarmuka jaringan virtual XFRM Tunnel 2 saat tunnel aktif. Nilai metric rute ini diatur ke 101, memberikan prioritas lebih rendah daripada rute Tunnel 1. Jika Tunnel 2 mati, skrip mencabut rute tersebut.
Berikan izin eksekusi ke kedua skrip.
sudo chmod +x /root/connect_1.sh sudo chmod +x /root/connect_2.shRestart proses strongSwan.
sudo systemctl restart strongswanVerifikasi rute.
route -n
Single egress—perutean dinamis BGP
Perutean dinamis BGP memerlukan antarmuka jaringan virtual XFRM. Verifikasi hal berikut: strongSwan 5.8.0 atau lebih baru, kernel Linux 4.19 atau lebih baru, iproute2 5.1.0 atau lebih baru, serta dukungan modul XFRM (jalankan lsmod | grep xfrm untuk memeriksa). Untuk informasi lebih lanjut, lihat XFRM Interfaces on Linux.
Buat dua antarmuka jaringan virtual untuk membuat tunnel IPsec-VPN.
ip link add ipsec0 type xfrm dev eth0 if_id 42 # Buat antarmuka jaringan virtual XFRM untuk Tunnel 1. ID antarmuka adalah 42 dan antarmuka dasar adalah eth0 publik. ip link add ipsec1 type xfrm dev eth0 if_id 43 # Buat antarmuka jaringan virtual XFRM untuk Tunnel 2. ID antarmuka adalah 43 dan antarmuka dasar adalah eth0 publik. ip link set ipsec0 up # Aktifkan antarmuka jaringan virtual XFRM untuk Tunnel 1. ip link set ipsec1 up # Aktifkan antarmuka jaringan virtual XFRM untuk Tunnel 2.PentingAntarmuka XFRM tidak bertahan setelah reboot. Anda harus mengonfigurasi skrip startup berikut agar antarmuka dibuat ulang secara otomatis dan strongSwan dimuat ulang setiap kali boot.
Ubah file konfigurasi strongSwan.
Buat cadangan file konfigurasi strongSwan asli.
mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bakBuat file konfigurasi strongSwan baru.
vi /etc/strongswan/swanctl/swanctl.confKonfigurasi berikut mirip dengan contoh dual-egress. Hanya perbedaan yang diberi anotasi. Tambahkan dan simpan konfigurasi berikut.
connections { vco1 { version = 2 local_addrs = 172.16.20.80 # Kedua tunnel menggunakan antarmuka eth0 yang sama (single egress). remote_addrs = 47.XX.XX.151 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local { auth = psk id = 120.XX.XX.202 } remote { auth = psk id = 47.XX.XX.151 } children { vco_child1 { local_ts = 0.0.0.0/0 remote_ts = 0.0.0.0/0 mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 if_id_out = 42 if_id_in = 42 } } } vco2 { version = 2 local_addrs = 172.16.20.80 # Sama dengan vco1 (single egress). remote_addrs = 47.XX.XX.87 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local { auth = psk id = 120.XX.XX.202 # Alamat IP egress publik yang sama dengan vco1 (single egress). } remote { auth = psk id = 47.XX.XX.87 } children { vco_child2 { local_ts = 0.0.0.0/0 remote_ts = 0.0.0.0/0 mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 if_id_out = 43 if_id_in = 43 } } } } secrets { ike-vco1 { id = 47.XX.XX.151 secret = ChangeMe*** } ike-vco2 { id = 47.XX.XX.87 secret = ChangeMe*** } }
Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.
sudo systemctl restart strongswan swanctl --load-all watch swanctl --list-sasOutput berikut mengonfirmasi bahwa koneksi IPsec-VPN telah terbentuk. Konfigurasikan rute pada langkah berikutnya untuk mengaktifkan konektivitas jaringan.

Konfigurasi perutean dinamis BGP.
Alamat IP BGP yang ditetapkan ke antarmuka XFRM (
ip address add) tidak bertahan setelah reboot. Tambahkan perintah ini ke skrip startup XFRM yang dijelaskan sebelumnya. Konfigurasi BGP FRR akan bertahan secara otomatis setelah Anda menjalankanwrite memorydivtysh(lihat langkah terakhir di bawah).Konfigurasi alamat IP BGP pada antarmuka XFRM.
ip address add 169.254.10.2/30 dev ipsec0 ip address add 169.254.20.2/30 dev ipsec1Instal FRR (Free Range Routing) untuk dukungan BGP.
yum install -y frrEdit
vi /etc/frr/daemonsdan tetapkan parameter bgpd keyesuntuk mengaktifkan BGP.Edit file, lakukan perubahan, lalu simpan.
Aktifkan dan mulai FRR.
systemctl enable frr systemctl restart frrTambahkan konfigurasi BGP. Ganti alamat IP dan nomor AS dengan nilai aktual Anda.
Masuk ke antarmuka konfigurasi FRR.
vtyshMasuk ke mode konfigurasi.
config terminalTambahkan konfigurasi BGP dengan perintah berikut.
Ganti nilai berikut dengan alamat aktual Anda:
Ganti "169.254.10.1" dan "169.254.20.1" dengan alamat IP BGP aktual tunnel di sisi Alibaba Cloud.
Ganti "65535" dengan nomor AS BGP aktual Gateway VPN.
Ganti "172.16.20.0/24" dan "172.16.21.0/24" dengan blok CIDR aktual pusat data lokal Anda.
route-map allow-all permit 1 exit router bgp 65530 bgp router-id 169.254.10.2 neighbor 169.254.10.1 remote-as 65535 neighbor 169.254.10.1 timers 10 30 neighbor 169.254.20.1 remote-as 65535 neighbor 169.254.20.1 timers 10 30 address-family ipv4 unicast network 172.16.20.0/24 network 172.16.21.0/24 neighbor 169.254.10.1 soft-reconfiguration inbound neighbor 169.254.10.1 route-map allow-all in neighbor 169.254.10.1 route-map allow-all out neighbor 169.254.20.1 soft-reconfiguration inbound neighbor 169.254.20.1 route-map allow-all in neighbor 169.254.20.1 route-map allow-all out maximum-paths 32 exit-address-family exit
Jalankan
exituntuk keluar dari mode konfigurasi, lalu jalankanshow ip bgpuntuk melihat rute BGP.Output mengonfirmasi bahwa perangkat strongSwan telah mempelajari rute VPC. Pusat data lokal dan VPC kini dapat berkomunikasi.

Simpan konfigurasi BGP agar bertahan setelah FRR direstart.
write memory
Single egress—perutean statis
Dalam mode perutean statis single-egress, Alibaba Cloud dapat secara proaktif mengalihkan traffic ke tunnel cadangan jika mendeteksi ancaman pada tunnel aktif. Pantau penghitung XfrmInTmplMismatch di /proc/net/xfrm_stat. Jika nilai ini terus meningkat, traffic telah dialihkan. Sesuaikan parameter priority untuk tunnel cadangan di /etc/strongswan/swanctl/swanctl.conf agar traffic lokal dialihkan melalui tunnel cadangan.
Buat cadangan file konfigurasi strongSwan asli.
mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bakBuat file konfigurasi strongSwan baru.
vi /etc/strongswan/swanctl/swanctl.confKonfigurasi berikut mirip dengan contoh dual-egress. Perbedaan utama: pemilih traffic berbasis kebijakan (
local_ts/remote_ts) danpriorityuntuk failover aktif/cadangan. Tambahkan dan simpan konfigurasi berikut.connections { vco1 { version = 2 local_addrs = 172.16.20.80 remote_addrs = 47.XX.XX.151 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local { auth = psk id = 120.XX.XX.202 } remote { auth = psk id = 47.XX.XX.151 } children { vco_child1 { local_ts = 172.16.0.0/16 # Berbasis kebijakan: blok CIDR pribadi pusat data lokal. remote_ts = 192.168.0.0/16 # Berbasis kebijakan: blok CIDR VPC. mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 1 # Tunnel aktif (prioritas lebih tinggi). } } } vco2 { version = 2 local_addrs = 172.16.20.80 remote_addrs = 47.XX.XX.87 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local { auth = psk id = 120.XX.XX.202 } remote { auth = psk id = 47.XX.XX.87 } children { vco_child2 { local_ts = 172.16.0.0/16 # Berbasis kebijakan: blok CIDR pribadi pusat data lokal. remote_ts = 192.168.0.0/16 # Berbasis kebijakan: blok CIDR VPC. mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 2 # Tunnel cadangan (prioritas lebih rendah). } } } } secrets { ike-vco1 { id = 47.XX.XX.151 secret = ChangeMe*** } ike-vco2 { id = 47.XX.XX.87 secret = ChangeMe*** } }Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.
sudo systemctl restart strongswan swanctl --load-all watch swanctl --list-sasOutput berikut mengonfirmasi bahwa koneksi IPsec-VPN telah terbentuk. Pusat data lokal dan VPC kini dapat berkomunikasi.

5. Verifikasi konektivitas dan ketersediaan tinggi
Verifikasi konektivitas antara pusat data lokal dan VPC.
Dari klien di pusat data lokal,
pinginstans ECS di VPC. Paket balasan echo mengonfirmasi koneksi berhasil.ping <IP_address_of_an_ECS_instance_in_the_VPC>Verifikasi ketersediaan tinggi koneksi IPsec-VPN.
Saat ping sedang berjalan, putuskan tunnel aktif.
Salah satu cara memutus tunnel adalah dengan mengubah kunci pra-bersamanya sehingga kunci di kedua ujung tidak lagi cocok.
Pantau traffic
pingsetelah memutus tunnel aktif. Gangguan singkat yang diikuti pemulihan mengonfirmasi bahwa traffic secara otomatis beralih ke tunnel cadangan.
FAQ
Bagaimana cara mengonfigurasi strongSwan ketika koneksi IPsec-VPN diasosiasikan dengan Transit Router?
Konfigurasi strongSwan sama seperti yang dijelaskan dalam topik ini. Gunakan perutean dinamis BGP untuk skenario Transit Router. Setelah dikonfigurasi, perangkat strongSwan mempelajari rute VPC melalui BGP, dan kedua tunnel secara otomatis membentuk tautan Equal-Cost Multi-Path (ECMP).
Apakah strongSwan mendukung IKEv1?
Ya. Tetapkan version = 1 di file /etc/strongswan/swanctl/swanctl.conf.
Bagaimana cara menentukan Protected Data Flows (aliran data yang diminati)?
Tetapkan bidang local_ts dan remote_ts di /etc/strongswan/swanctl/swanctl.conf. Pastikan mode Protected Data Flows juga dikonfigurasi di sisi Alibaba Cloud.
Untuk menentukan beberapa blok CIDR di salah satu sisi, perangkat strongSwan dan koneksi IPsec-VPN Alibaba Cloud harus menggunakan IKEv2.
children {
vco_child1 {
local_ts = 172.16.20.0/24,172.16.21.0/24 # Blok CIDR pusat data lokal.
remote_ts = 192.168.0.0/16 # Blok CIDR VPC di sisi Alibaba Cloud.
}
}Bagaimana cara mengonfigurasi strongSwan ketika antarmuka jaringan memiliki alamat IP publik (non-NAT)?
Ubah bidang local_addrs untuk setiap tunnel di /etc/strongswan/swanctl/swanctl.conf menjadi alamat IP publik. Semua konfigurasi lain tetap sama.
connections {
vco1 {
local_addrs = 1.1.XX.XX # Tentukan alamat IP publik yang terikat pada kartu antarmuka jaringan perangkat strongSwan.
}
}Bagaimana cara memecahkan masalah kegagalan negosiasi tunnel?
Jalankan journalctl -u strongswan -f atau swanctl --log untuk melihat log negosiasi real-time. Penyebab umum kegagalan negosiasi meliputi:
Ketidakcocokan kunci pra-bersama antara perangkat strongSwan dan Alibaba Cloud
Ketidakcocokan algoritma (enkripsi, autentikasi, atau grup DH)
Ketidakcocokan versi IKE (IKEv1 vs. IKEv2)
Firewall memblokir port UDP 500 atau 4500, atau protokol ESP (protokol IP 50)
Mengapa tunnel sudah terbentuk tetapi traffic tidak mengalir?
Jika swanctl --list-sas menunjukkan tunnel yang sudah terbentuk tetapi ping gagal, periksa hal berikut:
Verifikasi bahwa IP forwarding diaktifkan:
cat /proc/sys/net/ipv4/ip_forward(output seharusnya1)Verifikasi kebijakan dan status XFRM:
ip xfrm policydanip xfrm stateVerifikasi tabel rute:
ip route showVerifikasi bahwa rantai FORWARD iptables mengizinkan traffic:
iptables -L FORWARD -n
Bagaimana cara mengatasi tunnel yang sering terputus (timeout DPD)?
Timeout Dead Peer Detection (DPD) menyebabkan tunnel sering terputus ketika jaringan antar titik akhir tidak stabil. Untuk mengatasinya:
Tingkatkan
dpd_delay(misalnya, dari 10 menjadi 30) di/etc/strongswan/swanctl/swanctl.confuntuk mengurangi sensitivitas terhadap kehilangan paket sementaraPastikan pengaturan DPD di kedua ujung kompatibel
Periksa stabilitas jaringan antar titik akhir (kehilangan paket dan latensi) menggunakan
mtratauping -c 100
Bagaimana cara mengonfigurasi tunnel tunggal?
Jika VPN Gateway yang Anda beli hanya mendukung koneksi IPsec-VPN single-tunnel, kami menyarankan Anda upgrade koneksi IPsec-VPN ke mode dual-tunnel. Koneksi IPsec-VPN dalam mode dual-tunnel mendukung pemulihan bencana antar zona, yang meningkatkan ketersediaan tinggi jaringan.
