Pertanyaan Bagaimana cara memeriksa apakah sebuah port diblokir pada mesin Windows?


Pada platform Windows, opsi asli apa yang harus saya periksa jika port (3306, misalnya) pada komputer lokal saya (seperti localhost), sedang diblokir?


91
2018-06-16 14:21




Hanya untuk mengklarifikasi, maksud Anda diblokir, seperti diblokir oleh firewall atau gateway, atau maksud Anda sudah digunakan oleh sesuatu yang lain? - squillman
Itu Audit uji PC Firewall saya memungkinkan Anda menguji port tertentu atau berbagai port dari sumber eksternal. - Peter Stuer


Jawaban:


Karena Anda berada di mesin Windows, hal-hal ini dapat dilakukan,

  • Jalankan perintah berikut dan cari pendengar ": 3306" (Anda tidak menyebutkan UDP / TCP). Ini akan mengkonfirmasi ada sesuatu yang berjalan di port.

    netstat -a -n

  • Setelah ini, jika Anda mengharapkan koneksi masuk pada port ini dan merasa bahwa firewall mungkin memblokir mereka, Anda bisa mulai firewall windows logging dan periksa log untuk koneksi yang terputus

    • Pergi ke Windows Firewall, Pengaturan lanjutan
    • Klik pada tombol Pengaturan di samping "Local Area Connection"
    • Pilih "Log drop packages"
    • Lihatlah lokasi file log (jika tidak ada yang menentukan)
    • Klik OK
    • Sekarang, ketika upaya koneksi dilakukan (dengan asumsi Anda tahu kapan ini dilakukan), lihat file log untuk drop pada port 3306.
    • Jika ini terlihat, Anda akan ingin menambahkan pengecualian untuk port ini.
  • Ada satu lagi perintah untuk memeriksa keadaan firewall
    (Pembaruan untuk pengguna Windows 7 - sebagaimana dimaksud oleh Nick di bawah - gunakan netsh advfirewall firewall)

    netsh firewall menunjukkan keadaan

    • ini akan mencantumkan port yang diblokir serta port mendengarkan aktif dengan asosiasi aplikasi
  • Perintah ini akan membuang detail konfigurasi firewall Windows

    netsh firewall show config


Jika Anda memiliki blok aktif (koneksi masuk dijatuhkan oleh firewall) setelah Anda mulai masuk, Anda akan melihat itu di log.

Jika Anda menjalankan aplikasi / layanan yang mendengarkan pada 3306, konfigurasi firewall harus menunjukkannya agar Diaktifkan. Jika ini tidak terlihat, Anda mungkin melewatkan menambahkan pengecualian dengan firewall untuk mengizinkan aplikasi / layanan ini.

Akhirnya, port 3306 biasanya digunakan untuk MySQL. Jadi, saya kira Anda menjalankan server MySQL pada mesin windows ini. Karena itu Anda harus melihat pendengar untuk 3306 menerima koneksi masuk. Jika Anda tidak melihat itu, Anda perlu bekerja dengan aplikasi Anda (MySQL) untuk mendapatkan yang dimulai lebih dulu.


100
2018-06-16 14:28



+1 untuk detail yang hebat - Sage
Dimulai dengan Windows Vista, perintah "netsh firewall" tidak lagi digunakan. Ini merekomendasikan Anda menggunakan "netsh advfirewall firewall" sebagai gantinya dan referensi artikel go.microsoft.com/fwlink/?linkid=121488 - Nick DeVore
Untuk mem-parse output pada baris perintah, tambahkan |find "3306" ke perintah, misalnya C:\Windows\System32>netstat -an |find "3306" - Cees Timmerman
Saya tidak dapat menemukan tombol pengaturan yang ditentukan pada langkah 2 dari rekomendasi kedua ... - Bassie
@Bassie, coba docs.microsoft.com/en-us/windows/access-protection/… - nik


NETSTAT akan memberi tahu Anda apakah port itu mendengarkan tetapi tidak akan memberi tahu Anda apakah port itu Buka ke dunia luar. Yang saya maksud dengan ini adalah itu NETSTAT dapat menunjukkan bahwa 0.0.0.0 adalah MENDENGARKAN pada port 3306 tetapi firewall mungkin masih memblokir port yang mencegah koneksi luar; jadi itu tidak cukup untuk diandalkan NETSTAT sendirian.

Cara terbaik untuk memeriksa apakah port diblokir adalah melakukan pemindaian port dari mesin klien. 

Ada banyak cara untuk melakukan pemindaian port tetapi karena Anda menyebutkan berada di Windows maka saya akan menyarankan utilitas baris perintah Microsoft PortQry dan versi Grafis PortQryUI

Untuk menguji semua port yang terbuka:

portqry.exe -n #.#.#.#   

Untuk menguji port tertentu:

portqry.exe -n #.#.#.# -e #

Misalnya untuk menguji antarmuka web router di 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Yang mengembalikan:

TCP port 80 (http service): LISTENING

Di mana sebagai pengujian pada mesin lokal tanpa menjalankan kembali HTTPD:

TCP port 80 (http service): NOT LISTENING

Menggunakan utilitas PortScan Anda akan mendapatkan salah satu dari 3 hasil.

  • Listening berarti server sedang mendengarkan pada port yang ditentukan
  • Filtered berarti ia menerima paket TCP acknowledgment dengan set Reset flag yang kemungkinan mengindikasikan firewall atau masalah perangkat lunak
  • Not Listening berarti tidak menerima jawaban sama sekali

telnet adalah opsi baris perintah lain yang biasanya diinstal pada OS secara default. Utilitas baris perintah ini dapat digunakan dengan cara cepat untuk melihat apakah port merespons permintaan jaringan.

Menggunakan telnet Anda hanya akan mengeluarkan perintah berikut dari prompt perintah:

telnet localhost 3306

Perintah di atas akan memberi Anda indikasi cepat jika port 3306 pada localhost merespons.


18
2018-04-04 00:47



Saya mengunduh PortQryUI dan saya memeriksa setelah saya memblokir dan mengaktifkan port 445 di tcp dan udp, itu menunjukkan mendengarkan yang sama di tcp dan tidak mendengarkan di udp. - Liam neesan


Karena PowerShell 4.0 Anda dapat menggunakan perintah Test-NetConnection

Jika Anda ingin menguji Port 3306 seperti pada contoh Anda, perintahnya adalah

Test-NetConnection -ComputerName localhost -Port 3306

Dokumentasi Uji-NetConnection TechNet


8
2018-01-17 14:56



+1 untuk ini. Alternatif yang benar-benar bagus yang tidak memerlukan instalasi apa pun pada mesin windows paling modern. - DCaugs


Jika Anda dapat melakukan telnet ke port dari mesin lokal (menggunakan alamat IP eksternal), tetapi tidak dari komputer lain - maka itu diblokir di suatu tempat di antara.

Perhatikan bahwa firewall di komputer lokal Anda bisa bahkan mencegah tindakan pertama.


5
2018-06-16 14:27



Perhatikan bahwa telnet tidak diinstal lagi di Win7 dan sistem yang lebih baru. - Alexis Wilke
@AlexisWilke Itu tidak benar. Telnet dapat dipasang - deepdive
Untuk menginstal telnet dari baris perintah: dism / online / Aktifkan-Fitur / FeatureName: TelnetClient - Jason Massey