Akses UNC di kontainer Windows: nama dulu, identitas kemudian
Explorer host tidak membuktikan jalur DNS kontainer maupun identitas SMB-nya. Periksa resolusi nama dan port 445 di dalam kontainer sebelum izin.
Kontainer Windows yang membutuhkan share di sisi lain tunnel Anda gagal dengan dua cara yang saling independen, dan Explorer host tidak membuktikan salah satunya. Kontainer memiliki endpoint jaringan dan identitas prosesnya sendiri. Nama yang ter-resolve di desktop dan sesi yang diterima file server di sana menggambarkan desktop, bukan beban kerja.
Explorer host bukan bukti
Membuka share di host memakai klien DNS host, tabel routing host, dan akun yang login di host. Proses kontainer tidak mewarisi satu pun dari itu secara implisit, bahkan ketika kontainer berjalan di mesin yang sama dan klien VPN juga berjalan di sana. Batas pertama adalah jalur jaringan: dapatkah kontainer me-resolve nama, dan dapatkah ia membuka sesi TCP ke port SMB. Batas kedua adalah identitas: apakah file server menerima apa yang disajikan kontainer, dengan izin yang dibutuhkan beban kerja.
Memperlakukannya sebagai satu masalah menghasilkan lingkaran yang sudah dikenal: memperlebar aturan firewall untuk memperbaiki apa yang sebenarnya merupakan jawaban akses ditolak dari share.
Ikuti permintaan kontainer itu sendiri
Jaringan kontainer Windows dikelola oleh Host Networking Service, yang membuat endpoint dengan ruang nama jaringannya sendiri. Mode yang Anda pilih menentukan apakah endpoint diterjemahkan, dijembatani, atau disambungkan ke jaringan yang dibagi dengan host. Keputusan itu mengubah dua hal sekaligus: apa yang dapat di-resolve kontainer, dan alamat sumber apa yang dilihat file server.
Konfirmasikan apa yang diamati kontainer sendiri sebelum mengubah apa pun. Nama yang ter-resolve di luar bisa gagal di dalam, karena konfigurasi DNS kontainer bukan konfigurasi host, dan endpoint yang diterjemahkan bisa menyajikan sumber yang tidak diharapkan aturan file server.
docker exec -it app powershell -Command "Resolve-DnsName files.corp.example" docker exec -it app powershell -Command "Test-NetConnection files.corp.example -Port 445" docker exec -it app powershell -Command "Get-NetIPConfiguration"
Jika resolusi gagal, perbaiki DNS di konfigurasi jaringan alih-alih mengganti alamat. Mengganti nama dengan IP dapat mengubah perilaku autentikasi dan identitas server, yang mengubah satu masalah menjadi dua. Kebijakan klien VPN itu sendiri adalah hal berikutnya yang perlu diperiksa, karena bisa memperlakukan proses host dan lalu lintas yang berasal dari kontainer secara berbeda.
Identitas adalah keputusan terpisah
Huruf drive yang dipetakan pengguna interaktif bukan antarmuka aplikasi. Ia ada dalam satu sesi login, dan proses kontainer bukan bagian darinya. Gunakan jalur UNC dan beri beban kerja identitas yang didukung model penerapan. Di tempat domain mendukungnya, akun layanan terkelola grup (gMSA) menyediakan identitas terkelola melalui spesifikasi kredensial.
Panduan gMSA kontainer Microsoft menjelaskan susunan spesifikasi kredensial itu dan prasyaratnya, termasuk keanggotaan domain dan host yang mampu mengambil kredensial. Akun, pengambilan, identitas proses di dalam kontainer, dan izin share semuanya harus selaras. Login VPN bukan identitas itu, dan menanam kata sandi ke dalam image untuk mereproduksi sesi pengguna host menciptakan paparan yang tetap.
Jaga tahap yang gagal tetap terlihat
Kegagalan resolusi, penolakan koneksi, dan penolakan akses membutuhkan bukti yang berbeda. Masing-masing adalah pertanyaan DNS, pertanyaan routing atau penyaringan, dan pertanyaan autentikasi atau izin. Baca respons yang diterima kontainer, bukan kesalahan umum aplikasi.
Uji dengan identitas beban kerja itu sendiri dan uji juga penolakan.
Rencanakan penyambungan ulang
Jalur VPN putus. Saat tunnel kembali, endpoint bisa kembali dengan alamat terjemahan yang berbeda, dan sesi SMB yang ada bisa mati tanpa disadari aplikasi. Tangani itu di aplikasi: bangun kembali jalur dan identitas, ulangi operasi, dan rekonsiliasi operasi file dengan hasil tak diketahui alih-alih menganggap tidak terjadi apa-apa.
Catat mode jaringan, sumber DNS, dan susunan identitas di catatan penerapan. Ketiga fakta itulah yang akan menjadi pokok kegagalan berikutnya.