- How to Test Port [TCP/UDP] Connectivity from a Linux Server
- Testing TCP port connectivity with telnet
- Using nc command to test TCP port connectivity
- Testing UDP port connectivity wit nc command
- Some more articles you might also be interested in …
- Проверяем доступность портов
- 5 ways to check if a Port is open on a remote Linux PC
- TCP and UDP ports
- Best ways to check if a Port is open on a Linux PC
- 1. netcat command
- Проверка портов
- Как проверить, открыт ли порт на удаленной системе Unix с помощью команды nmap?
- Как проверить, открыт ли порт на удаленной системе Unix с помощью команды telnet?
- Как проверить, открытые порты с помощью утилиты netstat?
- Как проверить, открытые порты с помощью утилиты ss?
- Как проверить, открытые порты с помощью утилиты lsof?
How to Test Port [TCP/UDP] Connectivity from a Linux Server
Here is a short post to check port [TCP/UDP] connectivity from a Linux server. A TCP/IP network connection may be either blocked, dropped, open, or filtered. These actions are generally controlled by the IPtables firewall the system uses and is independent of any process or program that may be listening on a network port.
Telnet and nc are common tools used to test port connectivity from Linux server. Telnet can be used to test tcp port connections, where as nc can be used to test both tcp/udp ports connectivity. Make sure telnet and nc tools are installed on the Linux server you are trying to test connectivity.
# yum install nc # yum install telnet
Testing TCP port connectivity with telnet
Lets see how we can use telnet command to test the TCP port connectivity. The syntax to use the telnet command is as follows:
# telnet [hostname/IP address] [port number]
Example of successful connection:
# telnet 192.168.12.10 22 Trying 192.168.12.10. Connected to 192.168.12.10. Escape character is '^]'. SSH-2.0-OpenSSH_6.6.1 Protocol mismatch. Connection closed by foreign host.
Example of unsuccessful connection:
# telnet 192.168.12.10 22 Trying 192.168.12.10. telnet: connect to address 192.168.12.10: No route to host
Using nc command to test TCP port connectivity
The syntax to use nc command for testing TCP post connectivity is as follows:
# nc -z -v [hostname/IP address] [port number]
Example of successful connection:
# nc -z -v 192.168.10.12 22 Connection to 192.118.20.95 22 port [tcp/ssh] succeeded!
Example of unsuccessful connection:
# nc -z -v 192.168.10.12 22 nc: connect to 192.118.20.95 port 22 (tcp) failed: No route to host
Testing UDP port connectivity wit nc command
The syntax to test UDP port connectivity with nc command is as follows:
# nc -z -v -u [hostname/IP address] [port number]
Example of successful connection:
# nc -z -v -u 192.168.10.12 123 Connection to 192.118.20.95 123 port [udp/ntp] succeeded!
Some more articles you might also be interested in …
Проверяем доступность портов
Очень часто возникает потребность проверить порт на состояние открыт/закрыт. Но не многие смогут ответить на вопрос сколько есть способов для этого, и как проверить, например, открыт ли UDP порт. Ответы на эти вопросы постарась ответить в этой заметке.
1) Проверка TCP-порта.
На дыннй момент мне удалось найти 3 метода, которыми это можно сделать:
Если соединение удачно, то увидим такой ответ:
$telnet 11.1.1.11 25
Trying 11.11.11.11.
Connected to mail.domain.com.ua.
Escape character is ‘^]’.
220 mail.domain.com.ua ESMTP Postfix
Если же неудачное, то такое:
$telnet 11.11.11.11 23
Trying 11.11.11.11.
telnet: connect to address 11.11.11.11: Operation timed out
telnet: Unable to connect to remote host
Иногда в дополнении появляется такое:
telnet: connect to address 11.11.11.11: Operation not permitted
Если соединение удачно, то увидим такой ответ:
$nc -v 11.11.11.11 25
Connection to 11.11.11.11 25 port [tcp/smtp] succeeded!
220 mail.domain.com.ua ESMTP Postfix
Если же неудачное, то такое:
$nc -v 11.11.11.11 23
nc: connect to 11.11.11.11 port 23 (tcp) failed: Operation timed out
Если соединение удачно, то увидим такой ответ:
PORT STATE SERVICE
25/tcp open smtp
Если же неудачное, то такое:
PORT STATE SERVICE
23/tcp closed telnet
Иногда при сканнировании выводится такое сообщение:
PORT STATE SERVICE
23/tcp filtered telnet
тогда сказать однозначно открыт или закрыт – нельзя.
2) Проверка UDP-порта.
Если соединение удачно, то увидим такой ответ:
$nc -uv 11.11.11.12 53
Connection to 11.11.11.12 53 port [udp/domain] succeeded!
Если же неудачное, то ничего не выводиться:
Если соединение удачно, то увидим такой ответ:
#nmap -sU -p U:53 11.1.11.12
PORT STATE SERVICE
53/udp open|filtered domain
Если же неудачное, то такое:
#nmap -sU -p U:53 11.1.11.13
PORT STATE SERVICE
53/udp closed domain
Преимущества : лёгко и удобно пользоваться, установлена практически на любой ОС, для запуска не требуются права root’a.
Недостатки : нельзя проверять UDP порты
Преимущества : лёгко и удобно пользоваться, установлена практически на любой ОС, для запуска не требуются права root’a, есть возможность сканирования UDP-портов
Недостатки : не обнаружено.
Преимущества : удобно пользоваться, функционал просто радует, есть возможность сканирования UDP-портов
Недостатки : для запуска требуются права root’a, устанавливать приходиться отдельно.
Опубликовано с разрешения журнала root.ua
5 ways to check if a Port is open on a remote Linux PC
T here is an ample number of ways to check for any open ports on a remote Linux PC. Knowing open ports on a Linux machine helps system administrators to connect to the remote PC for troubleshooting system and cloud server issues.
TCP and UDP ports
TCP stands for Transmission Control Protocol. In this method, the computers get connected directly until the data transfer is taking place. Therefore, with this method, the data transfer is guaranteed and is reliable but puts a higher load on the server as it has to monitor the connection and the data transfer too.
UDP stands for User Datagram Protocol. Using this method, the data is sent in the form of little packages into the network with the hope that it reaches the final destination. It means the two computers are not connected directly to each other. This method does not provide any guarantee that the data you send will ever reach its destination. Load on the server is less, and so this method is used commonly by the system administrators first to try something that’s not so important.
Now that you know the types are ports on a Linux system, let’s get started with ways of finding the ones that are open.
Best ways to check if a Port is open on a Linux PC
There are multiple ways you can do it. However, the most reliable way to do this is by using the following commands:
- nc: netcat command
- nmap: network mapper tool
- telnet: telnet command
- echo > /dev/tcp/..
- netstat – tuplen
Let’s go through each method one by one.
1. netcat command
netcat is a simple Unix utility that can be used to write and read data using UDP and TCP protocol across network connections.
The primary reason for its design is to provide a back-end tool that works with the scripts and programs. It is also an exploration and network debugging tool that offers tons of features.
To use it, you need to install it in your distro using the respective installation commands.
Проверка портов
Netcat – это простая утилита Unix, которая читает и записывает данные через сетевые соединения, используя протокол TCP или UDP. Она разработана, чтобы быть надежным «внутренним» инструментом, который может использоваться напрямую или легко управляться другими программами и скриптами.
В то же время это многофункциональный инструмент для отладки и исследования сети, поскольку он может создавать практически любые типы соединений, которые вам понадобятся, и имеет несколько интересных встроенных возможностей.
Netcat имеет три основных режима работы. Это режим подключения, режим прослушивания и туннельный режим. Общий синтаксис для nc (netcat):
$ nc [-options] [HostName or IP] [PortNumber]
Проверяем открыт ли 80 порт на сервере
если порт закрыт мы увидим вот такой ответ
Как проверить, открыт ли порт на удаленной системе Unix с помощью команды nmap?
Nmap («Network Mapper») – это инструмент с открытым исходным кодом для исследования сети и аудита безопасности. Он был разработан для быстрого сканирования больших сетей, хотя он отлично работает на отдельных хостах.
Хотя Nmap обычно используется для аудита безопасности, многие системные и сетевые администраторы считают его полезным для рутинных задач, таких как инвентаризация сети, управление расписаниями обновления служб и мониторинг времени работы хоста или службы.
$ nmap [-options] [HostName or IP] [-p] [PortNumber]
проверим открыт ли 22 порт на сервере, если открыт увидим вот этот ответ
проверим 349 порт, если он закрыт увидим следующий ответ
Nmap’ом можно проверить открытые порты локально
для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:
Дальше запускаем сканирование:
Как проверить, открыт ли порт на удаленной системе Unix с помощью команды telnet?
Команда telnet используется для интерактивного взаимодействия с другим хостом по протоколу TELNET. Общий синтаксис для telnet:
$ telnet [HostName or IP] [PortNumber]
проверим открыт ли 22 порт telnet’ом, если открыт увидим следующий ответ
Как проверить, открытые порты с помощью утилиты netstat?
Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:
- -l или —listening — посмотреть только прослушиваемые порты;
- -p или —program — показать имя программы и ее PID;
- -t или —tcp — показать tcp порты;
- -u или —udp показать udp порты;
- -n или —numeric показывать ip адреса в числовом виде.
Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:
Как проверить, открытые порты с помощью утилиты ss?
Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения. Опции у неё такие же:
Можно вывести только процессы, работающие на 80-том порту:
Как проверить, открытые порты с помощью утилиты lsof?
Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:
Ещё один пример, смотрим какие процессы работают с портом 80: