Bagikan melalui


Menyiapkan debug kernel jaringan KDNET secara manual

Alat Penelusuran Kesalahan untuk Windows mendukung penelusuran kesalahan kernel melalui jaringan. Artikel ini menjelaskan cara menyiapkan debugging jaringan secara manual.

Penting

Menyiapkan debugging jaringan secara manual adalah proses yang kompleks dan rawan kesalahan. Untuk menyiapkan penelusuran kesalahan jaringan secara otomatis, lihat Menyiapkan penelusuran kesalahan kernel jaringan KDNET secara otomatis. Menggunakan utilitas KDNET sangat disarankan untuk semua pengguna debugger.

Komputer yang menjalankan debugger disebut komputer host , dan komputer yang sedang di-debug disebut komputer target . Komputer host harus menjalankan Windows 7 atau yang lebih baru, dan komputer target harus menjalankan Windows 8 atau yang lebih baru.

Debugging melalui jaringan memiliki keuntungan berikut dibandingkan dengan debugging melalui jenis konektivitas lainnya.

  • Komputer host dan target dapat berada di mana saja di jaringan lokal.
  • Sangat mudah untuk men-debug banyak komputer target dari satu komputer host.
  • Diberikan dua komputer mana pun, kemungkinan besar keduanya memiliki adaptor Ethernet. Kecil kemungkinan keduanya memiliki port serial atau 1394 port.
  • Penelusuran kesalahan jaringan lebih cepat daripada penelusuran kesalahan port serial.

Adaptor jaringan yang didukung

Komputer host dapat menggunakan adaptor jaringan apa pun, tetapi komputer target harus menggunakan adaptor jaringan yang didukung oleh Alat Penelusuran Kesalahan untuk Windows. Untuk daftar adaptor jaringan yang didukung, lihat NIC Ethernet yang Didukung untuk penelusuran kesalahan kernel jaringan di Windows 11 dan NIC Ethernet yang Didukung untuk penelusuran kesalahan kernel jaringan di Windows 10.

Menginstal Alat Debugging untuk Windows

Pastikan bahwa Alat Debugging untuk Windows diinstal pada sistem host. Untuk informasi tentang mengunduh dan menginstal alat debugger, lihat Alat Debugger untuk Windows.

Menentukan alamat IP komputer host

Gunakan salah satu prosedur berikut untuk menentukan alamat IP komputer host.

  1. Pada komputer host, buka prompt perintah dan masukkan perintah berikut:

    ipconfig
    

    Catat alamat IPv4 adaptor jaringan yang ingin Anda gunakan untuk debugging.

  2. Pada komputer target, buka prompt perintah dan masukkan perintah berikut, di mana YourIPAddress adalah alamat IP komputer host:

    ping -4 <YourIPAddress>
    

Pilih port untuk penelusuran kesalahan jaringan

Pilih nomor port untuk debugging pada host dan komputer target. Anda dapat memilih nomor apa pun dari 49152 hingga 65535. Rentang yang direkomendasikan adalah 50000 - 50039. Port yang Anda pilih dibuka untuk akses eksklusif oleh debugger yang berjalan di komputer host. Berhati-hatilah untuk memilih nomor port yang tidak digunakan oleh aplikasi lain yang berjalan di komputer host.

Nota

Rentang nomor port yang dapat digunakan untuk penelusuran kesalahan jaringan mungkin dibatasi oleh kebijakan jaringan perusahaan Anda. Tidak ada cara untuk mengetahui dari komputer host apa batasannya. Untuk menentukan apakah kebijakan perusahaan Anda membatasi rentang port yang dapat digunakan untuk penelusuran kesalahan jaringan, tanyakan kepada administrator jaringan Anda.

Jika Anda menyambungkan beberapa komputer target ke satu komputer host, setiap koneksi harus memiliki nomor port yang unik. Misalnya, jika Anda menyambungkan 100 komputer target ke satu komputer host, Anda dapat menetapkan port 50000 ke koneksi pertama, port 50001 ke koneksi kedua, dan sebagainya.

Nota

 Komputer host yang berbeda dapat menggunakan rentang port yang sama (50000 hingga 50099) untuk menyambungkan ke 100 komputer target lainnya.

Menyiapkan komputer target

  1. Verifikasi bahwa komputer target memiliki adaptor jaringan yang didukung. Untuk informasi selengkapnya, lihat:

  2. Sambungkan adaptor yang didukung ke hub jaringan atau switch menggunakan kabel jaringan yang sesuai.

Penting

Sebelum menggunakan BCDEdit untuk mengubah informasi boot, Anda mungkin perlu menangguhkan sementara fitur keamanan Windows, seperti BitLocker dan Boot Aman, pada PC pengujian. Aktifkan kembali fitur keamanan ini saat pengujian selesai, dan kelola PC pengujian dengan tepat saat fitur keamanan dinonaktifkan.

  1. Dalam prompt perintah yang ditingkatkan, masukkan perintah berikut, di mana w.x.y.z adalah alamat IP komputer host, dan n adalah nomor port pilihan Anda:

    bcdedit /debug on
    
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    
  2. BCDEdit menampilkan kunci yang dihasilkan secara otomatis. Salin kunci dan simpan di perangkat penyimpanan yang dapat dilepas, seperti USB flash drive. Anda memerlukan kunci saat memulai sesi debug di komputer host.

  3. Gunakan Device Manager untuk menentukan bus PCI, perangkat, nomor perangkat, dan nomor fungsi untuk adaptor yang ingin Anda gunakan untuk debugging. Nilai-nilai ini ditampilkan di Manajer Perangkat di bawah Lokasi pada tab Umum . Kemudian dalam prompt perintah yang ditingkatkan, masukkan perintah berikut, di mana b, d, dan f adalah nomor bus, nomor perangkat, dan jumlah fungsi adaptor:

    bcdedit /set "{dbgsettings}" busparams b.d.f
    
  4. PC target akan di-boot ulang setelah debugger kernel terpasang.

Nota

Jika Anda ingin menginstal peran Hyper-V di komputer target, lihat Menyiapkan debugging jaringan host mesin virtual.

Hati-hati Jika komputer target Anda berada di stasiun docking dan Anda telah mengaktifkan penelusuran kesalahan jaringan untuk adaptor jaringan yang merupakan bagian dari stasiun docking tersebut, jangan lepaskan komputer dari stasiun docking. Jika Anda perlu menghapus komputer target dari stasiun docking, nonaktifkan penelusuran kesalahan kernel terlebih dahulu. Untuk menonaktifkan penelusuran kesalahan kernel pada komputer target, buka prompt perintah sebagai administrator dan masukkan perintah bcdedit /debug off. Restart komputer target.

Mulai sesi debugging

Pastikan bahwa adaptor jaringan komputer host tersambung ke hub jaringan atau switch menggunakan kabel jaringan yang sesuai.

Di komputer host, buka WinDbg. Pada menu File , pilih Kernel Debug. Dalam dialog Debugging Kernel, buka tab Net . Masukkan nomor port dan kunci Anda. Pilih OK.

Anda juga dapat memulai sesi dengan WinDbg dengan membuka prompt perintah dan memasukkan perintah berikut, di mana n adalah nomor port Anda dan MyKey adalah kunci yang secara otomatis dihasilkan oleh BCDEdit saat Anda menyiapkan komputer target:

windbg -k net:port=<n>,key=<MyKey>

Jika Anda diminta untuk mengizinkan WinDbg mengakses port melalui firewall, izinkan WinDbg mengakses port untuk ketiga dari berbagai jenis jaringan.

Gunakan KD

Di komputer utama, buka jendela perintah. Masukkan perintah berikut, di mana n adalah nomor port Anda dan myKey adalah kunci yang secara otomatis dihasilkan oleh BCDEdit saat Anda menyiapkan komputer target:

kd -k net:port=<n>,key=<MyKey>

Jika Anda diminta untuk mengizinkan WinDbg mengakses port melalui firewall, izinkan WinDbg mengakses port untuk ketiga dari berbagai jenis jaringan.

Mulai ulang PC Target

Setelah debugger tersambung dan menunggu untuk terhubung, boot ulang komputer target. Salah satu cara untuk menghidupkan ulang PC adalah dengan menggunakan perintah ini dari prompt perintah administrator:

shutdown -r -t 0

Ketika target dimulai ulang, debugger di OS host harus tersambung.

Setelah menyambungkan ke target pada host, tekan break pada debugger Anda dan Anda dapat mulai men-debug.

Izinkan debugger melewati firewall

Ketika pertama kali mencoba membuat koneksi untuk penelusuran kesalahan jaringan, Anda mungkin diminta untuk mengizinkan aplikasi penelusuran kesalahan (WinDbg atau KD) mengakses melalui firewall. Versi klien Windows menampilkan perintah, tetapi versi server Windows tidak menampilkan perintah. Anda harus merespons permintaan dengan mencentang kotak centang untuk semua tiga jenis jaringan: domain, privat, dan publik.

Jika Anda tidak mendapatkan perintah atau jika Anda tidak mencentang kotak ketika perintah tersedia, Anda harus menggunakan Panel Kontrol untuk mengizinkan akses melalui firewall pada PC host tempat debugger berjalan. Buka Control Panel > Sistem dan Keamanan dan pilih Izinkan aplikasi melalui Windows Firewall.

  • (WindDbg) Dalam daftar aplikasi, temukan proses inti WinDbg (TCP) (semua).

  • (WinDbg Klasik) Dalam daftar aplikasi, temukan Windows GUI Symbolic Debugger dan Windows Kernel Debugger.

Gunakan kotak centang untuk mengizinkan aplikasi tersebut melalui firewall. Restar aplikasi debugger Anda (WinDbg atau KD).

Kunci enkripsi

Untuk menjaga keamanan komputer target, paket yang melakukan perjalanan antara host dan komputer target harus dienkripsi. Anda harus menggunakan kunci enkripsi yang dihasilkan secara otomatis (disediakan oleh BCDEdit saat Mengonfigurasi komputer target). Menggunakan kunci enkripsi yang dihasilkan secara otomatis disarankan karena lebih aman, dan memberikan nilai unik yang digunakan dalam membuat koneksi ke target tertentu.

Debugging jaringan menggunakan kunci 256-bit yang ditentukan sebagai empat nilai 64-bit, dalam basis 36, dipisahkan oleh titik. Setiap nilai 64-bit ditentukan dengan menggunakan hingga 13 karakter. Karakter yang valid adalah huruf a hingga z dan angka 0 hingga 9. Karakter khusus tidak diperbolehkan.

Untuk menentukan kunci Anda sendiri, buka prompt perintah yang ditingkatkan pada komputer target. Masukkan perintah berikut, di mana w.x.y.z adalah alamat IP komputer host, n adalah nomor port Anda, dan Key adalah kunci Anda:

bcdedit /dbgsettings net hostip:w.x.y.z port:n key:Key

Komputer target perlu di-boot ulang setiap kali pengaturan dbgsettings diubah.

Tips pemecahan masalah

Aplikasi debugging harus diizinkan untuk melewati firewall

Ketika pertama kali mencoba membuat koneksi untuk penelusuran kesalahan jaringan, Anda mungkin diminta untuk mengizinkan aplikasi penelusuran kesalahan (WinDbg atau KD) mengakses melalui firewall. Versi klien Windows menampilkan perintah, tetapi versi server Windows tidak menampilkan perintah. Anda harus merespons permintaan dengan mencentang kotak centang untuk semua tiga jenis jaringan: domain, privat, dan publik.

Jika Anda tidak mendapatkan perintah atau jika Anda tidak mencentang kotak saat perintah tersedia, Anda harus menggunakan Panel Kontrol untuk mengizinkan akses melalui firewall. Buka Control Panel > Sistem dan Keamanan dan pilih Izinkan aplikasi melalui Windows Firewall.

  • (WindDbg) Dalam daftar aplikasi, temukan proses inti WinDbg (TCP) (semua).

  • (WinDbg (Klasik)) Dalam daftar aplikasi, temukan Windows GUI Symbolic Debugger dan Windows Kernel Debugger.

Gunakan kotak centang untuk mengizinkan aplikasi tersebut melalui firewall. Gulir ke bawah dan pilih OK untuk menyimpan perubahan firewall. Mulai ulang debugger.

Nomor port harus dalam rentang yang diizinkan oleh kebijakan jaringan

Rentang nomor port yang dapat digunakan untuk penelusuran kesalahan jaringan mungkin dibatasi oleh kebijakan jaringan perusahaan Anda. Untuk menentukan apakah kebijakan perusahaan Anda membatasi rentang port yang dapat digunakan untuk penelusuran kesalahan jaringan, tanyakan kepada administrator jaringan Anda. Pada komputer target, buka prompt perintah sebagai administrator dan masukkan perintah bcdedit /dbgsettings. Outputnya akan mirip dengan yang berikut ini:

C:\> bcdedit /dbgsettings
key                     XXXXXX.XXXXX.XXXXX.XXXXX
debugtype               NET
hostip                  169.168.1.1
port                    50085
dhcp                    Yes
The operation completed successfully.

Pada output sebelumnya, nilai port adalah 50085. Jika nilai port berada di luar rentang yang diizinkan oleh administrator jaringan Anda, masukkan perintah berikut. Nilai w.x.y.z adalah alamat IP komputer host, dan YourDebugPort adalah nomor port dalam rentang yang diizinkan.

bcdedit /dbgsettings net hostip:w.x.y.z port:YourDebugPort

Setelah mengubah pengaturan debugger komputer target, jalankan ulang debugger pada komputer host dengan pengaturan port baru, lalu boot ulang komputer target.

Menggunakan ping untuk menguji konektivitas

Jika debugger tidak tersambung, gunakan perintah ping pada PC target untuk memverifikasi konektivitas.

C:\>Ping <HostComputerIPAddress>

Nota

Ini mungkin tidak berfungsi jika komputer host Anda tidak dikonfigurasi agar dapat ditemukan di jaringan karena firewall dapat memblokir permintaan ping. Jika firewall memblokir permintaan ping, Anda tidak akan mendapatkan respons apa pun saat melakukan ping pada host.

Bagaimana debugger mendapatkan alamat IP untuk komputer target

KDNET pada komputer target mencoba menggunakan Dynamic Host Configuration Protocol (DHCP) untuk mendapatkan alamat IP yang dapat dirutekan untuk adapter jaringan yang sedang digunakan untuk debugging. Jika KDNET mendapatkan alamat yang ditetapkan DHCP, komputer target dapat di-debug oleh komputer host yang terletak di mana saja di jaringan. Jika KDNET gagal mendapatkan alamat yang ditetapkan DHCP, KDNET menggunakan Alamat IP Privat Otomatis (APIPA) untuk mendapatkan alamat IP tautan lokal. Alamat IP tautan lokal tidak dapat dirutekan, sehingga host dan target tidak dapat menggunakan alamat IP tautan lokal untuk berkomunikasi melalui router. Dalam hal ini, debugging jaringan akan berfungsi jika Anda menyambungkan komputer host dan target ke hub jaringan atau sakelar yang sama.

Selalu tentukan busparam saat menyiapkan KDNET pada komputer fisik dengan NIC berbasis PCI

Jika Anda menyiapkan KDNET pada mesin fisik dengan PCI atau NIC berbasis PCIe, Anda sebaiknya selalu menentukan busparams untuk NIC yang ingin Anda gunakan untuk KDNET. Untuk menentukan parameter bus, buka Manajer Perangkat, dan temukan adaptor jaringan yang ingin Anda gunakan untuk penelusuran kesalahan. Buka halaman properti untuk adaptor jaringan dan catat nomor bus, nomor perangkat, dan nomor fungsi yang ditampilkan di bawah Lokasi pada tab Umum . Dalam prompt perintah yang ditingkatkan, masukkan perintah berikut, di mana b, d, dan f adalah nomor bus, perangkat, dan fungsi dalam format desimal:

bcdedit /set "{dbgsettings}" busparams b.d.f

Ketika debugger berjalan pada komputer host dan menunggu untuk terhubung, boot ulang komputer target menggunakan perintah berikut:

shutdown -r -t 0

Menghapus entri BCDEdit secara manual

Penghapusan manual biasanya tidak diperlukan tetapi disediakan di sini sebagai prosedur pemecahan masalah untuk situasi yang tidak biasa.

Menghapus entri secara manual tidak diperlukan saat menggunakan utilitas kdnet. Untuk informasi lebih lanjut, lihat Menyiapkan debugging kernel jaringan KDNET secara otomatis.

Saat Anda menggunakan bcdedit –deletevalue, Anda harus memberikan nama elemen bcd yang valid. Untuk informasi selengkapnya, lihat BCDEdit /deletevalue.

Untuk menghapus entri bcdedit secara manual, selesaikan langkah-langkah berikut:

  1. Pada komputer target, buka jendela prompt perintah dengan hak administrator.

  2. Sebagai contoh, masukkan perintah berikut untuk menghapus entri debugging BCDEdit untuk alamat IP host:

    bcdedit -deletevalue {dbgsettings} hostip
    

Saat menghapus hostip, Anda perlu menentukan target = pada baris perintah debugger.

  1. Sebagai contoh lain, hapus entri port dengan menggunakan perintah berikut:

    bcdedit -deletevalue {dbgsettings} port
    

Saat Anda menghapus entri port, KDNET menggunakan port debugger default terdaftar ICANN 5364.

Menyiapkan Hyper-V

Jika Anda ingin menginstal peran Hyper-V di komputer target, lihat Menyiapkan debugging jaringan host mesin virtual.

Untuk informasi tentang debugging mesin virtual (VM) Hyper-V, lihat Menyiapkan debugging jaringan mesin virtual - KDNET.

Mengaktifkan KDNET pada host Hyper-V yang menjalankan VM dengan konektivitas jaringan eksternal

Terkadang situasi terjadi yang menyebabkan jaringan di VM berhenti berfungsi:

  • Hyper-V telah diaktifkan pada PC, sakelar jaringan eksternal telah dibuat dan ditunjukkan pada NIC fisik di komputer, dan VM telah dikonfigurasi untuk menggunakan sakelar eksternal tersebut untuk jaringan mereka.

  • KDNET kemudian diaktifkan pada OS host Hyper-V menggunakan NIC fisik yang sama yang ditunjukkan oleh switch jaringan eksternal. Host di-boot ulang.

  • Semua VM yang menggunakan sakelar eksternal yang dikonfigurasi sebelumnya, kehilangan konektivitas jaringan mereka setelah boot ulang.

Penghentian ini dirancang dan terjadi karena KDNET mengambil kontrol eksklusif atas NIC yang dikonfigurasi untuk digunakan. Miniport NDIS bawaan untuk NIC tersebut tidak dimuat oleh sistem operasi. Sakelar jaringan eksternal kemudian tidak dapat lagi berkomunikasi dengan driver miniport NDIS asli dan berhenti bekerja. Untuk mengatasi situasi ini, lakukan hal berikut:

  1. Buka Virtual Switch Manager dari Hyper-V Manager, dan pilih Sakelar Virtual yang ada. Ubah NIC jaringan eksternal ke Microsoft Kernel Debug Network Adapter dengan memilihnya dari menu dropdown lalu memilih OK dalam dialog Virtual Switch Manager.

  2. Setelah memperbarui Virtual Switch NIC, matikan dan mulai ulang VM Anda.

Ketika penelusuran kesalahan KDNET dinonaktifkan, prosedur yang sama perlu diikuti untuk mengalihkan kembali switch eksternal, ke miniport NDIS asli untuk NIC. Jika tidak, konektivitas VM akan terputus ketika mesin di-boot ulang setelah penelusuran kesalahan dinonaktifkan.

IPv6

Dukungan IPv6 ditambahkan di Windows versi 1809.

Untuk menggunakan IPv6 dengan debugger, selesaikan langkah-langkah berikut:

  1. Ping <debughostname> Anda dan catat alamat IPv6 yang terlihat pada balasan dari baris output. Gunakan alamat IPv6 ini sebagai ganti x:y:z:p:d:q:r:n.

  2. Gunakan BCDEdit untuk menghapus nilai alamat IP yang ada dalam dbgsettings.

    bcdedit -deletevalue {dbgsettings} hostip
    
  3. Atur alamat IPv6 host. Tidak boleh ada spasi dalam string hostipv6=s:t:u:v:w:x:y:z. < > YourPort adalah nomor port jaringan yang digunakan untuk komputer target ini. < > YourKey adalah kunci keamanan empat bagian. <b.d.f> adalah nomor lokasi fungsi perangkat bus untuk NIC yang ingin Anda gunakan untuk KDNET.

    bcdedit /dbgsettings net hostipv6:s:t:u:v:w:x:y:z port:<YourPort> key:<YourKey> busparams:<b.d.f>
    
  4. Ketik perintah ini untuk mengonfirmasi bahwa dbgsettings diatur dengan benar.

    C:\> bcdedit /dbgsettings
    busparams               0.25.0
    key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    debugtype               NET
    hostipv6                  2001:db8:0:0:ff00:0:42:8329
    port                    50010
    dhcp                    Yes
    The operation completed successfully.
    
  5. Pada komputer host, gunakan perintah berikut untuk memulai debugger:

    Windbg -k net:port=<yournetworkportnumber>,key=<key_output_from_kdnet>,target=::<YourIPv6Address> 
    
  6. Ketika debugger berjalan pada komputer host dan menunggu untuk terhubung, boot ulang komputer target.

  7. Debugger harus terhubung ke debugger host lebih awal selama boot. Anda dapat melihat bahwa KDNET menggunakan koneksi IPv6 karena alamat IP yang dilaporkan dalam pesan yang terhubung adalah alamat IPv6 alih-alih alamat IPv4.

Catatan

  • Setiap pengaturan debugger bcd yang memungkinkan hostip ditentukan memiliki elemen hostipv6 yang sesuai. Ada tiga.

    IPv4 IPv6 Penggunaan
    hostip hostipv6 Untuk penelusuran kesalahan boot dan kernel
    targethostip TargetHostIPv6 Khusus untuk debugging kernel
    hypervisorhostip hypervisorhostipv6 Untuk debugging hyper-v
  • Jika Anda mengatur alamat gaya hostipv6 untuk salah satu jenis debugging tersebut, itu berarti Anda ingin dan akan mendapatkan IPv6.

  • Jika Anda mengatur alamat gaya hostip untuk salah satu jenis debugging tersebut, ini berarti Anda ingin dan akan mendapatkan IPv4.

  • Target hanya akan melakukan IPv4 atau IPv6, bukan keduanya pada saat yang sama. Versi protokol IP yang digunakan dikendalikan oleh dbgsettings pada mesin target. Jika hostip diatur, target menggunakan IPv4. Jika hostipv6 diatur, target menggunakan IPv6.

  • Debugger host biasanya secara otomatis memilih penggunaan IPv4 atau IPv6. Secara default, debugger mendengarkan soket IPv4 dan soket IPv6 dan terhubung secara otomatis pada salah satu ke komputer target.

  • Jika Anda ingin memaksa penggunaan IPv6 di debugger pada host, tetapi Anda ingin debugger mendengarkan koneksi dari target, maka Anda dapat menambahkan target=:: ke baris perintah debugger. :: adalah alamat IPv6 0.

  • Jika Anda ingin memaksakan debugging IPv4 di debugger pada host, tetapi Anda ingin debugger mendengarkan koneksi dari target, maka Anda dapat menambahkan target=0.0.0.0 ke baris perintah debugger. 0.0.0.0 adalah alamat IPv4 0.

  • Jika Anda menentukan target= pada baris perintah debugger dan menggunakan nama komputer, debugger mengonversi nama komputer tersebut menjadi alamat IPv4 dan alamat IPv6. Debugger kemudian mencoba menyambungkan keduanya.

  • Saat Anda menentukan target= pada baris perintah debugger, dan menggunakan alamat IP, jika alamat IP berisi : karakter, debugger mengasumsikan itu adalah alamat IPv6, dan memaksa penggunaan IPv6 untuk koneksi tersebut. Jika alamat IP berisi . karakter, debugger mengasumsikan itu adalah alamat IPv4, dan memaksa penggunaan IPv4 untuk koneksi tersebut.

  • Jika Anda menyiapkan IPv6 pada target dan memaksa penggunaan IPv4 di baris perintah debugger, Anda tidak mendapatkan koneksi.

  • Jika Anda mengatur IPv4 pada target dan memaksa penggunaan IPv6 pada baris perintah debugger, Anda juga tidak akan mendapatkan koneksi.

Lihat juga