AWS Site-to-Site VPN: luar, dalam dan awalan LAN
Tiga peranan alamat keliru pada satu AWS VPN: rakan luar, pautan /30 dalam dan awalan LAN terlindung. Bacanya dalam konfigurasi yang dimuat turun.
Kebanyakan kesilapan AWS Site-to-Site VPN ialah kesilapan alamat, dan ia berlaku sebelum mana-mana paket bergerak. Alamat luar terowong sampai ke rakan IPsec, alamat dalam membentuk pautan penghalaan antara mereka, dan awalan terlindung ialah tujuan pautan itu. Salin satu peranan ke peranan lain dan terowong naik sementara tiada apa yang dihalakan. Berikut urutan baca-semak-konfigurasi yang saya guna pada gateway pelanggan BGP, dengan nilai diambil daripada konfigurasi peranti yang dimuat turun, bukan daripada ingatan.
Tiga peranan alamat, satu terowong
Alamat luar adalah awam dan milik rakan IPsec: satu setiap terowong di sebelah AWS, dan identiti gateway pelanggan yang boleh dicapai di sebelah anda, dilaraskan kepada susunan NAT yang anda benar-benar ada. Alamat dalam adalah peribadi dan milik pautan logik, yang didokumenkan AWS sebagai /30 yang diambil daripada 169.254.0.0/16. Awalan terlindung ialah rangkaian VPC, setempat atau transit yang anda halakan dan iklankan melalui pautan itu.
Memberi awalan LAN sebagai alamat antara muka terowong ialah versi klasik kesilapan ini. Antara muka kelihatan dikonfigurasi, LAN tidak diiklankan, dan sebelah sana tiada laluan untuknya. Terowong boleh lulus ping dalamnya sendiri sedangkan setiap nama aplikasi tamat masa. Rujukan pilihan terowong menyenaraikan kekangan CIDR dalam, termasuk julat alamat yang mesti datang daripadanya.
Baca nilai daripada konfigurasi yang dimuat turun
Muat turun konfigurasi untuk model peranti khusus anda daripada sambungan, kemudian anggap jadual alamatnya sebagai sumber kebenaran. Konsol menunjukkan nilai yang sama setiap terowong: IP luar, CIDR dalam dan alamat rakan BGP di sebelah AWS. Kedua-dua terowong ialah objek berasingan dengan titik akhir luar berasingan dan /30 dalam berasingan, walaupun kedua-duanya membawa rangkaian terlindung 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 fail yang dimuat turun dan konsol langsung tidak sepadan, fail itu sudah lapuk. Muat turun semula daripada menyunting alamat secara manual, kerana ketidakpadanan antara pasangan dalam dan jiran yang dikonfigurasi rakan ialah kegagalan BGP senyap.
Bina pautan dengan alamat yang betul
Pada gateway Linux terowong ialah antara muka VTI atau XFRM, dan /30 dalam diletakkan pada antara muka itu. Dua terowong bermaksud dua antara muka dan dua jiran BGP, satu bagi setiap titik akhir AWS. Konvensyen yang dicetak AWS dalam konfigurasi peranti yang dimuat turun meletakkan gateway peribadi maya pada alamat pertama setiap /30 dalam dan gateway pelanggan anda pada alamat kedua, jadi anda mengambil alamat lebih tinggi dan berpeering dengan yang lebih rendah. Tiada apa di sini memerlukan alamat LAN.
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 fail untuk model peranti anda mencetak pasangan terbalik, gunakan nombornya dan kekalkan peraturan: alamat pada antara muka milik anda, alamat rakan milik AWS. Membalikkannya menghasilkan terowong yang tidak pernah mencapai Established, kerana jiran yang anda konfigurasi ialah alamat yang sudah dipegang antara muka anda sendiri.
Kekalkan mark dan kunci VTI selari dengan apa yang digunakan daemon IKE untuk mengikat SA anak pada antara muka, jika tidak trafik tiba di terowong tanpa antara muka untuk mendarat. Semak MTU terhadap laluan dan terhadap tetapan daemon IKE sendiri daripada menyalin nombor dari tapak lain.
Sahkan BGP sebelum anda mengesahkan laluan
IPsec naik membuktikan rakan bersetuju tentang persatuan keselamatan dan tidak lebih. Sesi BGP ialah rundingan berasingan melalui pautan dalam, jadi baca keadaan jiran dan pembilang awalan, kemudian bandingkan dengan apa yang anda mahu 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'Keadaan Established dengan sifar awalan diterima ialah masalah dasar atau pengiklanan, bukan masalah terowong. Ulang seluruh semakan pada terowong kedua; terowong pertama yang berfungsi memberitahu alamat itu munasabah, bukan bahawa terowong kedua dikonfigurasi sama sekali.
Ikut paket yang dihalakan, kemudian berhenti
Sebaik sesi membawa awalan, uji laluan dalam kedua-dua arah dari gateway: alamat sumber, hop seterusnya dan dasar keselamatan yang membenarkan trafik. Sesi BGP boleh naik sedangkan awalan tertentu yang diperlukan aplikasi anda ditapis, diringkaskan atau menghala ke antara muka yang salah.
Reachability Analyzer ialah alat sebelah AWS yang mengambil sumber, destinasi dan laluan, lalu melaporkan komponen mana dalam konfigurasi yang disokong menyekatnya. Gunakannya untuk menguji laluan dari VPC ke alamat gateway pelanggan anda, bukan dari hos aplikasi. Ia menganalisis konfigurasi dan tidak menghantar paket melalui dinding api setempat, jadi asingkan keputusannya daripada pembilang antara muka dan tangkapan paket anda sendiri.
Catat pasangan luar, /30 dalam dan awalan yang diiklankan bagi setiap terowong dalam satu jadual. Jadual itulah yang menjadikan perubahan seterusnya boleh disemak.