Назад | Перейти на главную страницу

Как проверить, открыт ли порт в Red Hat Linux / CentOS

Я написал программу, которая должна реализовать SLP (rfc2608), и у меня возникли проблемы с ее тестированием. Я не уверен, закрыт ли порт или что-то там сбрасывает мои многоадресные датаграммы. Есть ли команда, которую я могу запустить с терминала redhat, чтобы узнать, открыт ли порт в этом окне?

Я видел несколько сообщений о простом подключении к порту через Telnet и т. Д., Но это работает только для портов TCP, верно? Я также читал, что есть сайты, которые могут тестировать подобные вещи извне. Но я действительно не хочу этого делать, так как меня не интересует полное сканирование портов, ящик находится в частной сети, и даже если это не так, я не хочу, чтобы это выглядело как нарушение безопасности происходит. Я просто хочу запросить и посмотреть, открыт ли порт 427.

Хм. Multicast, поэтому telnet работать не будет.

Я думаю, вы можете запустить tcpdump, чтобы посмотреть, доходит ли трафик до вашего сервера. Запустите на своем сервере что-то вроде этого:

tcpdump -i eth0 port 427 и посмотрите, появится ли что-нибудь.

Если ничего не помогает, то где-то есть какой-то блок.

Проверьте свой локальный брандмауэр с помощью чего-то вроде iptables -L -n чтобы убедиться, что цепочка INPUT разрешает ваш трафик.

Для дальнейшей диагностики вам может потребоваться запустить traceroutes с портативного компьютера, указав протокол и порт (в противном случае по умолчанию будет использоваться ICMP).

Хм, netstat -anp | grep 427 сделает свое дело. Может быть lsof -i | grep 427 также.

Чтобы проверить с внешнего хоста Linux, вы можете использовать nmap. Возможно nmap -sT -p 427 или nmap -sU -p 427 (для UDP).

netstat локально и Nmap на удаленном хосте.

Я часто использую

netstat -plunt

и

netstat -ant

чтобы получить представление о том, что происходит.

Я предполагаю, что под открытием порта вы имеете в виду, что он не заблокирован брандмауэром. В этом случае вы можете запустить следующую команду на хост-машине (в случае redhat / centos 7):

firewall-cmd --list-ports | grep -w <Port No.>

В случае redhat6 / centos6 вы можете выполнить

iptables --list-rule | grep -w <Port No.>

Надеюсь, это поможет..

Лучший способ из моего опыта - использовать nmap

nmap 10.0.0.1 -Pn -p 427 

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

выведет что-то вроде этого:

PORT    STATE    SERVICE
427/tcp filtered https

Nmap done: 1 IP address (1 host up) scanned in 2.14 seconds

Вышеуказанные параметры означают:

-Pn: Treat all hosts as online -- skip host discover

и

-p <port ranges>: Only scan specified ports
               Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

Если у вас еще нет nmap:

yum install nmap

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

или запустите nmap на этом поле

nmap 127.0.0.1 -Pn -p 427 

можете добавить --reason чтобы увидеть причину, по которой фильтруется

nmap 10.0.0.1 -Pn -p 427 --reason

Когда порт находится в состоянии прослушивания, это означает, что он готов и ожидает установления соединения.

Ваше приложение должно использовать порт в этот конкретный момент времени, прежде чем порт сможет перейти в состояние соединения 'ESTABLISHED'.

Подводя итог, то, что порт находится в состоянии прослушивания, - это хороший \ положительный результат.

Надеюсь, это поможет вам лучше понять ..