Mac anda memuat turun skrip dasar dan kemudian bertanya kepada skrip itu pengantara mana yang patut digunakan oleh sesuatu permintaan, manakala terowong hanya memutuskan bagaimana hop yang dipilih dicapai. Kedua-dua jawapan berakhir pada soket yang sama, jadi permintaan yang gagal selepas kedua-duanya berjaya kelihatan seperti satu kerosakan sedangkan ia dua. Mengasingkan muat turun daripada pemilihan, dan pemilihan daripada laluan, ialah sebahagian besar kerja dalam tiket ini. Urutan di bawah mengikut apa yang sebenarnya dilakukan macOS, dengan pemeriksaan yang menjadikan setiap peringkat kelihatan.

Di mana alamat PAC dan proksi berbeza

Alamat seperti https://config.corp.example/proxy.pac menamakan dokumen untuk dimuat turun, dan dokumen itu menamakan pelayan untuk menghantar trafik melaluinya. Menampal URL ke dalam medan hos proksi meminta klien membuka sambungan proksi ke pelayan fail yang tidak pernah mendengar sambungan sedemikian. Di dalam fail ada fungsi yang dipanggil klien bagi setiap permintaan, dan nilai pulangannya ialah hop seterusnya untuk satu destinasi itu. Perantaraan itu menjelaskan mengapa dua mesin pada perkhidmatan rangkaian yang sama boleh berkelakuan berbeza walaupun kedua-duanya memegang URL yang betul. Ia juga menjelaskan mengapa perubahan dasar berkuat kuasa tanpa sesiapa menyentuh proksi itu sendiri.

Baca skrip sebelum mentafsir apa-apa di hilir, kerana peraturan di dalamnya membawa pengecualian organisasi dan urutan ia digunakan. Julat luas awal boleh membayangi akhiran dalaman yang kemudian, dan hos yang sepatutnya jelas memintas proksi terus menggunakannya. Apabila seseorang menegaskan dasar itu salah, skrip ialah satu-satunya tempat dakwaan itu diselesaikan.

Skrip mesti diambil sebelum ia memutuskan apa-apa

Memuat turun dasar memerlukan nama yang diselesaikan dan laluan ke apa sahaja yang menyediakan fail itu, dan terowong yang bersambung tidak menjamin kedua-duanya. Jika hos hanya diselesaikan melalui DNS peribadi, penyelesai yang digunakan pada masa itu menentukan sama ada muat turun boleh bermula. Jika hos berada dalam julat peribadi, laluan mesti wujud dari mesin ini, bukan dari komputer riba rakan sekerja. Salinan yang dicache dalam sesi terdahulu menyembunyikan semua ini sehingga cache tamat atau mesin dimulakan semula.

Jalankan tiga pemeriksaan di bawah mengikut urutan dan berhenti pada kegagalan pertama, kerana peringkat itu tidak berkongsi punca. Bersama-sama ia menunjukkan sama ada dasar itu dikonfigurasikan, sama ada ia boleh dicapai, dan apa yang dipulangkannya.

scutil --proxy
networksetup -getautoproxyurl "Wi-Fi"
curl -sS -o /dev/null -w "%{http_code}\n" https://config.corp.example/proxy.pac

Perintah pertama mencetak kamus proksi untuk perkhidmatan aktif, termasuk mana-mana URL konfigurasi automatik yang dipegang sistem. Yang kedua melaporkan URL yang dilampirkan pada satu perkhidmatan bernama, yang penting pada komputer riba yang bergerak antara Wi-Fi dan Ethernet. Yang ketiga mengambil fail tanpa memaparkannya, jadi 404, tamat masa dan kegagalan penyelesai kekal boleh dibezakan. Jika perintah terakhir itu mengembalikan skrip manakala aplikasi masih gagal, masalahnya sudah melepasi pengambilan.

Apa yang sebenarnya dilangkau oleh jawapan DIRECT

Spesifikasi PAC memberi klien kosa kata kecil, dan DIRECT ialah salah satu perkataannya. Perkataan itu memberitahu klien supaya melangkau proksi bagi permintaan itu dan tidak mengatakan apa-apa tentang antara muka mana yang akan digunakan oleh soket selepas itu. Soket langsung pada terowong penuh masih keluar melalui VPN dan masih menunjukkan alamat keluar terowong kepada destinasi.

Membaca DIRECT sebagai di luar VPN ialah kesilapan yang menghantar orang ke panel tetapan yang salah. Imej cermin juga sama biasa, kerana proksi peribadi boleh dicapai melalui laluan berpecah manakala seluruh mesin kekal di luar terowong. Apa yang dilaporkan oleh destinasi ketika itu milik keluaran proksi itu sendiri, yang mungkin berada di negara lain. Menulis jangkaan untuk satu hos dalaman dan satu hos awam mendedahkannya dengan cepat, kerana skrip sering menjawab kedua-duanya secara berbeza. Sebaik sahaja anda tahu hop mana yang menghasilkan alamat itu, laporan itu tidak lagi misteri.

Tiga kegagalan yang muncul sebagai satu halaman ralat

Dasar mungkin gagal dimuat turun, proksi yang dipilih mungkin tidak dapat dicapai, dan permintaan yang sampai ke perkhidmatan mungkin masih ditolak di sana. Ketiga-tiganya datang sebagai tamat masa atau halaman ralat generik, dan tiada satu pun menamakan peringkat yang rosak. Menangkap keputusan di sebelah ralat ialah yang memisahkan mereka. Dua probe di bawah menguji hop yang dipilih oleh skrip, satu untuk setiap cabang yang boleh dikembalikannya.

curl -v --max-time 8 http://proxy.corp.example:8080/
curl -v --max-time 8 https://intranet.corp.example/

Sambungan selesai ke proksi memindahkan soalan kepada pengesahan atau kepada dasar proksi itu sendiri, yang mempunyai pemilik berbeza. Sambungan selesai ke hos dalaman tanpa proksi dalam laluan mengecualikan laluan dan menunjuk kepada dasar. Kedua-dua perintah mengabaikan kamus proksi macOS kecuali shell mengeksport pemboleh ubah proksi, jadi kosongkannya dahulu. Tiada probe membuktikan yang lain, dan itulah sebabnya satu halaman ralat mengelirukan begitu lama.

Apa yang perlu diserahkan bersama tiket

Hantar perkhidmatan rangkaian aktif, URL PAC, hasil penilaian untuk hos yang gagal, dan peringkat di mana ralat muncul. Keempat-empatnya membolehkan orang seterusnya menghasilkan semula keputusan itu daripada meneka lapisan mana yang terlibat. Tambah keadaan terowong pada saat ujian, kerana keputusan yang ditangkap sebelum sambungan semula sudah lapuk. Simpan juga revisi skrip, kerana fail dasar berubah tanpa notis dan jawapan semalam mungkin tidak lagi sah.

Rekodkan bagaimana klien berkelakuan apabila skrip tidak dapat diambil, kerana pelaksanaan berbeza dan keputusan proksi bukan suis mati seluruh peranti. Sesetengah beralih kepada sambungan langsung dan yang lain gagal tertutup, dan perbezaan itu mengubah sama ada gangguan kelihatan seperti proksi rosak atau dasar yang berfungsi. Sahkan tingkah laku untuk klien dan versi yang tepat sebelum bergantung padanya semasa insiden.

Artikel berkaitan