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


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.