AWS Site-to-Site VPN: luar, dalam, dan prefiks LAN
Tiga peran alamat tertukar pada satu AWS VPN: peer luar, tautan /30 dalam, dan prefiks LAN yang dilindungi. Bacalah dari konfigurasi yang diunduh.
Sebagian besar kesalahan AWS Site-to-Site VPN adalah kesalahan alamat, dan dibuat sebelum satu paket pun bergerak. Alamat luar terowongan menjangkau peer IPsec, alamat dalam membentuk tautan perutean di antaranya, dan prefiks yang dilindungi adalah tujuan tautan itu. Salin satu peran ke peran lain dan terowongan menyala sementara tidak ada yang dirutekan. Berikut urutan baca-periksa-konfigurasi yang saya pakai pada gateway pelanggan BGP, dengan nilai diambil dari konfigurasi perangkat yang diunduh, bukan dari ingatan.
Tiga peran alamat, satu terowongan
Alamat luar bersifat publik dan milik peer IPsec: satu per terowongan di sisi AWS, dan identitas terjangkau gateway pelanggan di sisi Anda, disesuaikan dengan susunan NAT yang benar-benar Anda miliki. Alamat dalam bersifat privat dan milik tautan logis, yang didokumentasikan AWS sebagai /30 yang diambil dari 169.254.0.0/16. Prefiks yang dilindungi adalah jaringan VPC, lokal, atau transit yang Anda rutekan dan iklankan melalui tautan itu.
Menetapkan prefiks LAN sebagai alamat antarmuka terowongan adalah versi klasik kesalahan ini. Antarmuka tampak terkonfigurasi, LAN tidak diiklankan, dan sisi seberang tidak punya rute ke sana. Terowongan bahkan bisa lolos ping dalamnya sendiri sementara setiap nama aplikasi habis waktu. Referensi opsi terowongan mencantumkan batasan CIDR dalam, termasuk rentang alamat asalnya.
Baca nilainya dari konfigurasi yang diunduh
Unduh konfigurasi untuk model perangkat spesifik Anda dari koneksi, lalu perlakukan tabel alamatnya sebagai sumber kebenaran. Konsol menampilkan nilai yang sama per terowongan: IP luar, CIDR dalam, dan alamat peer BGP di sisi AWS. Kedua terowongan adalah objek terpisah dengan titik akhir luar terpisah dan /30 dalam terpisah, meski keduanya membawa jaringan terlindungi yang sama.
aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
--query 'VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,TunnelInsideCidr]'
aws ec2 describe-customer-gateways --customer-gateway-ids cgw-0123456789abcdef0 \
--query 'CustomerGateways[0].[IpAddress,BgpAsn]'Jika berkas yang diunduh dan konsol langsung tidak cocok, berkas itu kedaluwarsa. Unduh ulang alih-alih menyunting alamat dengan tangan, karena ketidakcocokan antara pasangan dalam dan tetangga terkonfigurasi peer adalah kegagalan BGP yang senyap.
Bangun tautan dengan alamat yang tepat di atasnya
Pada gateway Linux terowongan adalah antarmuka VTI atau XFRM, dan /30 dalam dipasang pada antarmuka itu. Dua terowongan berarti dua antarmuka dan dua tetangga BGP, satu per titik akhir AWS. Konvensi yang dicetak AWS dalam konfigurasi perangkat yang diunduh menempatkan gateway privat virtual pada alamat pertama setiap /30 dalam dan gateway pelanggan Anda pada alamat kedua, jadi Anda mengambil alamat yang lebih tinggi dan melakukan peering dengan yang lebih rendah. Tidak ada yang perlu alamat LAN di sini.
ip tunnel add tun0 mode vti local 203.0.113.10 remote 18.230.1.1 key 42
ip addr add 169.254.10.2/30 dev tun0
ip link set tun0 up mtu 1400
ip tunnel add tun1 mode vti local 203.0.113.10 remote 18.230.2.1 key 43
ip addr add 169.254.10.6/30 dev tun1
ip link set tun1 up mtu 1400Jika berkas untuk model perangkat Anda mencetak pasangan terbalik, gunakan angkanya dan pegang aturannya: alamat pada antarmuka milik Anda, alamat peer milik AWS. Membaliknya menghasilkan terowongan yang tidak pernah mencapai Established, karena tetangga yang Anda konfigurasi adalah alamat yang sudah dipegang antarmuka Anda sendiri.
Jaga mark dan kunci VTI selaras dengan apa yang dipakai daemon IKE untuk mengikat SA anak ke antarmuka, jika tidak lalu lintas tiba di terowongan tanpa antarmuka untuk mendarat. Periksa MTU terhadap jalur dan terhadap setelan daemon IKE sendiri alih-alih menyalin angka dari situs lain.
Verifikasi BGP sebelum memverifikasi rute
IPsec menyala membuktikan para peer sepakat soal asosiasi keamanan dan tidak lebih. Sesi BGP adalah negosiasi terpisah di atas tautan dalam, jadi baca status tetangga dan penghitung prefiks, lalu bandingkan dengan apa yang hendak Anda iklankan.
ip -s addr show dev tun0
vtysh -c 'show bgp summary'
vtysh -c 'show bgp neighbors 169.254.10.1'
vtysh -c 'show ip bgp neighbors 169.254.10.1 advertised-routes'Status Established dengan nol prefiks diterima adalah masalah kebijakan atau pengiklanan, bukan masalah terowongan. Ulangi seluruh pemeriksaan pada terowongan kedua; terowongan pertama yang bekerja memberi tahu Anda bahwa alamatnya masuk akal, bukan bahwa terowongan kedua sudah dikonfigurasi.
Ikuti paket yang dirutekan, lalu berhenti
Begitu sesi membawa prefiks, uji rute di kedua arah dari gateway: alamat sumber, hop berikutnya, dan kebijakan keamanan yang mengizinkan lalu lintas. Sesi BGP bisa menyala sementara prefiks tertentu yang dibutuhkan aplikasi Anda disaring, diringkas, atau diarahkan ke antarmuka yang salah.
Reachability Analyzer adalah alat sisi AWS yang mengambil sumber, tujuan, dan jalur, lalu melaporkan komponen mana dalam konfigurasi yang didukung yang memblokirnya. Gunakan untuk menguji jalur dari VPC ke alamat gateway pelanggan Anda, bukan dari host aplikasi. Alat ini menganalisis konfigurasi dan tidak mengirim paket melewati firewall lokal, jadi pisahkan putusannya dari penghitung antarmuka dan tangkapan paket Anda sendiri.
Catat pasangan luar, /30 dalam, dan prefiks yang diiklankan untuk setiap terowongan dalam satu tabel. Tabel itulah yang membuat perubahan berikutnya dapat ditinjau.