Bagikan melalui


Menyiapkan debug kernel jaringan KDNET secara manual

Artikel ini memperlihatkan kepada Anda cara menyiapkan penelusuran kesalahan kernel jaringan KDNET secara manual dengan menggunakan Alat Penelusuran Kesalahan untuk Windows. Anda mengonfigurasi komputer host dan komputer target untuk mengaktifkan debugging jaringan.

Penting

Penyiapan penelusuran kesalahan jaringan manual bersifat kompleks dan rawan kesalahan. Untuk sebagian besar skenario, gunakan penyiapan otomatis sebagai gantinya:Menyiapkan penelusuran kesalahan kernel jaringan KDNET secara otomatis. Utilitas KDNET sangat disarankan.

Apa yang Anda pelajari:

  • Cara mengonfigurasi komputer host dan target untuk debugging jaringan
  • Cara membuat dan memecahkan masalah koneksi debugging
  • Penggunaan IPv6 vs IPv4 untuk pemecahan masalah

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: Adaptor jaringan apa pun berfungsi.

Komputer target: Harus menggunakan adaptor jaringan yang didukung. Periksa versi Windows Anda:

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

Rentang port yang direkomendasikan: 50000-50039

Anda dapat menggunakan port apa pun dari 49152-65535, tetapi rentang yang direkomendasikan memberikan kompatibilitas terbaik. Debugger menggunakan port ini secara eksklusif, jadi pastikan tidak ada aplikasi lain yang menggunakannya.

Pertimbangan penting

  • Firewall perusahaan mungkin membatasi rentang port. Tanyakan kepada administrator jaringan Anda.
  • Setiap komputer target membutuhkan port unik (misalnya: 50000, 50001, 50002).
  • Komputer host yang berbeda dapat menggunakan kembali rentang port yang sama.

Nota

Kebijakan jaringan perusahaan Anda mungkin membatasi port yang tersedia. Tanyakan kepada administrator jaringan Anda jika Anda mengalami masalah koneksi.

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 jaringan dengan 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. Pada prompt perintah tingkat tinggi, masukkan perintah berikut. Ganti w.x.y.z dengan alamat IP komputer host Anda dan n dengan nomor port yang Anda pilih:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    

    Contohnya:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:192.168.1.100 port:50000
    
  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 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.

Perhatian

Jika komputer target Anda berada di stasiun docking dan Anda mengaktifkan debugging jaringan untuk adaptor jaringan yang merupakan bagian dari stasiun docking, 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

Sebelum Anda mulai: Pastikan adaptor jaringan komputer host Anda tersambung ke hub jaringan atau sakelar.

Opsi 1: Gunakan WinDbg (GUI)

  1. Buka WinDbg di komputer host.
  2. Pilih File>Kernel Debug.
  3. Buka tab Net .
  4. Masukkan nomor port dan kunci Anda.
  5. Pilih OK.

Opsi 2: Gunakan WinDbg (Baris perintah)

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 dihasilkan secara otomatis 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 dihasilkan BCDEdit secara otomatis 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.

Menghidupkan ulang komputer target

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

shutdown -r -t 0

Ketika sistem target dimulai ulang, debugger dari OS host tersambung.

Setelah menyambungkan ke target pada host, pilih berhenti pada debugger Anda dan Anda dapat mulai melakukan debugging.

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. Tanggapi permintaan dengan mencentang kotak untuk ketiga jenis jaringan: domain, privat, dan publik.

Jika Anda tidak mendapatkan perintah atau jika Anda tidak mencentang kotak ketika perintah tersedia, gunakan 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. Gunakan kunci enkripsi yang dihasilkan secara otomatis (disediakan oleh BCDEdit saat Anda mengonfigurasi komputer target). Kunci enkripsi yang dihasilkan secara otomatis lebih aman dan memberikan nilai unik yang Anda gunakan untuk 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 kapan saja Anda mengubah dbgsettings.

Tips pemecahan masalah

Izinkan aplikasi debug melalui 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. Tanggapi permintaan dengan mencentang kotak untuk ketiga 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

Kebijakan jaringan perusahaan Anda mungkin membatasi rentang nomor port yang dapat Anda gunakan untuk penelusuran kesalahan jaringan. Untuk mengetahui apakah kebijakan perusahaan Anda membatasi rentang port untuk penelusuran kesalahan jaringan, tanyakan kepada administrator jaringan Anda. Pada komputer target, buka prompt perintah sebagai administrator dan masukkan perintah bcdedit /dbgsettings. Outputnya mirip dengan contoh berikut:

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

Metode ini mungkin tidak berfungsi jika komputer host Anda tidak dikonfigurasi agar dapat ditemukan di jaringan karena firewall mungkin memblokir permintaan ping. Jika firewall memblokir permintaan ping, Anda tidak 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 di-routing untuk adaptor jaringan yang digunakan untuk debug. Jika KDNET mendapatkan alamat yang ditetapkan DHCP, maka komputer host di mana saja di jaringan dapat men-debug komputer target. Jika KDNET tidak bisa 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, penelusuran kesalahan jaringan berfungsi jika Anda menyambungkan host dan komputer 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 komputer fisik dengan PCI atau NIC berbasis PCIe, selalu tentukan busparam 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 muncul 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 dengan menggunakan perintah berikut:

shutdown -r -t 0

Menghapus entri BCDEdit secara manual

Anda biasanya tidak perlu menghapus entri BCDEdit secara manual. Namun, Anda dapat menggunakan prosedur ini untuk memecahkan masalah situasi yang tidak biasa.

Anda tidak perlu menghapus entri secara manual 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 komputer 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:

  • Anda mengaktifkan Hyper-V pada PC, membuat sakelar jaringan eksternal yang menunjuk ke NIC fisik di komputer, dan mengonfigurasi VM untuk menggunakan sakelar eksternal tersebut untuk jaringan mereka.

  • Anda mengaktifkan KDNET pada OS host Hyper-V dengan menggunakan NIC fisik yang sama dengan yang dituju oleh pengalihan jaringan eksternal. Anda memulai ulang host.

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

Penghentian ini dirancang. KDNET mengambil kontrol eksklusif atas NIC yang dikonfigurasi untuk digunakan. OS tidak memuat miniport NDIS asli untuk NIC tersebut. Sakelar jaringan eksternal tidak dapat lagi berkomunikasi dengan driver miniport NDIS asli dan berhenti berfungsi. Untuk mengatasi situasi ini, selesaikan langkah-langkah 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.

Saat Anda menonaktifkan debugging KDNET, ikuti prosedur yang sama untuk mengarahkan kembali sakelar eksternal ke miniport NDIS asli untuk NIC. Jika tidak, konektivitas VM akan hilang saat Anda memulai ulang mesin setelah penelusuran kesalahan dinonaktifkan.

IPv6

Windows versi 1809 menambahkan dukungan untuk IPv6.

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. String hostipv6=s:t:u:v:w:x:y:z tidak boleh berisi spasi apa pun. < > 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 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 Anda menentukan hostip memiliki elemen hostipv6 yang sesuai. Ada tiga pasangan.
IPv4 IPv6 Penggunaan
hostip hostipv6 Untuk penelusuran kesalahan boot dan kernel
targethostip TargetHostIPv6 Khusus untuk debugging kernel
hypervisorhostip hypervisorhostipv6 Untuk penelusuran kesalahan Hyper-V
  • Jika Anda mengatur gaya alamat hostipv6 untuk salah satu jenis debug tersebut, Anda mendapatkan IPv6.

  • Jika Anda mengatur hostip gaya alamat untuk salah satu jenis debugging tersebut, Anda mendapatkan IPv4.

  • Target hanya melakukan IPv4 atau IPv6, bukan keduanya pada saat yang sama. Versi protokol IP yang digunakan dikendalikan oleh dbgsettings pada mesin target. Jika Anda mengatur hostip, target menggunakan IPv4. Jika Anda mengatur hostipv6, 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.

  • Ketika 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.