traceroute или tracepath для Windows? (не tracert, афаик)

Что я хочу сделать (в Windows Box), так это tracerouteиспользовать tracepath TCP на определенном порту.

Насколько я знаю, Windows tracertбудет использовать ТОЛЬКО ICMP. Но можно ли tracertкаким-то образом использовать это, чего я не знаю?

трассировка

Я считаю, что в Linux следующие два варианта помогут мне добиться того, что я хочу:

traceroute mail.yourserver.com -p25 -T

Опция -p25указывает ему использовать порт 25 в качестве порта назначения и -Tговорит ему использовать пакеты TCP вместо ICMP.

трассировка

tracepath 192.168.1.99/443

Отправит пакет, предназначенный для порта 443, на 192.168.1.99 и сообщит вам, на каком узле пакет застрял.

Для Windows?

Кто-нибудь знает о порте tracerouteили tracepathкакой-либо другой утилите Windows для выполнения того же? Если нет встроенного решения для Windows, есть ли стороннее решение?

Я немного изменил вопрос, потому что есть вероятность, что в Windows tracert есть какая-то недокументированная функция... Кроме того, хотя это может быть вопрос о программном обеспечении, я не уверен, что softwarerecs будет лучшим выбором, поскольку это очень специфический аспект о программное обеспечение, которое относится только к определенной области сети. Теперь, когда существует так много сайтов-стопок, сложно знать, где публиковать темы, которые могут подпадать под многие категории; например, суперпользователь также может быть возможным сайтом для публикации.
@JensLink Я проверю это позже сегодня, не могли бы вы дать ответ, чтобы я мог отметить его как правильный (если он работает так, как мне нужно).
К вашему сведению, ссылки на другие сайты не являются ответами

Ответы (2)

Наконец-то я нашел решение для этого, которое хорошо работает для меня:

TCP Traceroute on Windows And Linux
http://simulatedsimian.github.io/tracetcp.html
https://github.com/SimulatedSimian/tracetcp/releases

и для записи о том, как это работает:

https://support.logicboxes.com/helpdesk/index.php?/Knowledgebase/Article/View/11/37/using-tcp-traceroute-on-windows-and-linux

А вот копия одного из простых/типичных примеров использования:

C:\tracetcp>tracetcp www.redhat.com:443 -h 3

Tracing route to 184.85.48.112 [a184-85-48-112.deploy.akamaitechnologies.com] on
port 443
Over a maximum of 30 hops.
3 32 ms 50 ms 56 ms 172.20.16.65
4 34 ms 14 ms 33 ms 172.26.16.1
5 503 ms 14 ms 68 ms 172.20.7.34
6 43 ms 170 ms 25 ms 203.117.35.9
7 28 ms 86 ms 26 ms 203.117.34.2
8 216 ms 168 ms 99 ms 203.117.34.14
9 * * * Request timed out.
10 Destination Reached in 211 ms. Connection established to 184.85.48.112
Trace Complete.

Вы ДОЛЖНЫ установить библиотеку winpcap, чтобы эта версия работала. tracetcp был протестирован с версиями 3.* и 4.* этой библиотеки. (Поскольку WinXP SP2 удалил необработанные сокеты.) Но если вы работаете в сети, у вас, вероятно, уже установлены winpcap и wireshark.

Я думаю, что это не сработает, потому что порты TCP - это L4, который не используется для маршрутизации. Маршрутизаторам в середине пути нужно только проверить уровень L3, чтобы принять решение о том, куда отправить этот пакет (если только они не используют PBR), но если пакет предназначался им, скорее всего, у них отбрасывается ACL. множество пакетов, предназначенных им (22TCP, 23TCP, 80TCP и т. д.), если у них нет правильного, надежного источника. Также все неиспользуемые порты, скорее всего, защищены этим ACL.

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

tcptraceroute в основном работает так же, как и любой другой вариант traceroute. Подробнее см. en.wikipedia.org/wiki/Traceroute .