Bagaimana saya bisa mengetahui apakah port dibuka atau tidak?

22

Saya telah menginstal server Apache di komputer Windows 7 saya. Saya dapat menampilkan index.php default dengan mengetikkan http: // localhost / di baris alamat browser saya.

Namun, saya masih tidak dapat melihat halaman ini dengan mengetik alamat IP komputer saya (tidak secara lokal (dari komputer yang sama) tidak secara global (dari komputer lain yang terhubung ke Internet)).

Saya diberitahu bahwa saya perlu membuka port 80. Saya melakukannya (dengan cara yang dijelaskan di sini ) tetapi tidak menyelesaikan masalah.

Pertama-tama saya ingin memeriksa port mana yang dibuka dan mana yang tidak. Misalnya saya tidak yakin port 80 saya sudah ditutup sebelum saya coba buka. Saya juga tidak yakin itu dibuka setelah saya mencoba membukanya.

Saya mencoba menjalankan server web yang sangat sederhana yang ditulis dengan Python. Untuk itu saya menggunakan port 81 dan berhasil! Dan saya tidak mencoba membuka port 81. Jadi, dibuka secara default. Jadi, jika 81 dibuka secara default, mengapa 80 tidak? Atau itu?

INFORMASI TAMBAHAN:
1. Dalam file httpd.conf saya, saya memiliki "Dengarkan 80".
2. Situs ini memberi tahu saya bahwa port 80 di komputer saya dibuka.
3. Saya mendapat respons berbeda jika saya mencoba http: // myip: 80 dan http: // myip: 81 . Dalam browser kasus terakhir (Chrome) menulis kepada saya bahwa tautan rusak. Dalam kasus pertama yang saya dapatkan: Terlarang Anda tidak memiliki izin untuk mengakses / di server ini.
4. IE menulis bahwa "Situs web menolak untuk menampilkan halaman web ini".

Roma
sumber
3
Jika case pertama mengatakan "Forbidden" direktori root atau virtual host Anda tidak diatur dengan benar.
Urda
Dengan asumsi Anda berada di belakang router, sudahkah Anda mengatur port-forwarding pada router? Router Anda (sebagian besar) mungkin sudah menggunakan port 80 untuk antarmuka admin berbasis web itu sendiri. Bagaimanapun, Anda perlu meneruskan permintaan ke alamat IP publik Anda (router) ke alamat IP lokal komputer Anda, di port 80 (atau apa pun).
Jongosi

Jawaban:

16

Jika Anda baru saja memeriksa port Anda dari luar. Gunakan alat ini:

http://www.yougetsignal.com/tools/open-ports/

Ini akan berusaha untuk terhubung ke alamat IP Anda, pada port spesifik, dan memberi tahu Anda apakah itu terbuka atau tertutup ke dunia luar.

Masalah lokal juga? Kedengarannya seperti firewall Windows 7 memotong Anda. Tambahkan pengecualian dengan tutorial ini ...

http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html

Urda
sumber
Saya memeriksa port saya dengan yougetsignal.com / alat / open - ports . Situs ini menulis bahwa port 80 saya dibuka (sementara 79 dan 81 ditutup).
Roman
Apakah Anda memeriksa pengecualian Windows 7 Firewall? Ini akan menjelaskan mengapa Anda dapat mencapainya melalui localhostdan bukan dari komputer lain.
Urda
Urda, saya telah membuka port 80 dengan cara ini maximumpcguides.com/windows-7/… . Jadi, itu harus dibuka untuk semua IP. Selain itu, situs yang Anda berikan kepada saya mengatakan bahwa port 80 terbuka.
Roman
1
Jika case pertama mengatakan "Forbidden" direktori root atau virtual host Anda tidak diatur dengan benar dalam banyak kasus. Anda mendapatkan tautan yang rusak karena 81 tidak menyelesaikan.
Urda
1
@Kirk itu situs web yang hebat!
Urda
13

Menjalankan netstat -a -natau ss -a -ndari prompt perintah akan menampilkan semua koneksi jaringan terbuka dan port mendengarkan pada mesin Anda. 0.0.0.0:80akan berarti bahwa ia mendengarkan pada port 80semua alamat ip (localhost dan alamat IP publik / pribadi Anda) di mana seperti 127.0.0.1:80itu berarti hanya mendengarkan di localhost. Anda dapat menambahkan -bperintah dan itu akan menunjukkan yang dapat dieksekusi menggunakan port itu. Anda bisa mendapatkan informasi yang sama menggunakan Resource Monitor di Windows 7 pada bagian Listening Ports pada tab Network.

Greg Bray
sumber
5

Jika Anda ingin melihat apakah itu terbuka dari server lain, Anda bisa telnet serverName 80dan melihat apakah sesi terbuka. Jika tidak, maka server tidak mendengarkan, atau port diblokir oleh firewall.

Jika terbuka dan kemudian ditutup segera, setidaknya windows 2003, maka perangkat lunak (seperti Exchange) mungkin tidak dikonfigurasi untuk mendengarkan pada antarmuka atau IP tertentu, tetapi sedang mendengarkan pada port lain. Saya telah melihat IIS berperilaku seperti ini karena itu bodoh, Apache mungkin tidak.

Kyle Brandt
sumber
2

Kau menulis:

Dalam kasus pertama yang saya dapatkan: Terlarang Anda tidak memiliki izin untuk mengakses / di server ini.

Meskipun ini mungkin terdengar aneh, Anda sebenarnya tidak memiliki masalah dengan port terbuka (tetapi dengan konfigurasi Apache).

Pesan "Terlarang" itu berasal dari server Apache Anda; itu berarti server web Anda dapat diakses dari Internet.

Anda harus mengonfigurasi Apache untuk memungkinkan penayangan ke semua host - jika tidak mereka akan mendapatkan halaman "Terlarang". IIRC, Apache pada awalnya diatur untuk hanya mengizinkan permintaan dari komputer lokal.

Di suatu tempat di konfigurasi Apache Anda, mungkin ada bagian seperti ini (direktori sebenarnya mungkin berbeda):

<Directory "/home/piskvor/www">
    Allow from 127.0.0.1
    Deny from all
(...)

Jika Anda ingin komputer mana pun dapat melihat halaman Anda, Anda perlu mengubah Deny from allke Allow from all. Lihat dokumentasi modul akses untuk info lebih lanjut .

Piskvor
sumber
1

Untuk melihat port terbuka, Anda mungkin harus menggunakan nmap. Mereka memiliki versi Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Ini tidak cukup jika Anda melihat port 80 Anda terbuka dari localhost - mungkin ada sesuatu yang menghalangi jika Anda mencobanya dari tempat lain, itu sebabnya saya merekomendasikan nmap

Dari klien yang Anda ketik: nmap ip-of-your-server

raerek
sumber
1

Jika Anda ingin menguji ini di jaringan lokal Anda, unduh nmap. Jika Anda ingin melihat cuaca, port dapat diakses oleh dunia luar, jalankan pemindaian di https://www.grc.com/x/ne.dll?bh0bkyd2

Jared
sumber
0

Port server dapat diikat ke satu alamat IP atau ke setiap alamat IP yang tersedia. Kedengarannya seperti instalasi Apache Anda diatur untuk mengikat hanya ke 127.0.0.1, dan Anda perlu mengaturnya untuk mengikat ke *. Di httpd.conf Anda (di direktori conf Apache), cari baris seperti Listen localhost:80dan ubah ke Listen 80.

Andrew Aylett
sumber
1
Saya menemukan file httpd.conf saya. Dalam file saya memiliki "Dengarkan 80".
Roman
0

telnet <host> <port>adalah temanmu Ini memiliki keutamaan diinstal pada hampir setiap komputer di dunia.

Suntingan setelah membaca kembali pertanyaan:

Berikut ini beberapa tip diagnostik yang bermanfaat

  1. Jika Anda dapat mengakses situs melalui localhost, tetapi tidak melalui IP situs-lokal Anda (192.168. *) dari host lain di jaringan Anda, itu mungkin masalah windows firewall.

  2. jika Anda dapat mengakses situs dari mesin situs-lokal lain, tetapi tidak dari internet ke IP publik Anda, itu adalah masalah konfigurasi router / port-forwarding.

jizzle
sumber
0

Dari jenis prompt perintah:

netstat -ano, look for 0.0.0.0:80 

... atau IP Anda: 80. Ini akan memberi tahu Anda jika port 80 terbuka pada mesin Anda. Sekarang jika Anda ingin memeriksa dan melihat apakah Anda dapat mengaksesnya dari luar jaringan Anda akan menentukan apakah Anda memiliki semacam firewall di tempat. Jika Anda melakukannya, Anda perlu meneruskan port 80 ke server web Anda.

Jason H
sumber
0

Jika Anda menggunakan Windows, gunakan SysInternals TCPView . Ini dapat memberi tahu Anda program mana yang menggunakan port apa.

Screenshto

Dio Phung
sumber
Terima kasih Dio Phung. Utilitas windows itu sangat membantu.
-2

Dalam perintah DOS:

C:\Windows\system32>netstat -a -b

使用中連線

  協定   本機位址               外部位址               狀態
  TCP    0.0.0.0:80             801781-N1:0            LISTENING     [Skype.exe]
  TCP    0.0.0.0:135            801781-N1:0            LISTENING      RpcSs      [svchost.exe]
  TCP    0.0.0.0:443            801781-N1:0            LISTENING     [Skype.exe]
...
Chi-Ming Tsai
sumber