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


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


Я проверил свои порты с помощью 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. См. Документацию модуля доступа для получения дополнительной информации .


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 (в каталоге conf Apache) найдите строку как Listen localhost:80и измените ее на Listen 80.


1
Я нашел свой файл httpd.conf. В файле у меня есть «Слушай 80».
— Роман

0

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

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

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

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

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


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]
...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.