Я хочу проверить, открыт или закрыт набор портов на некоторых удаленных серверах. Я провел различные дискуссии по этому поводу, и большинство людей предложили использовать nmap
, nc
и telnet <server-ip-address> <port-no>
. Как я могу различить эти три случая:
хорошо, если вы используете команду telnet для проверки подключения порта, она покажет
1. Telnet
2.nc
3.nmap
Сценарий: для проверки состояния порта tcp 80 удаленной системы
telnet myserver.com 80
nc -v myserver.com 80
nmap myserver.com 80
если вы получите тайм-аут или откажете: порт не открыт
предположим, если вы получили сообщение «Соединение отклонено»: значит порт открыт, но процесс не прослушивает
Если соединение установлено успешно: порт открыт, процесс прослушивает
запустить / перезапустить процесс прослушивания (если в соединении отказано)
Попросите сетевую команду контролировать соединение, мы можем подтвердить, заблокировано ли оно из промежуточного сетевого брандмауэра или из брандмауэра сервера / iptables
Примечание :
Для проверки порта udp (например, ntp) вы можете использовать параметр ниже nc
nc -uzv yourserver.com 123
Хотя телнет или netcat может использоваться для определения доступности порта, Nmap стандартный инструмент сканирования портов.
Опция nmap по умолчанию (TCP SYN сканирование) определяет, фильтруется ли данный порт брандмауэром или нет.
nmap -sS <host> -p <port>
Если вы хотите надежно различать открытое, закрытое и отфильтрованное состояния, используйте параметр -sY (сканирование SCTP INIT)
nmap -sY <host> -p <port>