IPSec VPN antara Amazon VPC dan Linux Server

9

Saya mencoba mengatur koneksi IPSec VPN antara jaringan perusahaan kami dan Cloud Privat Amazon, menggunakan sistem VPN mereka dan server Linux. Sayangnya, satu-satunya panduan yang saya temukan membahas cara mengatur terowongan menggunakan mesin Linux host dan mendapatkan mesin linux itu untuk mengakses instance VPC, tetapi tidak ada diskusi yang dapat saya temukan online tentang cara mendapatkan instance untuk mengakses jaringan perusahaan (atau sisa internet melalui jaringan itu).

Informasi jaringan

Local subnet: 10.3.0.0/25
Remote subnet: 10.4.0.0/16

Tunnel 1:
  Outside IP Addresses:
    - Customer Gateway:        : 199.167.xxx.xxx
    - VPN Gateway              : 205.251.233.121

  Inside IP Addresses
    - Customer Gateway         : 169.254.249.2/30
    - VPN Gateway              : 169.254.249.1/30

Tunnel 2:
  Outside IP Addresses:
    - Customer Gateway:        : 199.167.xxx.xxx
    - VPN Gateway              : 205.251.233.122

  Inside IP Addresses
    - Customer Gateway         : 169.254.249.6/30
    - VPN Gateway              : 169.254.249.5/30

Inilah /etc/ipsec-tools.conf saya:

flush;
spdflush;

spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

spdadd 169.254.249.1/30 169.254.249.2/30 any -P in ipsec
   esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;

spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

spdadd 169.254.249.5/30 169.254.249.6/30 any -P in ipsec
   esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;



spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

spdadd 10.4.0.0/16 169.254.249.2/30 any -P in ipsec
   esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;

spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

spdadd 10.4.0.0/16 169.254.249.6/30 any -P in ipsec
   esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;

Inilah /etc/racoon/racoon.conf saya:

remote 205.251.233.122 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

remote 205.251.233.121 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

BGP bekerja dengan baik, jadi saya tidak akan memposting konfigurasi tersebut.

Inilah yang berhasil

  • Dari kotak Linux, saya bisa melakukan ping titik akhir lokal (169.254.249.2/169.254.249.6), dan setara jarak jauh mereka (169.254.249.1/169.254.249.5).
  • Saya juga bisa ping instans di VPC, SSH ke mereka, dll.
  • Dari instance jarak jauh di VPC, saya bisa melakukan ping titik akhir lokal dan jarak jauh juga
  • Saya tidak bisa melakukan ping ke server lokal pada subnet 10.3.0.0/25

Saya berasumsi saya kehilangan sesuatu yang sederhana, tetapi saya sudah mencoba menambahkan entri ke ipsec-tools.conf untuk mencerminkan {endpoint lokal} <-> {subnet jarak jauh}, menggunakan {subnet lokal} <-> {endpoint jarak jauh}, tapi sepertinya itu tidak berhasil.

Ketika saya melakukan ping dari {remote instance} ke {server lokal}, ping habis. Paket-paket terlihat pada antarmuka eth0 (meskipun jaringan lokal pada eth1).

Google tidak banyak membantu; itu menunjukkan hanya orang yang mencoba menggunakan OpenSwan, atau memiliki masalah serupa tetapi dengan router perangkat keras, atau menggunakan alat yang lebih tua.

Dan Udey
sumber
Saya bukan ahli tetapi tampaknya dari sini wiki.debian.org/IPsec bahwa Anda harus secara manual menambahkan rute ke jaringan lokal jarak jauh ketika menggunakan ipsec, saya mungkin salah meskipun ..
user993553

Jawaban:

3

Yah, saya curang :) Saya memasang Astaro gateway yang secara resmi didukung oleh Amazon dan kemudian menggunakannya untuk memodelkan saya sendiri. Anda bisa SSH masuk ke unit Astaro dan lihat bagaimana mereka mengatur semuanya. Tentu saja, Anda dapat tetap menggunakan unit Astaro jika Anda ingin membayar untuk itu.

Petter
sumber
1
Bisakah Anda jelaskan solusi Anda? Apa yang Anda maksud dengan "model saya sendiri"? Saya terjebak pada masalah yang sama, dan akan tertarik pada bagaimana Anda menyelesaikannya, terima kasih!
Maks
3

Menemukannya. Harus mengubah ipsec-tools.conf saya ke ini:

flush;
spdflush;

# Generic routing
spdadd 10.4.0.0/16 10.3.0.0/25 any -P in  ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 10.3.0.0/25 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

# Tunnel 1
spdadd 169.254.249.1/30 169.254.249.2/30 any -P in  ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

spdadd 10.4.0.0/16 169.254.249.2/30 any -P in  ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

# Tunnel 2
spdadd 169.254.249.5/30 169.254.249.6/30 any -P in  ipsec esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

spdadd 10.4.0.0/16 169.254.249.6/30 any -P in  ipsec esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

Dan ubah racoon.conf saya menjadi ini:

path pre_shared_key "/etc/racoon/psk.txt";

remote 205.251.233.122 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

remote 205.251.233.121 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

sainfo address 10.3.0.0/25 any address 10.4.0.0/16 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

Namun, konfigurasi ini seperti yang saya pahami hanya akan merutekan lalu lintas antara 10.3.0.0/25 dan 10.4.0.0/16 melalui terowongan pertama (via xxx121). Saya akan memperbarui jawabannya ketika saya mengetahuinya.

Dan Udey
sumber
Saya juga terjebak dengan masalah ini untuk sementara waktu dan jawaban Anda sangat membantu. Apakah Anda menemukan solusi untuk membuat routing di kedua terowongan? Saya menambahkan bagian 'Perutean generik' dengan IP terowongan lain tetapi belum mengujinya.
Will
Saya tidak menemukan solusi yang baik untuk perutean di kedua terowongan, tapi saya pikir itu masuk akal dalam satu konteks. Idenya di sini adalah untuk menyediakan redundansi, dan idealnya itu termasuk redundansi di kedua ujungnya. Anda dapat mengatur server terpisah pada terowongan kedua dan memberikan dua rute ke VPN Anda (mis. Dengan menyediakan server standar Anda dengan dua rute, satu untuk setiap kotak). Entah itu, atau Anda memicu kegagalan manual dengan semacam sistem pemantauan. Tidak ada solusi yang benar-benar 'optimal', tetapi yang pertama memberikan redundansi di sisi Anda juga.
Dan Udey
0

Apakah Anda tahu alasan menggunakan "wajib" daripada "digunakan" untuk konfigurasi setkey? Apakah Anda juga tahu apakah itu penting dalam urutan apa saya menempatkan pernyataan dalam bagian remote dan sainfo dan secara keliru menduplikasi pernyataan tertentu? Sebagai contoh:

#original
remote 205.251.233.121 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

vs.

#edited
remote 205.251.233.121 {
        generate_policy off;                           #moved/duplicated
        lifetime time 28800 seconds;
        proposal {
                dh_group 2;                           #moved
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
        }
         exchange_mode main;                      #moved
        generate_policy off;                   #duplicated/moved
}

Apakah Anda juga mengetahui cara membuat lalu lintas mengalir di kedua terowongan?

Terima kasih atas bimbingannya.

DPfiler
sumber
Selamat datang di Serverfault. Sepertinya Anda mencoba mengajukan pertanyaan di bagian jawaban dari pertanyaan poster lain. Jika Anda memiliki pertanyaan baru, silakan posting sebagai pertanyaan baru dengan pergi ke serverfault.com dan mengklik tombol merah besar "Ajukan Pertanyaan".
vjones
Saya akan, terima kasih atas tindak lanjutnya.
DPfiler