All Products
Search
Document Center

VPN Gateway:Konfigurasikan strongSwan

Last Updated:Sep 02, 2026

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

      Catatan

      Untuk 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

      Catatan

      Setelah 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 .

  1. Karena perangkat strongSwan memiliki dua alamat IP egress publik, buat dua gateway pelanggan.

  2. 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 .

  1. Karena perangkat strongSwan memiliki dua alamat IP egress publik, buat dua gateway pelanggan.

  2. 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 .

  1. Perangkat strongSwan memiliki satu alamat IP egress publik. Buat satu gateway pelanggan.

  2. 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:

  1. Perangkat strongSwan memiliki satu alamat IP egress publik. Buat satu gateway pelanggan.

  2. 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.

Catatan

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

Catatan

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 ACCEPT

2. Aktifkan penerusan traffic

echo 1 > /proc/sys/net/ipv4/ip_forward
Penting

Aktifkan penerusan IP agar perangkat strongSwan dapat meneruskan traffic antara jaringan on-premises dan VPC. Perintah berikut berlaku langsung dan tetap berlaku setelah reboot.

Klik untuk melihat konfigurasi permanen.

  1. Tambahkan konfigurasi penerusan ke /etc/sysctl.conf.

    vi /etc/sysctl.conf
  2. Verifikasi bahwa penerusan IP diaktifkan.

    net.ipv4.ip_forward = 1
  3. Terapkan konfigurasi.

    sudo sysctl -p

3. Instal perangkat lunak strongSwan

dnf install epel-release -y
dnf install strongswan -y

4. Konfigurasikan dual tunnel

Dual egress - perutean statis dan perutean dinamis BGP

Penting

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.

  1. 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.87 
  2. 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 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.
    Penting

    Konfigurasi 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.

    Klik untuk melihat Startup script.

    1. Buat file skrip.

      vi xfrm.sh
    2. Tambahkan konten berikut dan simpan file.

      sudo 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.
      sudo 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.
      sudo ip link set ipsec0 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 1.
      sudo ip link set ipsec1 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 2.
    3. Cari jalur mutlak skrip.

      sudo find / -name xfrm.sh
    4. Jalankan perintah sudo vi /etc/rc.d/rc.local untuk menambahkan jalur mutlak skrip ke file /etc/rc.d/rc.local.

      Tekan tombol i untuk masuk ke mode edit; tambahkan jalur mutlak skrip /root/xfrm.sh ke file /etc/rc.d/rc.local; tekan tombol Esc untuk keluar dari mode edit, lalu masukkan :wq untuk menyimpan konfigurasi.

    5. Berikan izin eksekusi ke file rc.local dan skrip xfrm.sh.

      sudo chmod +x /etc/rc.d/rc.local
      sudo chmod +x /root/xfrm.sh
  3. Ubah file konfigurasi strongSwan.

    1. Cadangkan file konfigurasi strongSwan asli.

      mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak
    2. Buat file konfigurasi strongSwan baru.

      vi /etc/strongswan/swanctl/swanctl.conf
    3. Tambahkan konfigurasi berikut. Setiap nilai parameter harus sesuai dengan konfigurasi tunnel Alibaba Cloud yang sesuai.

      Penting

      Untuk perutean statis, hapus komentar baris updown = /root/connect_1.sh dan updown = /root/connect_2.sh dalam 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.
         }
      }
  4. Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.

    sudo systemctl restart strongswan
    swanctl --load-all
    watch swanctl --list-sas

    Seperti yang ditunjukkan di bawah ini, jika status setelah vco1 dan vco2 adalah ESTABLISHED, 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/0
    

  5. Konfigurasikan rute.

    Merujuk ke bagian metode perutean yang akan Anda gunakan.

    Perutean dinamis BGP

    Catatan

    Setelah perangkat strongSwan restart, Anda perlu menambahkan konfigurasi BGP lagi.

    1. 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 ipsec1
    2. Instal FRR (Free Range Routing) untuk dukungan BGP.

      yum install -y frr
    3. Jalankan perintah vi /etc/frr/daemons untuk mengedit file konfigurasi dan aktifkan perutean dinamis BGP.

      Tekan tombol i untuk masuk ke mode edit; ubah nilai parameter bgpd menjadi yes untuk mengaktifkan perutean dinamis BGP; tekan tombol Esc untuk keluar dari mode edit, lalu masukkan :wq untuk menyimpan konfigurasi.

    4. Aktifkan dan mulai FRR.

      systemctl enable frr
      systemctl restart frr
    5. Tambahkan konfigurasi BGP. Ganti alamat IP dan nomor AS dengan nilai aktual Anda.

      1. Masuk ke antarmuka konfigurasi FRR.

        vtysh
      2. Masuk ke mode konfigurasi.

        config terminal
      3. Tambahkan 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
        
    6. Jalankan exit untuk keluar dari mode konfigurasi, lalu jalankan show ip bgp untuk 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.

    1. Buat dan edit skrip /root/connect_1.sh.

      vi /root/connect_1.sh
    2. Tambahkan 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
      fi

      Skrip 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.

    3. Buat dan edit skrip /root/connect_2.sh.

      vi /root/connect_2.sh
    4. Tambahkan 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
      fi

      Skrip 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.

    5. Berikan izin eksekusi ke kedua skrip.

      sudo chmod +x /root/connect_1.sh
      sudo chmod +x /root/connect_2.sh
    6. Restart proses strongSwan.

      sudo systemctl restart strongswan
    7. Verifikasi rute.

      route -n

      Static routing

Single egress - perutean dinamis BGP

Penting

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.

  1. 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.
    Penting

    Konfigurasi 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.

    Klik untuk melihat Startup script.

    1. Buat file skrip.

      vi xfrm.sh
    2. Tambahkan dan simpan konfigurasi berikut.

      sudo 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.
      sudo 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.
      sudo ip link set ipsec0 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 1.
      sudo ip link set ipsec1 up # Mulai antarmuka jaringan virtual XFRM untuk Tunnel 2.
    3. Cari jalur mutlak skrip.

      sudo find / -name xfrm.sh
    4. Jalankan perintah sudo vi /etc/rc.d/rc.local untuk menambahkan jalur mutlak skrip ke file /etc/rc.d/rc.local.

      Tekan tombol i untuk masuk ke mode edit; tambahkan jalur mutlak skrip /root/xfrm.sh ke file /etc/rc.d/rc.local; tekan tombol Esc untuk keluar dari mode edit, lalu masukkan :wq untuk menyimpan konfigurasi.

    5. Berikan izin eksekusi ke file rc.local dan skrip xfrm.sh.

      sudo chmod +x /etc/rc.d/rc.local
      sudo chmod +x /root/xfrm.sh
  2. Ubah file konfigurasi strongSwan.

    1. Cadangkan file konfigurasi strongSwan asli.

      mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak
    2. Buat file konfigurasi strongSwan baru.

      vi /etc/strongswan/swanctl/swanctl.conf
    3. Konfigurasi 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***
         }
         }
      }
  3. Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.

    sudo systemctl restart strongswan
    swanctl --load-all
    watch swanctl --list-sas

    Seperti yang ditunjukkan dalam output berikut, jika status setelah vco1 dan vco2 adalah ESTABLISHED, 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/16
    

  4. Konfigurasikan perutean dinamis BGP.

    Catatan

    Setelah perangkat strongSwan restart, Anda perlu menambahkan konfigurasi BGP lagi.

    1. 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 ipsec1
    2. Instal FRR (Free Range Routing) untuk dukungan BGP.

      yum install -y frr
    3. Jalankan perintah vi /etc/frr/daemons untuk mengedit file konfigurasi dan aktifkan perutean dinamis BGP.

      Tekan tombol i untuk masuk ke mode edit; ubah nilai parameter bgpd menjadi yes untuk mengaktifkan perutean dinamis BGP; tekan tombol Esc untuk keluar dari mode edit, lalu masukkan :wq untuk menyimpan konfigurasi.

    4. Aktifkan dan mulai FRR.

      systemctl enable frr
      systemctl restart frr
    5. Tambahkan konfigurasi BGP. Ganti alamat IP dan nomor AS dengan nilai aktual Anda.

      1. Masuk ke antarmuka konfigurasi FRR.

        vtysh
      2. Masuk ke mode konfigurasi.

        config terminal
      3. Tambahkan 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
        
    6. Jalankan exit untuk keluar dari mode konfigurasi, lalu jalankan show ip bgp untuk 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

Penting

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.

  1. Cadangkan file konfigurasi strongSwan asli.

    mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak
  2. Buat file konfigurasi strongSwan baru.

    vi /etc/strongswan/swanctl/swanctl.conf
  3. Berdasarkan 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***
       }
    }
  4. Restart proses strongSwan, muat ulang konfigurasi strongSwan, dan periksa status tunnel.

    sudo systemctl restart strongswan
    swanctl --load-all
    watch swanctl --list-sas

    Seperti yang ditunjukkan dalam output berikut, jika status setelah vco1 dan vco2 adalah ESTABLISHED, 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

  1. Verifikasi konektivitas antara pusat data on-premises dan VPC.

    Dari klien di pusat data on-premises, ping instans ECS di VPC. Paket balasan echo mengonfirmasi koneksi yang berhasil.

    ping <alamat_IP_instans_ECS_di_VPC>
  2. Verifikasi ketersediaan tinggi koneksi IPsec-VPN.

    1. 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.

    2. Setelah Anda menginterupsi tunnel utama, Anda dapat menjalankan perintah ping untuk mengamati konektivitas antara kedua sisi. Anda akan menemukan bahwa traffic ping sempat 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 i

Apakah 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?

Penting

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.

Klik di sini untuk melihat contoh konfigurasi tunnel tunggal

Contoh konfigurasi tunnel tunggal

Contoh skenario

Gambar berikut menunjukkan penerapan tunnel tunggal di mana perangkat strongSwan membuat koneksi IPsec-VPN dengan Alibaba Cloud.

Perencanaan alamat IP

Sisi pusat data on-premises

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

  • Gateway VPN

    • Alamat IPsec: 47.XX.XX.151

      Catatan

      Setelah Anda membuat instans gateway VPN, sistem secara otomatis menetapkan alamat IPsec ke instans gateway VPN tersebut.

Rencana konfigurasi parameter VPN

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

Sebelum mengonfigurasi perangkat strongSwan, lengkapi hal berikut di sisi Alibaba Cloud: Create a VPN gateway, Create a customer gateway, Create an IPsec-VPN connection, dan Configure routes for the VPN gateway. Untuk informasi lebih lanjut, lihat Single-tunnel mode.

Saat membuat koneksi IPsec-VPN, atur Routing Mode ke Protected Data Flows:

  • 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.

Konfigurasikan perangkat strongSwan

Catatan

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 ACCEPT

2. Aktifkan penerusan traffic

echo 1 > /proc/sys/net/ipv4/ip_forward
Penting

Aktifkan penerusan IP agar perangkat strongSwan dapat meneruskan traffic antara jaringan on-premises dan VPC. Perintah berikut berlaku langsung dan tetap berlaku setelah reboot.

Klik untuk melihat konfigurasi permanen.

  1. Tambahkan konfigurasi penerusan ke /etc/sysctl.conf.

    vi /etc/sysctl.conf
  2. Verifikasi bahwa penerusan IP diaktifkan.

    net.ipv4.ip_forward = 1
  3. Terapkan konfigurasi.

    sudo sysctl -p

3. Instal perangkat lunak strongSwan

dnf install epel-release -y
dnf install strongswan-5.9.10 -y

4. Konfigurasikan tunnel

Konfigurasikan tunnel berdasarkan selector traffic berbasis kebijakan strongSwan.

  1. Cadangkan file konfigurasi strongSwan asli.

    mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak
  2. Buat file konfigurasi strongSwan baru.

    vi /etc/strongswan/swanctl/swanctl.conf
  3. Konfigurasi berikut mirip dengan contoh dual-tunnel. Perbedaan utama: koneksi tunggal, selector traffic berbasis kebijakan, dan tanpa antarmuka XFRM. Tambahkan dan simpan konfigurasi berikut.

    connections {
       vco1 {
          version = 2
          local_addrs  = 172.16.20.80      # Alamat IP pribadi on-premises.
          remote_addrs = 47.XX.XX.151      # Alamat IPsec di sisi Alibaba Cloud.
          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 on-premises (dipetakan NAT).
          }
          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
             }
          }
       }
    
    }
    
    secrets {
       ike-vco1 {
          secret = ChangeMe***
       }
       }
    }
    
  4. Restart proses strongSwan dan muat ulang konfigurasi strongSwan.

    systemctl restart strongswan
    swanctl --load-all
  5. Periksa status tunnel.

    watch swanctl --list-sas 

    Seperti yang ditunjukkan dalam output berikut, jika status setelah vco1 adalah ESTABLISHED, koneksi IPsec-VPN antara perangkat strongSwan dan gateway VPN telah berhasil dibuat.

    Every 2.0s: swanctl --list-sas
    
    plugin 'sqlite': failed to load - sqlite_plugin_create not found and no plugin file available
    vco1: #1, ESTABLISHED, IKEv2, 76231680bedc2279_i* 5c1e6354830e3df7_r
       local  '11.___' @ 10.0.0.1[4500]
       remote '3.3.___' @ 3.3.___[4500]
       AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
       established 3041s ago, rekeying in 81142s
       vco_child1: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96
          installed 3041s ago, rekeying in 81881s, expires in 83359s
          in  ca0e6ace, 255276 bytes,  3039 packets,      0s ago
          out c7a8b4c2, 255276 bytes,  3039 packets,      0s ago
          local  10.0.0.0/16
          remote 172.16.0.0/16

    Seperti yang ditunjukkan dalam gambar, koneksi IPsec-VPN berhasil dibuat antara perangkat strongSwan dan gateway VPN.

5. Verifikasi

Verifikasi konektivitas antara perangkat strongSwan dan VPC:

Dari perangkat strongSwan, ping instans ECS di VPC. Paket balasan echo mengonfirmasi koneksi yang berhasil.

ping <alamat_IP_instans_ECS_di_VPC>