Я написал программу, которая должна реализовать 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'.
Подводя итог, то, что порт находится в состоянии прослушивания, - это хороший \ положительный результат.
Надеюсь, это поможет вам лучше понять ..