Terapkan strongSwan pada perangkat Linux on-premises untuk membuat koneksi IPsec-VPN dual-tunnel dengan Alibaba Cloud VPN Gateway guna komunikasi situs-ke-situs berbasis ketersediaan tinggi.
Contoh skenario
Gambar berikut menunjukkan penerapan khas. Perangkat strongSwan di jaringan on-premises Anda membuat koneksi IPsec-VPN dual-tunnel dengan Alibaba Cloud, memungkinkan komunikasi antara VPC dan pusat data Anda.
Perencanaan alamat IP
Sisi pusat data on-premises
Blok CIDR pribadi: 172.16.0.0/16
Perangkat strongSwan
Kartu antarmuka jaringan eth0: 172.16.20.80, egress publik yang dipetakan NAT 1: 120.XX.XX.202
(Opsional) Kartu antarmuka jaringan eth1: 172.16.21.248, egress publik yang dipetakan NAT 2: 47.XX.XX.127
CatatanUntuk skenario non-NAT, lihat "Bagaimana cara mengonfigurasi strongSwan ketika antarmuka jaringan memiliki alamat IP publik (non-NAT)?".
Baik perangkat Anda memiliki satu egress jaringan publik (single egress) maupun dua egress jaringan publik (dual egress), keduanya dapat membuat koneksi IPsec-VPN mode dual-tunnel dengan Alibaba Cloud. Topik ini menyediakan contoh untuk kedua kasus 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.40.0/24
Blok CIDR vSwitch 4: 192.168.50.0/24
Blok CIDR vSwitch 5: 192.168.55.0/24
Gateway VPN
Alamat IPsec 1: 47.XX.XX.151
Alamat IPsec 2: 47.XX.XX.87
CatatanSetelah Anda membuat instans gateway VPN, sistem secara otomatis menetapkan dua alamat IPsec ke instans gateway VPN tersebut.
Alamat IP BGP
Topik ini mencakup perutean statis dan perutean dinamis Border Gateway Protocol (BGP). Lewati bagian ini jika Anda tidak berencana menggunakan BGP. Tabel berikut mencantumkan perencanaan blok CIDR BGP yang digunakan dalam topik ini.
Sumber Daya | Terowongan | Blok CIDR saluran data BGP | Alamat IP BGP | Nomor AS BGP |
Gateway VPN | Tunnel 1 | 169.254.10.0/30 Catatan Di bawah satu instans gateway VPN, blok CIDR setiap saluran data 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 |
Rencana konfigurasi parameter VPN
Kedua saluran data menggunakan nilai parameter yang sama dalam contoh ini. Untuk setiap saluran data, konfigurasi IKE dan IPsec pada perangkat strongSwan harus sesuai dengan konfigurasi di sisi Alibaba Cloud.
Kunci pra-bersama: ChangeMe***
Konfigurasi IKE
Versi IKE: ikev2
Mode negosiasi: main
Algoritma enkripsi: aes
Algoritma autentikasi: sha1
Grup DH: group2
Masa aktif SA (detik): 86400
Konfigurasi IPsec:
Algoritma enkripsi: aes
Algoritma autentikasi: sha1
Grup DH: group2
Masa aktif SA (detik): 86400
Persiapan di 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 Mode dual-tunnel dengan 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 Standard VPN Gateway quick start. Lengkapi langkah-langkah Create a VPN gateway, Create a customer gateway, Create an IPsec connection, dan Configure VPN Gateway routes .
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 Mode dual-tunnel dengan 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 saluran data dengan gateway pelanggan yang sama. Contoh ini menggunakan Destination Routing Mode.
Single egress - perutean statis
Untuk informasi lebih lanjut, lihat Standard VPN Gateway quick start. 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 saluran data 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 on-premises, yaitu 172.16.0.0/16.
Untuk skenario di mana koneksi IPsec-VPN diasosiasikan dengan router transit, kami merekomendasikan penggunaan protokol perutean dinamis BGP. Metode ini tidak direkomendasikan.
Mulai mengonfigurasi perangkat strongSwan
Langkah-langkah berikut menggunakan perangkat strongSwan yang menjalankan "sistem operasi CentOS Stream 9 64-bit" sebagai contoh. Untuk sistem operasi lain, lihat dokumentasi resmi strongSwan.
1. Konfigurasikan kebijakan firewall untuk mengizinkan traffic
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 ACCEPT2. Aktifkan penerusan traffic
echo 1 > /proc/sys/net/ipv4/ip_forwardAktifkan penerusan IP agar perangkat strongSwan dapat meneruskan traffic antara jaringan on-premises dan VPC. Perintah berikut berlaku langsung dan tetap berlaku setelah reboot.
3. Instal perangkat lunak strongSwan
dnf install epel-release -y
dnf install strongswan -y4. Konfigurasikan 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, dan 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 antarmuka publik eth0. 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 antarmuka publik eth1. ip link set ipsec0 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 1. ip link set ipsec1 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 2.PentingKonfigurasi untuk membuat antarmuka jaringan virtual bersifat sementara. Setelah perangkat strongSwan restart, Anda perlu menambahkan konfigurasi lagi dan menjalankan perintah
sudo systemctl restart strongswan;swanctl --load-all(perintah ini memerlukan izin root). Anda dapat merujuk ke konten berikut untuk menambahkan skrip startup ke perangkat strongSwan, sehingga antarmuka jaringan virtual ditambahkan secara otomatis setelah perangkat strongSwan restart.Ubah file konfigurasi strongSwan.
Cadangkan 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 sesuai.
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. 2 menunjukkan IKEv2. local_addrs = 172.16.20.80 # Alamat IP kartu antarmuka jaringan on-premises 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 # Atur metode autentikasi sisi on-premises ke PSK, yaitu metode kunci pra-bersama. id = 120.XX.XX.202 # Alamat IP egress publik on-premises pertama. Harus sama dengan RemoteId Tunnel 1 di sisi Alibaba Cloud. } remote { auth = psk # Atur 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 # Selector traffic berbasis kebijakan untuk mode perutean berbasis tujuan di Alibaba Cloud adalah 0.0.0.0/0. remote_ts = 0.0.0.0/0 # Selector 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 Anda 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. 2 menunjukkan IKEv2. local_addrs = 172.16.21.248 # Alamat IP kartu antarmuka jaringan on-premises 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 on-premises kedua. Harus sesuai dengan RemoteId Tunnel 2. } remote { auth = psk # Atur 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 # Selector traffic berbasis kebijakan untuk mode perutean berbasis tujuan di Alibaba Cloud adalah 0.0.0.0/0. remote_ts = 0.0.0.0/0 # Selector 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 Anda 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-sasSeperti yang ditunjukkan di bawah ini, jika status setelah
vco1danvco2adalahESTABLISHED, koneksi IPsec-VPN antara perangkat strongSwan dan gateway VPN telah berhasil dibuat. Namun, jaringan masih belum dapat berkomunikasi secara normal, dan Anda perlu mengonfigurasi rute.plugin 'sqlite': failed to load - sqlite_plugin_create not found and no plugin file available vco2: #4, ESTABLISHED, IKEv2, 2d3fbef28a433cfd_i 3f1960ea7d80a293_r* local '47.___.127' @ ___[4500] remote '47.__ __87' @ ___ AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 established 3424s ago, rekeying in 79868s vco_child2: #4, reqid 2, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96 installed 3424s ago, rekeying in 81353s, expires in 82976s in c7f56760 (-|0x0000002b), 16396 bytes, 245 packets, 47s ago out 2b09776f (-|0x0000002b), 9621 bytes, 149 packets, 47s ago local 0.0.0.0/0 remote 0.0.0.0/0 vco1: #1, ESTABLISHED, IKEv2, 96ccc381f9e7693e_i* d1a7dec1832e5cb6_r local '120.___.202' @ ___ remote '47.__ ___.151' @ ___ AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 established 3447s ago, rekeying in 79436s vco_child1: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96 installed 3447s ago, rekeying in 81457s, expires in 82953s in c8f4286f (-|0x0000002a), 16127 bytes, 239 packets, 43s ago out f5bccc3d (-|0x0000002a), 9828 bytes, 152 packets, 43s ago local 0.0.0.0/0Konfigurasikan rute.
Merujuk ke bagian metode perutean yang akan Anda gunakan.
Perutean dinamis BGP
CatatanSetelah perangkat strongSwan restart, Anda perlu menambahkan konfigurasi BGP lagi.
Konfigurasikan 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 frrJalankan perintah
vi /etc/frr/daemonsuntuk mengedit file konfigurasi dan aktifkan perutean dinamis BGP.Tekan tombol
iuntuk masuk ke mode edit; ubah nilai parameter bgpd menjadiyesuntuk mengaktifkan perutean dinamis BGP; tekan tombolEscuntuk keluar dari mode edit, lalu masukkan:wquntuk menyimpan konfigurasi.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 on-premises 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.Anda dapat melihat bahwa perangkat strongSwan telah berhasil mempelajari rute VPC di cloud, dan pusat data on-premises serta VPC di cloud dapat berkomunikasi secara normal.
Network Next Hop Metric LocPrf Weight Path *> 172.16.20.0/24 0.0.0.0 0 32768 i *> 172.16.21.0/24 0.0.0.0 0 32768 i * 192.168.10.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.20.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.40.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.50.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.55.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i
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 on-premises ke VPC Alibaba Cloud (192.168.0.0/16) melalui antarmuka jaringan virtual XFRM Tunnel 1 saat tunnel aktif. Nilai metrik rute ini diatur ke 100, memberikan prioritas lebih tinggi daripada rute untuk Tunnel 2. Jika Tunnel 1 mati, skrip ini 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 on-premises ke VPC Alibaba Cloud (192.168.0.0/16) melalui antarmuka jaringan virtual XFRM Tunnel 2 saat tunnel aktif. Nilai metrik rute ini diatur ke 101, memberikan prioritas lebih rendah daripada rute untuk Tunnel 1. Jika Tunnel 2 mati, skrip ini 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, dan 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 antarmuka publik eth0. 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 antarmuka publik eth0. ip link set ipsec0 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 1. ip link set ipsec1 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 2.PentingKonfigurasi untuk membuat antarmuka jaringan virtual bersifat sementara. Setelah perangkat strongSwan restart, Anda perlu menambahkan konfigurasi lagi dan menjalankan perintah
sudo systemctl restart strongswan;swanctl --load-all(perintah ini memerlukan izin root). Anda dapat merujuk ke konten berikut untuk menambahkan skrip startup ke perangkat strongSwan, sehingga antarmuka jaringan virtual ditambahkan secara otomatis setelah perangkat strongSwan restart.Ubah file konfigurasi strongSwan.
Cadangkan 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 { secret = ChangeMe*** } } ike-vco2 { secret = ChangeMe*** } } }
Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.
sudo systemctl restart strongswan swanctl --load-all watch swanctl --list-sasSeperti yang ditunjukkan dalam output berikut, jika status setelah
vco1danvco2adalahESTABLISHED, koneksi IPsec-VPN antara perangkat strongSwan dan gateway VPN telah berhasil dibuat. Namun, jaringan masih belum dapat berkomunikasi secara normal, dan Anda perlu mengonfigurasi rute.plugin 'sqlite': failed to load - sqlite_plugin_create not found and no plugin file available vco2: #5, ESTABLISHED, IKEv2, e9cf2986f8fdcb37_i 6be3688815c6a80f_r* local '120.___.202' @ 172.___[4500] remote '47.___.87' @ 47.___[4500] AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 established 1096s ago, rekeying in 82251s vco_child2: #5, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96 installed 1096s ago, rekeying in 83517s, expires in 85304s in cbc4e224, 0 bytes, 0 packets out 064a42f5, 0 bytes, 0 packets local 172.16.0.0/16 remote 192.168.0.0/16 vco1: #1, ESTABLISHED, IKEv2, 387cbee015ffc74b_i* 70f63f78844ef7de_r local '120.___.202' @ 172.___ remote '47.___.151' @ 47.___[4500] AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 established 1128s ago, rekeying in 82830s vco_child1: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96 installed 1128s ago, rekeying in 83970s, expires in 85272s in cd130507, 0 bytes, 0 packets out 6436d869, 0 bytes, 0 packets local 172.16.0.0/16 remote 192.168.0.0/16Konfigurasikan perutean dinamis BGP.
CatatanSetelah perangkat strongSwan restart, Anda perlu menambahkan konfigurasi BGP lagi.
Konfigurasikan 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 frrJalankan perintah
vi /etc/frr/daemonsuntuk mengedit file konfigurasi dan aktifkan perutean dinamis BGP.Tekan tombol
iuntuk masuk ke mode edit; ubah nilai parameter bgpd menjadiyesuntuk mengaktifkan perutean dinamis BGP; tekan tombolEscuntuk keluar dari mode edit, lalu masukkan:wquntuk menyimpan konfigurasi.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 on-premises 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.Anda dapat melihat bahwa perangkat strongSwan telah berhasil mempelajari rute VPC di cloud, dan pusat data on-premises serta VPC di cloud dapat berkomunikasi secara normal.
Network Next Hop Metric LocPrf Weight Path *> 172.16.20.0/24 0.0.0.0 0 32768 i *> 172.16.21.0/24 0.0.0.0 0 32768 i * 192.168.10.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.20.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.40.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.50.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i * 192.168.55.0/24 169.254.20.1 200 0 65535 i *> 169.254.10.1 100 0 65535 i
Single egress - perutean statis
Dalam mode perutean statis single-egress, Alibaba Cloud dapat secara proaktif mengalihkan traffic ke tunnel cadangan jika mendeteksi ancaman di 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 untuk mengarahkan traffic on-premises melalui tunnel cadangan.
Cadangkan 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.confBerdasarkan rencana di Contoh skenario, 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 on-premises. 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 on-premises. 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-sasSeperti yang ditunjukkan dalam output berikut, jika status setelah
vco1danvco2adalahESTABLISHED, koneksi IPsec-VPN antara perangkat strongSwan dan gateway VPN telah berhasil dibuat, dan pusat data on-premises serta VPC dapat saling berkomunikasi.plugin 'sqlite': failed to load - sqlite_plugin_create not found and no plugin file available vco2: #5, ESTABLISHED, IKEv2, e9cf2986f8fdcb37_i 6be3688815c6a80f_r* local '120.___.202' @ 172.___[4500] remote '47.___.87' @ 47.___[4500] AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 established 1096s ago, rekeying in 82251s vco_child2: #5, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96 installed 1096s ago, rekeying in 83517s, expires in 85304s in cbc4e224, 0 bytes, 0 packets out 064a42f5, 0 bytes, 0 packets local 172.16.0.0/16 remote 192.168.0.0/16 vco1: #1, ESTABLISHED, IKEv2, 387cbee015ffc74b_i* 70f63f78844ef7de_r local '120.___.202' @ 172.___ remote '47.___.151' @ 47.___[4500] AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 established 1128s ago, rekeying in 82830s vco_child1: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96 installed 1128s ago, rekeying in 83970s, expires in 85272s in cd130507, 0 bytes, 0 packets out 6436d869, 0 bytes, 0 packets local 172.16.0.0/16 remote 192.168.0.0/16
5. Verifikasi konektivitas dan ketersediaan tinggi
Verifikasi konektivitas antara pusat data on-premises dan VPC.
Dari klien di pusat data on-premises,
pinginstans ECS di VPC. Paket balasan echo mengonfirmasi koneksi yang berhasil.ping <alamat_IP_instans_ECS_di_VPC>Verifikasi ketersediaan tinggi koneksi IPsec-VPN.
Saat ping sedang berjalan, interupsi tunnel aktif.
Salah satu cara untuk menginterupsi tunnel adalah dengan mengubah kunci pra-bersamanya sehingga kunci di kedua ujung tidak lagi cocok.
Setelah Anda menginterupsi tunnel utama, Anda dapat menjalankan perintah
pinguntuk mengamati konektivitas antara kedua sisi. Anda akan menemukan bahwa trafficpingsempat terputus sebentar lalu kembali berkomunikasi. Hal ini menunjukkan bahwa setelah tunnel utama terputus, traffic secara otomatis berkomunikasi melalui tunnel sekunder.
FAQ
Bagaimana cara mengonfigurasi perangkat strongSwan ketika koneksi IPsec-VPN diasosiasikan dengan router transit?
Ketika koneksi IPsec-VPN diasosiasikan dengan router transit, konfigurasi di sisi perangkat strongSwan sama seperti yang dijelaskan di atas. Kami merekomendasikan penggunaan protokol perutean dinamis BGP. Setelah konfigurasi selesai, Anda dapat melihat rute sisi VPC yang dipelajari melalui protokol perutean dinamis BGP di perangkat strongSwan, dan kedua tunnel koneksi IPsec-VPN secara otomatis membentuk tautan ECMP.
Seperti yang ditunjukkan di bawah ini, setelah Anda memasukkan perintah show ip bgp, = multipath menunjukkan multipath. Anda dapat melihat bahwa status di sebelah kiri 192.168.10.0/24 adalah tanda sama dengan, menunjukkan kandidat multipath.
*********Z# show ip bgp
BGP table version is 42, local router ID is 169.254.13.2, vrf id 0
Default local pref 100, local AS 65530
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 172.16.20.0/24 0.0.0.0 0 32768 i
*> 172.16.21.0/24 0.0.0.0 0 32768 i
*= 192.168.10.0/24 169.254.20.1 0 0 65535 i
*> 169.254.10.1 0 0 65535 i
*= 192.168.20.0/24 169.254.20.1 0 0 65535 i
*> 169.254.10.1 0 0 65535 i
*= 192.168.40.0/24 169.254.20.1 0 0 65535 i
*> 169.254.10.1 0 0 65535 i
*= 192.168.50.0/24 169.254.20.1 0 0 65535 i
*> 169.254.10.1 0 0 65535 i
*= 192.168.55.0/24 169.254.20.1 0 0 65535 i
*> 169.254.10.1 0 0 65535 iApakah strongSwan mendukung IKEv1?
Didukung.
Saat Anda mengonfigurasi file /etc/strongswan/swanctl/swanctl.conf, tentukan version = 1.
Bagaimana cara menentukan Protected Data Flows (aliran data yang diminati)?
Saat Anda mengonfigurasi file /etc/strongswan/swanctl/swanctl.conf, tentukan blok CIDR spesifik dalam konfigurasi berikut. Pastikan mode Traffic Selector juga dikonfigurasi untuk koneksi IPsec-VPN di sisi Alibaba Cloud.
Untuk menentukan beberapa blok CIDR di salah satu sisi, baik perangkat strongSwan maupun 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 on-premises.
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)?
Untuk skenario non-NAT, yaitu alamat yang terlihat di dalam perangkat strongSwan adalah alamat IP publik, Anda hanya perlu mengubah field local_addrs setiap tunnel dalam file konfigurasi /etc/strongswan/swanctl/swanctl.conf menjadi alamat IP publik. Pertahankan konfigurasi lainnya tanpa perubahan.
connections {
vco1 {
local_addrs = 1.1.XX.XX # Tentukan alamat IP publik yang terikat pada kartu antarmuka jaringan perangkat strongSwan.
}
}Bagaimana cara mengonfigurasi tunnel tunggal?
Jika Gateway VPN yang Anda beli hanya mendukung koneksi IPsec-VPN tunnel tunggal, kami merekomendasikan agar 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.