«Hos menggunakan fail PAC ini, jadi saya letakkan URL yang sama dalam VM» ialah ayat yang wajar dan rancangan yang tidak lengkap. URL PAC menunjuk kepada skrip dasar, bukan proksi. Sehingga tetamu dapat mengambil skrip itu, menilainya dengan alamat tetamu sendiri dan kemudian mencapai mana-mana proksi yang dinamakan skrip, URL itu hanyalah rentetan dalam medan tetapan. Sebahagian besar kekeliruan tentang dasar proksi dalam mesin maya datang daripada menganggap satu baris itu sebagai keseluruhan konfigurasi.

URL PAC ialah skrip, bukan proksi

Fail itu mengandungi fungsi yang mengambil URL dan hos dan mengembalikan penerangan proksi atau perkataan DIRECT. Tiada apa-apa dalam URL yang memberitahu aplikasi ke mana hendak menghantar trafik; keputusan itu dibuat semasa runtime, di dalam skrip, dengan data yang diminta skrip daripada platform. Dialog tetapan yang menerima URL PAC sebenarnya menerima penunjuk kepada prosedur keputusan.

Perbezaan itulah sebabnya menyalin URL boleh kelihatan berjaya. Medan diisi, tetapan disimpan, dan kegagalan hanya muncul kemudian, apabila skrip tidak dapat diambil atau apabila ia mengembalikan proksi yang tidak dapat dicapai oleh tetamu.

Keempat-empat langkah gagal dengan cara masing-masing

Di dalam tetamu, empat perkara mesti berlaku mengikut urutan, dan setiap satu mempunyai tandanya sendiri. Tetamu mengambil fail PAC. Aplikasi menilai skrip untuk URL yang diminta menggunakan maklumat tempatan. Proksi yang dipilih diselesaikan dan dicapai. Pengesahan berlaku jika proksi memerlukannya.

Mulakan dengan membuktikan pengambilan, kerana tanpa itu semua yang berikutnya tidak bermakna. Fail PAC pada pelayan persendirian memerlukan laluan yang dibenarkan ke pelayan itu sebelum mana-mana peraturan dapat membantu, dan pilihan proksi di dalam skrip yang tidak dapat dicapai tidak dapat mencipta laluan yang akan mengambilnya:

curl -sS -o /dev/null -w '%{http_code}\n' http://pac.corp.example/proxy.pac
getent hosts pac.corp.example

Jika permintaan itu gagal dari tetamu dan berjaya dari hos, masalahnya ialah laluan tetamu ke pelayan PAC, bukan kandungan skrip. Jika ia mengembalikan fail JavaScript, teruskan ke langkah kedua dan ketahui apa yang diputuskan skrip untuk konteks tetamu.

Skrip yang sama membuat keputusan berbeza di dalam VM

Fungsi PAC boleh memeriksa hos yang diminta dan maklumat tentang mesin yang menjalankan penilaian. Peraturan yang dibina atas alamat klien sendiri, contohnya yang memeriksa alamat antara muka atau keahlian subnet, akan melihat alamat tetamu dan bukan alamat hos fizikal. Di belakang NAT sebelah hos, kedua-duanya alamat yang berbeza, jadi skrip yang sama boleh memilih proksi lain atau kembali kepada DIRECT di dalam VM.

Itu bukan pepijat dalam skrip. Skrip itu melakukan tepat apa yang ditulis untuknya, dengan input yang berbeza, dan itu menjelaskan laporan yang mengelirukan di mana hos menggunakan proksi dan tetamu bersambung terus. Reproduksi keputusan itu dan bukannya menaakulnya: penilai PAC yang mengambil alamat dan URL, jika distribusi anda menyertakannya, menyelesaikan persoalan dengan satu arahan. Jika tidak, uji dengan aplikasi yang benar-benar akan digunakan, dan baca log proksinya dan bukannya meneka.

Jangan membuat kesimpulan bahawa tetamu mewarisi tetapan proksi hos kerana trafiknya melalui terjemahan sebelah hos. Terjemahan rangkaian meneruskan paket; ia tidak menyalin konfigurasi aplikasi, dan proksi sistem ialah konfigurasi aplikasi.

Alat yang tidak membaca PAC sama sekali

Alat baris arahan ialah sempadan yang tersendiri, dan di sinilah banyak masa terbuang. curl tidak melaksanakan fail PAC, seperti yang dinyatakan dengan jelas oleh dokumentasi proksi . Mengarahkan pemboleh ubah proksi ke URL muat turun PAC tidak menjadikan skrip itu titik akhir proksi; alat itu akan cuba bercakap HTTP dengan fail JavaScript dan gagal dengan cara yang kelihatan seperti masalah rangkaian.

Perkara yang sama berlaku kepada banyak pengurus pakej, runtime bahasa dan alat binaan, yang hanya mematuhi pemboleh ubah proksi eksplisit atau konfigurasi mereka sendiri. Jika ujian yang anda ambil berat ialah alat CLI, konfigurasikannya dengan proksi konkrit yang akan dipilih oleh skrip PAC, dan catat bagaimana anda memperoleh pilihan itu supaya orang seterusnya boleh mengulanginya.

Untuk aplikasi desktop di Linux, tetapan sistem mesti ditetapkan kepada mod automatik dan juga diberi URL; URL yang disimpan semasa mod masih manual tidak melakukan apa-apa. Periksa kedua-duanya, dan periksa di dalam tetamu:

gsettings get org.gnome.system.proxy mode
gsettings get org.gnome.system.proxy autoconfig-url

DIRECT juga satu keputusan

Hasil PAC DIRECT bermakna aplikasi memintas proksi HTTP, bukan bahawa ia telah terlepas dari rangkaian. Sambungan yang terhasil masih boleh mengikut laluan sistem pengendalian melalui terowong, atau gagal atas sebab yang tidak ada kaitan dengan penggunaan proksi. Sebaliknya, hasil proksi menerangkan permintaan satu aplikasi, bukan setiap proses dalam tetamu.

Jadi sahkan dalam arah yang ditulis oleh keperluan itu. Jika keperluannya ialah «aplikasi ini mencapai laman dalaman», buktikan aplikasi itu mencapainya, dan catat proksi atau laluan mana yang membawanya. Jika keperluannya ialah «VM berada pada rangkaian korporat», pelayar yang berfungsi melalui proksi terpilih ialah bukti untuk pelayar itu dan tidak lebih.

Betulkan rantaian di dalam tetamu dan bukannya mematikan terowong hos atau melonggarkan dasar penghantaran supaya ujian lulus. Rantaian itu mempunyai empat pautan, dan perubahan yang melangkau salah satunya akan bertahan sehingga skrip dikemas kini atau alamat tetamu berubah pada kali berikutnya.

Artikel berkaitan