Як я можу дізнатися, відкрито чи ні порт?


22

Я встановив Apache-сервер на свій комп'ютер Windows 7. Мені вдалося відобразити за замовчуванням index.php, ввівши http: // localhost / в адресному рядку мого браузера.

Однак я все ще не можу побачити цю сторінку, ввівши IP-адресу свого комп'ютера (ні локально (з того самого комп’ютера), ні глобально (з іншого комп’ютера, підключеного до Інтернету)).

Мені сказали, що мені потрібно відкрити порт 80. Я це зробив (описаним тут способом ), але це не вирішило проблему.

Перш за все, я хотів би перевірити, які порти відкриті, а які - ні. Наприклад, я не впевнений, що мій порт 80 був закритий до того, як я спробував відкрити. Я також не впевнений, що він відкритий після того, як я спробував його відкрити.

Я спробував запустити дуже простий веб-сервер, написаний на Python. Для цього я використовував порт 81, і він працював! І я не намагався відкрити порт 81. Отже, його відкрили за замовчуванням. Отже, якщо 81 відкрито за замовчуванням, чому 80 це не? Або це?

ДОДАТКОВА ІНФОРМАЦІЯ:
1. У моєму файлі httpd.conf є "Слухати 80".
2. Цей сайт повідомляє мені, що порт 80 на моєму комп’ютері відкритий.
3. Я отримую різні відповіді, якщо спробувати http: // myip: 80 та http: // myip: 81 . В останньому випадку браузер (Chrome) пише мені, що посилання порушено. У першому випадку я отримую: Заборонено Ви не маєте дозволу на доступ / на цьому сервері.
4. IE пише, що "Веб-сайт відмовився показувати цю веб-сторінку".


3
Якщо перший випадок говорить "Заборонено", ваш кореневий каталог або віртуальний хост встановлені неправильно.
Урда,

Якщо припустити, що ви за маршрутизатором, чи налаштовуєте переадресацію портів на маршрутизаторі? Ваш маршрутизатор (більшість), ймовірно, використовує порт 80 вже для власного веб-інтерфейсу адміністратора. У будь-якому випадку вам потрібно переадресувати запити на вашу загальнодоступну IP-адресу (маршрутизатор) на локальну IP-адресу вашого комп’ютера, на порт 80 (або що завгодно).
Йонгосі

Відповіді:


16

Якщо ви тільки точково перевіряєте свої порти ззовні. Скористайтеся цим інструментом:

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

Він спробує підключитися до вашої IP-адреси на певному порту та повідомить вам, чи відкритий він чи закритий для зовнішнього світу.

Місцеві проблеми теж? Схоже, брандмауер Windows 7 відрізає вас. Додайте виняток із цього підручника ...

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


Я перевірив свої порти за допомогою yougetsignal.com/tools/open-ports . Цей сайт пише, що мій порт 80 відкритий (тоді як 79 і 81 закриті).
Роман

Ви перевіряли винятки з брандмауера Windows 7? Це пояснило б, чому ви можете дістатися до нього через localhostінші комп’ютери, а не їх.
Урда

Urda, я відкрив порт 80 на цьому шляху maximumpcguides.com/windows-7 / ... . Отже, його слід відкрити для всіх ІС. Більше того, сайт, який ви мені даєте, говорить про те, що порт 80 відкритий.
Роман

1
Якщо перший випадок говорить "Заборонено", у більшості випадків ваша коренева директорія або віртуальний хост неправильно налаштовані. Ви отримаєте посилання розірвано, оскільки 81 не вирішує.
Урда,

1
@Kirk - це прекрасний веб-сайт зрештою!
Урда

13

Запуск netstat -a -nабо ss -a -nз командного рядка покаже всі відкриті мережеві з'єднання та порти прослуховування на вашій машині. 0.0.0.0:80означає, що він слухає порту 80всіх ip-адрес (localhost та ваших публічних / приватних IP-адрес), де, як 127.0.0.1:80би означало, він слухає лише на localhost. Ви можете додати -bдо команди, і вона покаже, який виконуваний файл використовує цей порт. Отримати таку ж інформацію можна за допомогою Монітора ресурсів у Windows 7 у розділі Порти прослуховування на вкладці Мережа.


5

Якщо ви хочете побачити, чи він відкритий з іншого сервера, ви можете просто telnet serverName 80подивитися і чи відкриється сеанс. Якщо це не так, то або сервер не слухає, або порт блокується брандмауером.

Якщо воно відкриється і одразу закривається, принаймні Windows 2003, програмне забезпечення (наприклад, Exchange) може не налаштовуватися на прослуховування в цьому конкретному інтерфейсі чи IP, але воно прослуховується в інших портах. Я бачив, як IIS поводиться так, тому що це дурно, Apache може не робити.


2

Ви написали:

У першому випадку я отримую: Заборонено Ви не маєте дозволу на доступ / на цьому сервері.

Хоча це може здатися дивним, у вас насправді немає проблем з відкритими портами (але з конфігурацією Apache).

Це повідомлення "Заборонено" надходить з вашого сервера Apache; це означає , що ваш веб - сервер є доступним з Інтернету.

Вам потрібно налаштувати Apache, щоб дозволити розміщення всіх хостів, інакше вони отримають сторінку "Заборонено". IIRC, Apache спочатку налаштований так, щоб дозволяти запити лише з локального комп'ютера.

Десь у вашому конфігурації Apache, ймовірно, є такий розділ (власне каталог може бути різним):

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

Якщо ви хочете , щоб дозволити будь-якого комп'ютера , щоб побачити ваші сторінки, вам потрібно змінити , Deny from allщоб Allow from all. Додаткову інформацію див. У документації модуля доступу .


1

Щоб побачити відкриті порти, ви, ймовірно, повинні використовувати nmap. Вони мають версію Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Недостатньо, якщо ви бачите, що порт 80 відкритий з localhost - можливо, щось стоїть на шляху, якщо ви спробуєте його з іншого місця, тому я рекомендую nmap

Від клієнта ви вводите: nmap ip-of-your-server



0

Порти сервера можуть бути прив'язані до однієї IP-адреси або до кожної доступної IP-адреси. Здається, ваша установка Apache налаштована на прив’язку лише до 127.0.0.1, і вам потрібно встановити її для прив’язки до *. У своєму httpd.conf (у конф-каталозі Apache) знайдіть такий рядок Listen localhost:80і змініть його на Listen 80.


1
Я знайшов свій файл httpd.conf. У файлі я "Слухай 80".
Роман

0

telnet <host> <port>твій друг. Він має честь встановити його майже на кожному комп'ютері в світі.

Редагує, перечитавши питання:

Ось кілька корисних порад щодо діагностики

  1. якщо ви можете отримати доступ до сайту через localhost, але не через свій локальний IP (192.168. *) від інших хостів у вашій мережі, ймовірно, це проблема брандмауера Windows.

  2. якщо ви можете отримати доступ до сайту з інших локальних машин, але не з Інтернету до вашого загальнодоступного IP-адреси, це проблема конфігурації маршрутизатора / переадресації портів.


0

З командного рядка введіть:

netstat -ano, look for 0.0.0.0:80 

... або ваш IP: 80. Це підкаже, чи відкритий порт 80 на вашій машині. Тепер, якщо ви хочете перевірити і побачити, чи можете ви отримати доступ до нього за межами вашої мережі, визначитеся, чи є у вас брандмауер. У цьому випадку вам потрібно буде переслати порт 80 на ваш веб-сервер.


0

Якщо у вас є Windows, використовуйте SysInternals TCPView . Він може сказати вам, яка програма використовує який порт.

Скріншто


Дякую Діо Пхунгу. Ця утиліта Windows дуже корисна.

-2

У команді 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]
...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.