Làm thế nào tôi có thể tìm ra nếu một cổng được mở hay không?


22

Tôi đã cài đặt máy chủ Apache trên máy tính Windows 7 của mình. Tôi đã có thể hiển thị index.php mặc định bằng cách nhập http: // localhost / trong dòng địa chỉ của trình duyệt của tôi.

Tuy nhiên, tôi vẫn không thể xem trang này bằng cách nhập địa chỉ IP của máy tính của tôi (không phải cục bộ (từ cùng một máy tính) không có trên toàn cầu (từ một máy tính khác được kết nối với Internet)).

Tôi được cho biết rằng tôi cần mở cổng 80. Tôi đã làm điều đó (theo cách được mô tả ở đây ) nhưng nó không giải quyết được vấn đề.

Trước hết tôi muốn kiểm tra cổng nào được mở và cổng nào không. Ví dụ, tôi không chắc chắn rằng cổng 80 của tôi đã bị đóng trước khi tôi cố mở. Tôi cũng không chắc chắn rằng nó được mở sau khi tôi cố gắng mở nó.

Tôi đã cố chạy một máy chủ web rất đơn giản được viết bằng Python. Tôi đã sử dụng cổng 81 và nó đã hoạt động! Và tôi đã không thử mở cổng 81. Vì vậy, nó được mở theo mặc định. Vì vậy, nếu 81 được mở theo mặc định, tại sao 80 không? Hay là nó?

THÔNG TIN BỔ SUNG:
1. Trong tệp httpd.conf của tôi, tôi có "Nghe 80".
2. Trang web này cho tôi biết rằng cổng 80 trên máy tính của tôi đã được mở.
3. Tôi nhận được các phản hồi khác nhau nếu tôi thử http: // myip: 80http: // myip: 81 . Trong trường hợp cuối cùng trình duyệt (Chrome) viết cho tôi rằng liên kết bị hỏng. Trong trường hợp đầu tiên tôi nhận được: Cấm Bạn không có quyền truy cập / trên máy chủ này.
4. IE viết rằng "Trang web đã từ chối hiển thị trang web này".


3
Nếu trường hợp đầu tiên nói "Bị cấm" thì thư mục gốc hoặc máy chủ ảo của bạn không được thiết lập chính xác.
Urda

Giả sử bạn đứng sau một bộ định tuyến, bạn đã thiết lập chuyển tiếp cổng trên bộ định tuyến chưa? Bộ định tuyến của bạn (hầu hết) có thể sử dụng cổng 80 cho giao diện quản trị dựa trên web của chính nó. Trong mọi trường hợp, bạn cần chuyển tiếp yêu cầu đến địa chỉ IP công cộng (bộ định tuyến) đến địa chỉ IP cục bộ của máy tính của bạn, tại cổng 80 (hoặc bất cứ điều gì).
Jongosi

Câu trả lời:


16

Nếu bạn chỉ kiểm tra các cổng của bạn từ bên ngoài. Sử dụng công cụ này:

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

Nó sẽ cố gắng kết nối với địa chỉ IP của bạn, trên cổng cụ thể và cho bạn biết nếu nó mở hoặc đóng với thế giới bên ngoài.

Vấn đề địa phương quá? Âm thanh như tường lửa Windows 7 đang cắt bạn. Thêm một ngoại lệ với hướng dẫn này ...

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


Tôi đã kiểm tra các cổng của mình bằng yougetsignal.com/tools/open-ports . Trang web này viết rằng cổng 80 của tôi được mở (trong khi 79 và 81 bị đóng).
La Mã

Bạn đã kiểm tra ngoại lệ Tường lửa Windows 7 của mình chưa? Nó sẽ giải thích lý do tại sao bạn có thể tiếp cận nó thông qua localhostchứ không phải từ các máy tính khác.
Urda

Urda, tôi đã mở cổng 80 theo cách này maximumpcguides.com/windows-7/ . Vì vậy, nó nên được mở cho tất cả các IP. Hơn nữa, trang web mà bạn cung cấp cho tôi nói rằng cổng 80 đang mở.
La Mã

1
Nếu trường hợp đầu tiên nói "Bị cấm" thì thư mục gốc hoặc máy chủ ảo của bạn không được thiết lập chính xác trong hầu hết các trường hợp. Bạn nhận được một liên kết bị hỏng vì 81 không giải quyết.
Urda

1
@Kirk đó là một trang web tuyệt vời!
Urda

13

Chạy netstat -a -nhoặc ss -a -ntừ một dấu nhắc lệnh sẽ hiển thị tất cả các kết nối mạng mở và các cổng nghe trên máy của bạn. 0.0.0.0:80sẽ có nghĩa là nó đang nghe trên cổng 80của tất cả các địa chỉ IP (localhost và địa chỉ IP công cộng / riêng tư của bạn) trong đó 127.0.0.1:80có nghĩa là nó chỉ nghe trên localhost. Bạn có thể thêm -bvào lệnh và nó sẽ hiển thị tệp thực thi nào đang sử dụng cổng đó. Bạn có thể nhận được thông tin tương tự bằng Trình theo dõi tài nguyên trong Windows 7 trong phần Cổng nghe của tab Mạng.


5

Nếu bạn muốn xem nếu nó được mở từ một máy chủ khác, bạn có thể chỉ telnet serverName 80và xem nếu phiên mở. Nếu không, máy chủ sẽ không nghe hoặc cổng bị chặn bởi tường lửa.

Nếu nó mở và sau đó đóng ngay lập tức, ít nhất là windows 2003, thì phần mềm (như Exchange) có thể không được cấu hình để nghe trên giao diện hoặc IP cụ thể đó, nhưng nó đang nghe trên các cổng khác. Tôi đã thấy IIS hành xử theo cách này vì nó ngu ngốc, Apache có thể không.


2

Bạn đã viết:

Trong trường hợp đầu tiên tôi nhận được: Cấm Bạn không có quyền truy cập / trên máy chủ này.

Mặc dù điều này nghe có vẻ lạ, nhưng thực sự bạn không gặp vấn đề gì với các cổng mở (nhưng với cấu hình Apache).

Thông báo "Cấm" đó đến từ máy chủ Apache của bạn; điều đó có nghĩa là máy chủ web của bạn thể truy cập được từ Internet.

Bạn cần định cấu hình Apache để cho phép phục vụ cho tất cả các máy chủ - nếu không họ sẽ nhận được trang "Bị cấm". IIRC, Apache ban đầu được thiết lập để chỉ cho phép các yêu cầu từ máy tính cục bộ.

Ở đâu đó trong cấu hình Apache của bạn, có thể có một phần như thế này (thư mục thực tế có thể khác):

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

Nếu bạn muốn cho phép bất kỳ máy tính nào xem các trang của mình, bạn cần thay đổi Deny from allthành Allow from all. Xem tài liệu mô-đun truy cập để biết thêm .


1

Để xem các cổng mở, có lẽ bạn nên sử dụng nmap Họ có phiên bản Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Sẽ không đủ nếu bạn thấy cổng 80 của mình mở từ localhost - có thể có thứ gì đó cản trở nếu bạn thử nó từ nơi khác, đó là lý do tại sao tôi khuyên dùng nmap

Từ máy khách bạn nhập: nmap ip-of-your-server


1

Nếu bạn muốn kiểm tra điều này trên mạng cục bộ của mình, hãy tải xuống nmap Nếu bạn muốn xem thời tiết, cổng có thể truy cập được ra thế giới bên ngoài, hãy chạy quét tại https://www.grc.com/x/ne.dll?bh0bkyd2


0

Các cổng máy chủ có thể được liên kết với một địa chỉ IP duy nhất hoặc với mọi địa chỉ IP có sẵn. Có vẻ như cài đặt Apache của bạn được thiết lập để liên kết chỉ với 127.0.0.1 và bạn cần thiết lập nó để liên kết với *. Trong httpd.conf của bạn (trong thư mục conf của Apache), hãy tìm một dòng như Listen localhost:80và thay đổi nó thành Listen 80.


1
Tôi tìm thấy tập tin httpd.conf của mình. Trong tập tin tôi có "Nghe 80".
La Mã

0

telnet <host> <port>là bạn của bạn. Nó có ưu điểm là được cài đặt trên hầu hết mọi máy tính trên thế giới.

Chỉnh sửa sau khi đọc lại câu hỏi:

Dưới đây là một số mẹo chẩn đoán hữu ích

  1. nếu bạn có thể truy cập trang web qua localhost, nhưng không qua IP cục bộ trang web (192.168. *) từ các máy chủ khác trên mạng của bạn, thì đó có thể là sự cố tường lửa của windows.

  2. nếu bạn có thể truy cập trang web từ các máy cục bộ khác, nhưng không phải từ internet đến IP công cộng của bạn, thì đó là sự cố cấu hình bộ định tuyến / cổng chuyển tiếp.


0

Từ một loại dấu nhắc lệnh:

netstat -ano, look for 0.0.0.0:80 

... Hoặc IP của bạn: 80. Điều này sẽ cho bạn biết nếu cổng 80 được mở trên máy của bạn. Bây giờ nếu bạn muốn kiểm tra và xem nếu bạn có thể truy cập nó từ bên ngoài mạng của bạn sẽ xác định xem bạn có sắp xếp tường lửa hay không. Nếu bạn làm, bạn sẽ cần chuyển tiếp cổng 80 đến máy chủ web của bạn.


0

Nếu bạn đang dùng Windows, hãy sử dụng SysIternals TCPView . Nó có thể cho bạn biết chương trình nào đang sử dụng cổng nào.

Màn hình


Cảm ơn Dio Phụng. Tiện ích windows đó thực sự hữu ích.

-2

Trong lệnh 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]
...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.