Bagaimana cara memeriksa apakah port diblokir pada mesin Windows?

105

Pada platform Windows, opsi bawaan apa yang harus saya periksa apakah port (3306, misalnya) pada mesin lokal saya (seperti pada localhost), sedang diblokir?

Boris Pavlovic
sumber
1
Hanya untuk memperjelas, apakah maksud Anda diblokir, seperti diblokir oleh firewall atau gateway, atau apakah maksud Anda sudah digunakan oleh sesuatu yang lain?
squillman
1
Tes Audit My PC Firewall memungkinkan Anda menguji port tertentu atau serangkaian port dari sumber eksternal.
Peter Stuer

Jawaban:

111

Karena Anda menggunakan 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 memblokirnya, Anda bisa memulai pencatatan firewall windows dan memeriksa log untuk koneksi yang terputus

    • Pergi ke Windows Firewall, Pengaturan lanjutan
    • Klik tombol Pengaturan di sebelah "Sambungan Area Lokal"
    • Pilih "Log paket yang dijatuhkan"
    • Lihatlah lokasi file log (jika tidak ada tentukan satu)
    • Klik OK
    • Sekarang, ketika upaya koneksi dilakukan (dengan asumsi Anda tahu kapan ini dilakukan), lihat file log untuk setetes pada port 3306.
    • Jika ini terlihat, Anda ingin menambahkan pengecualian untuk port ini.
  • Ada satu perintah lagi untuk memeriksa keadaan firewall
    (Pembaruan untuk pengguna Windows 7 - sebagaimana dimaksud di Nickbawah ini - gunakan firewall netsh advfirewall )

    keadaan firewall menunjukkan netsh

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

    konfigurasi firewall netsh


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

Jika Anda menjalankan aplikasi / layanan yang mendengarkan 3306, konfigurasi firewall harus menunjukkannya Diaktifkan. Jika ini tidak terlihat, Anda mungkin telah 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 harus bekerja dengan aplikasi Anda (MySQL) untuk memulainya.

nik
sumber
4
+1 untuk detail luar biasa
Sage
3
Dimulai dengan Windows Vista, perintah "netsh firewall" sudah tidak digunakan lagi. Ini merekomendasikan Anda menggunakan "netsh advfirewall firewall" sebagai gantinya dan referensi artikel go.microsoft.com/fwlink/?linkid=121488
Nick DeVore
5
Untuk mengurai output di baris perintah, tambahkan |find "3306"ke perintah, misalnyaC:\Windows\System32>netstat -an |find "3306"
Cees Timmerman
Saya tidak dapat menemukan tombol pengaturan yang ditentukan pada langkah 2 dari rekomendasi kedua ...
Bassie
23

NETSTATakan memberi tahu Anda jika port sedang mendengarkan tetapi tidak akan memberi tahu Anda jika port terbuka untuk dunia luar. Apa yang saya maksudkan dengan ini adalah yang NETSTATmungkin menunjukkan bahwa 0.0.0.0 MENDENGARKAN pada port 3306 tetapi firewall mungkin masih memblokir port yang mencegah koneksi luar; jadi tidak cukup hanya mengandalkan NETSTATsendirian.

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

Ada banyak cara untuk melakukan pemindaian port tetapi karena Anda menyebutkan sedang menggunakan Windows maka saya akan menyarankan utilitas baris perintah Microsoft PortQrydan versi grafis PortQryUI

Untuk menguji semua port 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

Sedangkan pengujian pada mesin lokal tanpa HTTPD berjalan kembali:

TCP port 80 (http service): NOT LISTENING

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

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

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

Untuk menggunakan telnetAnda cukup mengeluarkan perintah berikut dari prompt perintah:

telnet localhost 3306

Perintah di atas akan memberi Anda indikasi cepat jika port 3306di localhostmerespons.

Tim Penner
sumber
Saya mengunduh PortQryUI dan saya memeriksa setelah saya memblokir dan mengaktifkan port 445 di kedua tcp dan udp, itu menunjukkan mendengarkan sama di tcp dan tidak mendengarkan di udp.
Liam neesan
17

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 Tes-NetConnection TechNet

Marcel Janus
sumber
+1 untuk ini. Alternatif yang sangat bagus yang tidak memerlukan instalasi apa pun pada kebanyakan mesin windows modern.
DCaugs
5

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

Perhatikan bahwa firewall pada mesin lokal Anda bahkan dapat mencegah tindakan pertama.

Brent
sumber
Perhatikan bahwa telnet tidak diinstal lagi pada Win7 dan sistem yang lebih baru.
Alexis Wilke
@AlexisWilke Itu tidak benar. Telnet dapat diinstal
deepdive
4
Untuk menginstal telnet dari baris perintah: dism / online / Enable-Feature / FeatureName: TelnetClient
Jason Massey