Как я могу узнать, открыт порт или нет?

22

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

Однако я все еще не могу увидеть эту страницу, набрав IP-адрес своего компьютера (ни локально (с того же компьютера), ни глобально (с другого компьютера, подключенного к Интернету)).

Мне сказали, что мне нужно открыть порт 80. Я сделал это (способом, описанным здесь ), но это не решило проблему.

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

Я попытался запустить очень простой веб-сервер, написанный на Python. Для этого я использовал порт 81, и это сработало! И я не пытался открыть порт 81. Итак, он был открыт по умолчанию. Итак, если 81 открыт по умолчанию, почему 80 нет? Или это так?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
1. В моем файле httpd.conf есть «Listen 80».
2. Этот сайт сообщает мне, что порт 80 на моем компьютере открыт.
3. Я получаю разные ответы, если я пытаюсь http: // myip: 80 и http: // myip: 81 . В последнем случае браузер (Chrome) пишет мне, что ссылка не работает. В первом случае я получаю: Запрещено. У вас нет прав доступа к этому серверу.
4. IE пишет, что «веб-сайт отказался показывать эту веб-страницу».

Римский
источник
3
Если в первом случае написано «Запрещено», ваш корневой каталог или виртуальный хост настроены неправильно.
Урда
Предполагая, что вы находитесь за маршрутизатором, вы настроили переадресацию портов на маршрутизаторе? Ваш маршрутизатор (большинство), вероятно, уже использует порт 80 для своего собственного веб-интерфейса администратора. В любом случае вам необходимо перенаправить запросы на ваш общедоступный IP-адрес (маршрутизатор) на локальный IP-адрес вашего компьютера, на порт 80 (или любой другой).
Jongosi

Ответы:

16

Если вы просто проверяете свои порты снаружи. Используйте этот инструмент:

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

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

Локальные проблемы тоже? Похоже, брандмауэр Windows 7 отрезает вас. Добавить исключение с этим руководством ...

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

Urda
источник
Я проверил свои порты с помощью yougetsignal.com/tools/open-ports . Этот сайт пишет, что мой порт 80 открыт (в то время как 79 и 81 закрыты).
Роман
Вы проверяли исключения Windows 7 Firewall? Это объясняет, почему вы можете связаться с ним через localhostдругие компьютеры.
Урда
Урда, я открыл порт 80 таким образом maximumpcguides.com/windows-7/… . Таким образом, он должен быть открыт для всех IP-адресов. Более того, сайт, который вы мне даете, говорит, что порт 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. См. Документацию модуля доступа для получения дополнительной информации .

Piskvor
источник
1

Чтобы увидеть открытые порты, вы, вероятно, должны использовать nmap. У них есть версия для Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Недостаточно, если вы видите, что ваш порт 80 открыт с localhost - возможно, что-то стоит на пути, если вы попробуете это из другого места, поэтому я рекомендую nmap

С клиента вы набираете: nmap ip-of-your-server

raerek
источник
1

Если вы хотите проверить это в своей локальной сети, скачайте nmap. Если вы хотите узнать, доступен ли порт для внешнего мира, запустите сканирование по адресу https://www.grc.com/x/ne.dll?bh0bkyd2.

Джаред
источник
0

Порты сервера могут быть привязаны либо к одному IP-адресу, либо к каждому доступному IP-адресу. Похоже, ваша установка Apache настроена на привязку только к 127.0.0.1, и вам нужно настроить ее на привязку к *. В вашем httpd.conf (в каталоге conf Apache) найдите строку как Listen localhost:80и измените ее на Listen 80.

Эндрю Айлетт
источник
1
Я нашел свой файл httpd.conf. В файле у меня есть «Слушай 80».
Роман
0

telnet <host> <port>твой друг. Его достоинство заключается в том, что он устанавливается практически на каждом компьютере в мире.

Редактирует после перечитывания вопроса:

Вот несколько полезных советов по диагностике

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

  2. если вы можете получить доступ к сайту с других локальных компьютеров сайта, но не из Интернета по общедоступному IP-адресу, это проблема конфигурации маршрутизатора / переадресации портов.

jdizzle
источник
0

Из командной строки введите:

netstat -ano, look for 0.0.0.0:80 

... или ваш IP: 80. Это скажет вам, если порт 80 открыт на вашем компьютере. Теперь, если вы хотите проверить и получить доступ к нему из-за пределов вашей сети, определите, есть ли у вас своего рода брандмауэр. Если вы это сделаете, вам нужно будет перенаправить порт 80 на ваш веб-сервер.

Джейсон Х
источник
0

Если вы работаете в Windows, используйте SysInternals TCPView . Он может сказать вам, какая программа использует какой порт.

Screenshto

Дио Фунг
источник
Спасибо Дио Фунг. Эта утилита 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]
...
Чи-Мин Цай
источник