Mengapa VM perkakas VPN dalam Azure kehilangan laluan pulang
Perkakas VPN dalam VM Azure memerlukan UDR, bendera penghantaran kad rangkaian dan polisi tetamu yang sepadan. Ikut satu permintaan cawangan melalui ketiga-tiganya.
VM Azure yang menjalankan perkakas VPN terletak di dalam dua sistem keputusan yang berasingan. Azure menentukan dari mana paket meninggalkan subnet, menggunakan jadual laluan dan tetapan penghantaran kad rangkaian. Sistem pengendalian perkakas itu sendiri menentukan sama ada ia menghantar paket yang dinyahsulit itu ke hadapan. Terowong yang naik dengan sempurna masih boleh gagal pada sistem kedua, dan di situlah kebanyakan penggunaan ini berhenti.
Tiga pemilik satu laluan
Ambil rangkaian cawangan 192.168.50.0/24 dan subnet beban kerja 10.0.10.0/24, dengan perkakas di 10.0.0.4 dalam subnetnya sendiri. Satu permintaan menyentuh tiga konfigurasi berasingan.
| Decision | Configured in | How it fails |
|---|---|---|
| Where the workload subnet sends branch traffic | Azure route table entry | Traffic leaves the subnet and never reaches the appliance |
| Whether a NIC may accept traffic not addressed to it | Azure NIC IP forwarding | Packets arrive and disappear at the interface |
| Whether the guest forwards decrypted traffic | Guest OS or vendor appliance policy | Tunnel is up, workload is unreachable |
| Whether the workload accepts the source | NSG and service policy | Requests delivered, replies refused |
Setiap baris dimiliki pasukan berbeza dalam kebanyakan organisasi, sebab itulah kegagalan ini biasanya tiba sebagai tiga tiket dan bukan satu.
Laluan yang menunjuk ke perkakas
Kaitkan jadual laluan dengan subnet beban kerja dan beri awalan cawangan hop seterusnya jenis Virtual appliance dengan 10.0.0.4 sebagai alamat. Gunakan alamat peribadi perkakas yang boleh dicapai, jangan sekali-kali titik masuk VPN awamnya. Hop seterusnya mesti alamat yang subnet beban kerja sudah boleh capai. Biarkan baki penghalaan beban kerja seperti sedia ada, kecuali anda sengaja memutuskan untuk menggantikan laluan lalai.
Kekalkan perkakas dalam subnetnya sendiri, dan pastikan laluan yang menghantar trafik cawangan ke perkakas tidak turut menangkap laluan keluar perkakas itu sendiri. Gelung seperti itu kelihatan seperti terowong sihat tanpa jawapan, dan itu perkara yang sangat tidak menyenangkan untuk dinyahpepijat pada pukul 2 pagi.
Bendera kad rangkaian yang semua orang lupa
Azure mempunyai tetapan penghantaran IP bagi setiap kad rangkaian, dan ia dimatikan secara lalai. Ia wujud kerana kad yang menghantar menerima paket yang dialamatkan kepada sesuatu yang lain, dan membuangnya secara senyap ialah lalai selamat untuk semua orang lain.
az network nic update --resource-group rg-net --name appliance-nic --ip-forwarding true menghidupkannya untuk satu antara muka. Panduan Microsoft tentang penghantaran pada kad rangkaian memerlukan tetapan itu pada setiap kad bersambung yang menghantar trafik, jadi perkakas satu kad tetap memerlukannya pada kad itu.
Bendera itu bukan laluan dan bukan peraturan tembok api. Menghidupkannya memberi kebenaran dan tiada apa-apa lagi.
Apa yang tetamu lakukan dengan paket yang dinyahsulit
Sebaik terowong tamat, tindanan perkakas itu sendiri membuat keputusan seterusnya. Pada tetamu Linux, penghantaran IPv4 ialah tetapan masa jalan, dan sysctl -w net.ipv4.ip_forward=1 kekal sehingga but seterusnya. Simpan dalam fail di bawah /etc/sysctl.d/ sebaliknya. Perkakas vendor mempunyai persamaannya sendiri, dan arahan Linux yang ditampal ke platform vendor biasanya tidak melakukan apa-apa.
Polisi tembok api tetamu berasingan lagi, begitu juga kumpulan keselamatan rangkaian beban kerja. Membenarkan UDP 500 dan 4500 ke alamat awam VM melindungi terowong; ia tidak menyatakan apa-apa tentang sama ada permintaan cawangan yang dinyahsulit boleh sampai ke port beban kerja.
Ikut satu permintaan dan balasannya
Pilih satu aliran yang dibenarkan dan jejaki dari hujung ke hujung. Cawangan memerlukan laluan untuk 10.0.10.0/24 melalui sambungan tapak, perkakas memerlukan laluan penghantaran ke subnet beban kerja, dan subnet beban kerja memerlukan laluan balik ke arah cawangan.
Putuskan awal sama ada reka bentuk mengekalkan alamat sumber cawangan atau menterjemahkannya. NAT mengubah apa yang dilihat beban kerja, jadi peraturan aksesnya patut menerangkan model yang anda benar-benar pilih, bukan alamat gerbang yang diagak.
Jabat tangan yang berjaya membuktikan satu mata rantai itu. Laluan lengkap apabila balasan kembali melalui perkakas yang sama dan polisi beban kerja itu sendiri membenarkannya.