Bagaimana cara menentukan apakah port terbuka di server Windows? [Tutup]

478

Saya mencoba menginstal situs di bawah port alternatif di server, tetapi port mungkin ditutup oleh firewall. Apakah ada cara untuk keluar atau masuk, pada port tertentu, untuk melihat apakah port tersebut terbuka?

Jason
sumber

Jawaban:

732

Dengan asumsi bahwa itu adalah port TCP (bukan UDP) yang Anda coba gunakan:

  1. Di server itu sendiri, gunakan netstat -anuntuk memeriksa untuk melihat port mana yang mendengarkan.

  2. Dari luar, cukup gunakan telnet host port(atau telnet host:portpada sistem Unix) untuk melihat apakah koneksi ditolak, diterima, atau timeout.

Pada tes terakhir itu, maka secara umum:

  • koneksi ditolak berarti tidak ada yang berjalan di port itu
  • diterima berarti ada sesuatu yang berjalan di port itu
  • batas waktu berarti bahwa firewall memblokir akses

Pada Windows 7 atau Windows Vista, opsi default 'telnet' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan, atau file batch. Untuk mengatasinya, cukup aktifkan: Klik * Mulai ** → Control PanelProgramMengaktifkan atau menonaktifkan Fitur Windows . Dalam daftar, gulir ke bawah dan pilih Telnet Client dan klik OK.

Alnitak
sumber
312
Dalam opsi def7ul Win7 atau Vista 'telnet' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch. Untuk mengatasinya, cukup aktifkan: Klik Mulai, Panel Kontrol, Program, lalu nyalakan atau matikan Fitur Windows. Dalam daftar, gulir ke bawah dan pilih Telnet Client dan klik OK
volody
12
@PankajKohli menggunakan klien telnet Putty sebagai gantinya. Tidak perlu diinstal.
Colin Pickard
52
Apa yang Could not open connection to the host, on port *x*: Connect failedditunjukkan?
Kenny Evitt
2
@Alnitak Saya hanya ingin memeriksa karena saya pikir ini sudah menjawab pertanyaan saya. Kapan saya telnet api-3t.sandbox.paypal.com 443mendapatkannya? Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedApakah ini karena firewall memblokirnya?
Popeye
2
ada perbedaan jika Anda membuka telnet.exe dan kemudian ketik o host portvs command line terbuka (cmd.exe) dan kemudian ketiktelnet host port
Pawel Cioch
185

Di Windows Anda bisa menggunakan

netstat -na | find "your_port"

untuk mempersempit hasilnya. Anda juga dapat menyaring untuk LISTENING, ESTABLISHED, TCPdan semacamnya. Pikiran itu case-sensitive sekalipun.

J.Celmer
sumber
4
Anda tidak dapat menggunakan find seperti ini, ini akan mencari file, Anda harus menggunakan grep
Moataz Elmasry
38
@ MoatazElmasry, itu benar di Linux, tapi ini di server Windows, di mana find adalah perintah yang benar. Grep tidak tersedia di Windows. Saya hanya menjalankan perintah persis yang disebutkan di sini, dan itu bekerja dengan sempurna.
Ben Wyatt
4
Ketika saya menggunakan perintah itu yaitu netstat -an | menemukan "19345", saya tidak mendapatkan hasil apa pun. apa artinya?
nanosoft
14
findtidak bekerja di Windows 10 untuk saya, tetapi netstat -na | findstr "8080"bekerja
arun
6
tidak ada yang terjadi, tidak dengan find atau findstr
usefulBee
85

Jika Anda memeriksa dari luar, bukan dari server itu sendiri, dan Anda tidak ingin repot menginstal telnet (karena tidak datang dengan versi Windows terakhir) atau perangkat lunak lain, maka Anda memiliki PowerShell asli:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Sayangnya ini hanya berfungsi dengan PowerShell 4.0 atau lebih baru. Untuk memeriksa versi PowerShell Anda, ketik $PSVersionTable.)

PS: Catatan, hari ini ada beberapa klaim di twittersphere yang mengisyaratkan bahwa jawaban ini dapat ditingkatkan dengan menyebutkan "Tes-Koneksi" dari PowerShell Core, atau pintasan "tnc". Lihat https://twitter.com/david_obrien/status/1214082339203993600 dan bantu saya mengedit jawaban ini untuk memperbaikinya!


(Jika Anda memiliki PSVersion <4.0, Anda kurang beruntung. Periksa tabel ini:

Masukkan deskripsi gambar di sini

Meskipun Anda dapat memutakhirkan versi PowerShell Anda dengan menginstal Windows Management Framework 4.0 , itu tidak membantu saya, cmdlet Test-NetConnection masih belum tersedia).

knocte
sumber
3
Ini jawaban terbaik. Menginstal telnet tidak selalu mudah di server orang lain!
TrojanName
Tentunya harus menjadi jawaban terbaik.
QtRoS
1
Ini adalah pilihan yang lebih dapat diandalkan daripada telnet, telnet hanya akan menggantung tidak melaporkan apa pun sementara ini melaporkan bahwa port tersedia dalam kasus saya.
kapak
42

Pada mesin Windows Anda dapat menggunakan PortQry dari Microsoft untuk memeriksa apakah suatu aplikasi sudah mendengarkan pada port tertentu menggunakan perintah berikut:

portqry -n 11.22.33.44 -p tcp -e 80
Gunjan Moghe
sumber
4
Port yang dipasangi firewall umumnya akan muncul sebagai "FILTERED".
dlanod
Anda dapat menggunakan alat ini untuk memeriksa port UDP juga:portqry -n 11.22.33.44 -p udp -e 19132
Antony
41

Saya memang suka itu:

netstat -an | find "8080" 

dari telnet

telnet 192.168.100.132 8080

Dan pastikan firewall dimatikan pada mesin itu.

Sarvar Nishonboev
sumber
Ketika saya menggunakan perintah itu yaitu netstat -an | menemukan "19345", saya tidak mendapatkan hasil apa pun. apa artinya? -
nanosoft
2
itu artinya pelabuhan ini gratis
Sarvar Nishonboev
Saya mendapatkan pesan kesalahan ketika saya menjalankannya netstat -an | find "8080",no such file named "8080"
Pragyaditya Das
24

Jika telnettidak tersedia, unduh Putty . Ini adalah klien Telnet, SSH, dll yang jauh lebih unggul dan akan berguna dalam banyak situasi, tidak hanya yang satu ini, terutama jika Anda mengelola server.

Machtyn
sumber
Ya, tetapi tidak untuk menempelkan kode Forth, katakanlah, dengan AmForth (kecuali menggunakan Putty dalam kombinasi dengan Edit Overflow ).
Peter Mortensen
13

Apakah Anda menginginkan alat untuk melakukannya? Ada situs web di http://www.canyouseeme.org/ . Jika tidak, Anda memerlukan server lain untuk menelepon Anda kembali untuk melihat apakah port terbuka ...

Douglas Mayle
sumber
12

Gunakan ini jika Anda ingin melihat semua port yang digunakan dan mendengarkan pada server Windows:

netstat -an |find /i "listening"

Lihat semua port terbuka, dengar, dan didirikan:

netstat -a
zehnaseeb
sumber
7

Di Windows Server Anda bisa menggunakan

netstat -an | where{$_.Contains("Yourport")}
Derbium
sumber
Tidak mengatasi masalah firewall dengan cara apa pun.
Marquis of Lorne
5
Ini bekerja pada PowerShell
Paco Zarate
Atau maksud Anda "server Windows"?
Peter Mortensen
4

Pilihan lain adalah tcping .

Sebagai contoh:

tcping host port

Vadzim
sumber
4

PsPing dari Sysinternals juga sangat bagus.

Peter Mortensen
sumber
Alat yang bagus. Contoh kode adalah: PsPing -n 20 -i 0 servername: port
Asher
1

Inilah yang bekerja untuk saya:

  • Buka prompt perintah
  • Tipe telnet
  • Microsoft Telnet> buka <nama host atau alamat IP> <spasi> <port>

Ini akan mengkonfirmasi apakah port dibuka.

p_champ
sumber
0

Utilitas lain yang saya temukan dan bagus dan kecil juga, adalah PortQry Command Line Port Scanner versi 2.0 .

Anda dapat melakukan ping ke server dan port dan ia akan memberi tahu Anda kondisi port tersebut. Ada utilitas baris perintah dan UI untuk itu.

Gilberto
sumber