Как проверить, существует ли маршрут между двумя хостами для определенного порта (например, 1433).
с помощью 'ip route get ADDRESS' вы можете проверить маршрут настроен в вашей системе, то есть первый переход:
$ ip route get 192.168.10.10
192.168.10.10 via 192.168.10.1 dev eth0 src 192.168.10.11
cache
чтобы проверить подключение порта, простой telnet должен:
$ telnet 192.168.10.10 1433
...
удачи!
Fisrt, ты должен это знать, route
действие происходит в Сетевой уровень, пока port
определяется в Транспортный уровень. Таким образом, наличие маршрута между двумя хостами не означает, что вы можете достичь порта на хосте.
Представьте, что два хозяина - это два дома, порт - ворота дома, маршрут - дорога. Вы можете построить много дорог между домами. Но когда вы подходите к дому, если ворота дома закрыты, вы не можете войти.
ОБНОВИТЬ
Для комментария к вопросу вы можете использовать такую команду, как:
Чтобы проверить, существует ли маршрут:
Чтобы проверить открытый порт:
Прочтите его man-страницу и попробуйте использовать.
Мне очень нравится mtr http://www.bitwizard.nl/mtr/. Также есть версия для Windows по адресу http://winmtr.net/Взаимодействие с другими людьми
Как отмечали другие, наличие маршрута не обязательно означает, что у вас есть возможность подключения. Если это то, что вы хотите проверить, netcat
предлагает -z
возможность сканирования, чтобы увидеть, открыт ли порт. (Вы также можете указать тайм-аут с помощью -w
если у вас может не быть маршрута; тайм-аут по умолчанию обычно составляет пару минут.)
$ nc -z 127.0.0.1 22; echo $?
0
$ nc -z 127.0.0.1 11; echo $?
1
Вы можете использовать код выхода, чтобы что-то сделать (или нет) в зависимости от того, продемонстрировали ли вы подключение к этому адресу и порту:
if nc -z 127.0.0.1 22; then
echo "SSH server is available."
else
echo "Cannot connect to SSH server."
fi
В -v
опция сделает вывод более подробным, и это можно использовать для сканировать диапазон портов:
$ nc -vz 127.0.0.1 22-25
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
$ echo $?
0
Как показано выше, в режиме многопортового сканирования код выхода будет истинным (0), если какой-либо из портов удалось подключиться, или ложным в противном случае.
Есть несколько разных версий netcat
; в приведенных выше примерах используется netcat-openbsd
пакет из Debian 9, который является переработкой "традиционного" netcat (netcat-traditional
пакет). По этим параметрам и кодам выхода традиционная версия практически аналогична. Если у вас возникли проблемы с параметрами командной строки netcat и кодами выхода, проверьте, какую версию вы используете; ls -l /bin/nc*
может дать некоторое представление.