|
Printable Version of Topic
Click here to view this topic in its original format |
| Forums > Глюкодром > Для Nuairi: Как сделать tracert по связке IP:port |
| Posted by: Lab on 26-06-2003, 09:41 |
|
Стандартный tracert под виндами не умеет этого делать. Как вариант предлагаю сделать сначала tracert, выяснить всю цепочку, а потом каждый IP просканировать сканером портов на предмет открытых или закрытых нужных портов. |
| Posted by: heineken man on 26-06-2003, 11:57 |
|
Традиционные tracert i traceroute базируются на icmp протоколе, там такого понятия как порт не существует. Некоторые имплементации traceroute используют для работы UDP протокол, (вроде даже слышал про использующие TCP). Тогда запрос посылается на какой-нибудь порт, если я не ошибаюсь обычно это UDP33434 по дефолту (его можно задавать в самой команде), для получения ответа порт не обязательно должен быть открыт. Обычно такие утилиты используют чтобы обойти файэрвол фильтрующий ICMP пакеты. Из Windows утилит, кажется VisualRoute использует UDP traceroute наряду с обычным ICMP. Для определения портов используют сканеры, лучше nmap еще ничего не придумали - Proved by Matrix Reloaded. |
| Posted by: Lab on 26-06-2003, 12:15 |
|
Как приятно, что моя догадка (мимолетом заскочившая в голову) нашла подтверждение у таких уважаемых людей |
| Posted by: heineken man on 26-06-2003, 17:07 | ||
Это вряд ли. Дело в том, что access list на раутере по дороге вполне может пропускать траффик на какой-нибудь порт дальше но блокировать его на себе самом, это две совсем независимые вещи. К тому же на самих раутерах обычно только Телнет порт открыт, да и тот отфильтрован. |
| Posted by: Nuairi on 26-06-2003, 17:24 |
|
так, хорошо. поставим вопрос более конкретно: требуется узнать проходит ли траффик через данный порт по всей цепочке, а если не проходит, то где именно его режут. если на первый вопрос ответ в общем-то однозначный - работает/не работает, то второй вопрос вызывает некоторые затруднения. |
| Posted by: FiL on 26-06-2003, 20:25 |
|
Вопрос конечно интересный. Причем очень. Дело в том, что юниксовый traceroute имеет параметры -P и -p. Один указывает протокол (tcp, udp, icmp, gre), другой - порт. НО! Я сейчас проверил - оно как-то странно работает. На сам хост зайти по данному порту можно, а вот трейс доходит до последнего хопа и далее никуды. Ага, а вот и объяснение: BUGS When using protocols other than UDP, functionality is reduced. In par- ticular, the last packet will often appear to be lost, because even though it reaches the destination host, there's no way to know that because no ICMP message is sent back. In the TCP case, traceroute should listen for a RST from the destination host (or an intermediate router that's filtering packets), but this is not implemented yet. |
| Posted by: FiL on 26-06-2003, 20:28 |
|
Ну в общем так, если конечный хост доступен, то и вопрос в трейсе не стоит, а если недоступен, то стандартный traceroute вроде помогает. P.S. А скенер портов тут никак не поможет. Смотришь ты, например, можно-ли достучаться до меня осликом на порт 4662. Ну можно. Но ни один рутер по дороге не слушает этот порт. Это я тебе как краевед говорю(с). |
| Posted by: Nuairi on 26-06-2003, 21:06 |
|
давайте говорить предметно! я недоступен по трейсу и пингануть меня проблематично. ftp, http, telnet на все порты, кроме одного - тоже идут лесом. но тем не менее я в осле (4662) качаю и с меня качают. можно ли определить, что я качаю ослом, не используя при этом осла? и живой ли я вообще, с точки зрения банальной эрудиции? как мне определить, что кто-то ещё живой на 4662-ом порту? или как мне определить, что пров не перекрыл мне 4662-й порт или что кто-то в пути не перекрыл всё тот же порт? всё взято исключительно примера ради, совпадение портов случайно. надеюсь, что этот мой опус не очень смешно выглядит в глазах краеведа. |
| Posted by: FiL on 26-06-2003, 22:49 | ||||
Давай предметно. Действительно больше пользы будет.
|
| Posted by: Nuairi on 26-06-2003, 23:06 | ||||
вот мы и подошли к тому, откуда начали. порт 4662 открыт (я ж это знаю), но подключится c удалённой машины не удалось. а к 80-му порту удалось. кто виноват: пров или кто-то в пути? как это определить? априори предположим, что с руками у меня всё в порядке. естестественно, это всего лишь пример. |
| Posted by: FiL on 26-06-2003, 23:16 | ||
1. А с локальной машины на этот порт подсоедениться можешь? А то умные слова, типа "априори" хорошо, а случаи, они разные бывают. 2. А нет, случаем, рядом еще одной машины? Чтобы проверить это дело без прова (причем нескольких) для начала. 3. А с других машин на твой 4662 могут законектиться? 4. А та удаленная машина хоть куда-то на 4662 может законектиться? 5. ну что-ж. Остается тот самый traceroute. который понимает порты и протоколы. |
| Posted by: Nuairi on 26-06-2003, 23:52 |
|
нашёл такую вещь, как tcptraceroute. пока только под *nix/mac. http://michael.toren.net/code/tcptraceroute/ (http://michael.toren.net/code/tcptraceroute/ если кому интересно. |
| Posted by: FiL on 27-06-2003, 00:07 |
| Kaк я уже говорил юниксовый traceroute это тоже умеет. По крайней мере тот, что сейчас в freebsd идет. |
| Posted by: Nuairi on 27-06-2003, 00:14 |
|
значить отнимаем у жены лаптоп и поднимаем там freebsd. вернее, подкючаем его в сетку домашнюю, бо freebsd там уже есть. p.s. чего только у ms может не быть, да чего угодно может не быть. |
| Posted by: FiL on 27-06-2003, 00:25 |
|
проблема в том, что если тебе надо твой компутер, то тебе это все ну никак не поможет |