Почему при назначении маршрута:route add A gw B
в таблице маршрутизации появляется маршрут, но
traceroute -n A - не показывает, что маршрут отрабатывает.Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.1 192.168.0.18 255.255.255.255 UGH 0 0 0 eth0
192.168.1.2 192.168.0.18 255.255.255.255 UGH 0 0 0 eth0
...
0.0.0.0 192.168.0.253 0.0.0.0 UG 0 0 0 eth0traceroute -n 192.168.1.1
traceroute to 192.168.1.1 (192.168.1.1), 30 hops max, 60 byte packets
1 192.168.0.253 0.238 ms 0.234 ms 0.196 ms]
2 192.168.0.253 3001.031 ms !H 3001.029 ms !H 3001.024 ms !H
А противоположная сторона знает о вашей сети?
> А противоположная сторона знает о вашей сети?нет. 192.168.0.18 не знает о 192.168.1.0
>> А противоположная сторона знает о вашей сети?
> нет. 192.168.0.18 не знает о 192.168.1.0Во первых ты ответил на _другой_ вопрос.
Во вторых - а нафига ты тогда пакеты для 1.0 раутишь на 0.18 ?!?!?! Если оно не знает?
>>> А противоположная сторона знает о вашей сети?
>> нет. 192.168.0.18 не знает о 192.168.1.0
> Во первых ты ответил на _другой_ вопрос.т.к. в данном случае это актуальнее.
> Во вторых - а нафига ты тогда пакеты для 1.0 раутишь на
> 0.18 ?!?!?! Если оно не знает?для эксперимента. На самом деле мне надо было связать 2 машины из разных подсетей на удаленном объекте. Мне сообщили ip-шлюза. Роутинг прописал. Связи не появилось. А tracerote показал что и не идет через указанный маршрут.
Вот и сделал в своей локалке эксперимент, указав заведомо нерабочий вариант. Получил ту же картину (почти). На самом деле 1-я попытка traceroute была правильной, а далее как указано выше.
Сейчас почитал еще об роутинге. Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к исполнению.
>[оверквотинг удален]
>> 0.18 ?!?!?! Если оно не знает?
> для эксперимента. На самом деле мне надо было связать 2 машины из
> разных подсетей на удаленном объекте. Мне сообщили ip-шлюза. Роутинг прописал. Связи
> не появилось. А tracerote показал что и не идет через указанный
> маршрут.
> Вот и сделал в своей локалке эксперимент, указав заведомо нерабочий вариант. Получил
> ту же картину (почти). На самом деле 1-я попытка traceroute была
> правильной, а далее как указано выше.
> Сейчас почитал еще об роутинге. Развеялось мое заблуждение, что роутинг указанный вручную
> - обязателен к исполнению.Неверные выводы из ошибочной интерпретации результатов некорректно поставленного эксперимента.
>>[оверквотинг удален]
>> Сейчас почитал еще об роутинге. Развеялось мое заблуждение, что роутинг указанный вручную
>> - обязателен к использованию.
> Неверные выводы из ошибочной интерпретации результатов некорректно поставленного эксперимента.давайте вместе поставим :)
локальная сеть:
имеем 192.168.0.226/24
имеем 192.168.0.18/24 (1 сетевая и 1 ip на нем)
имеем 192.168.0.253/24 на котором есть alias 192.168.1.253/24Проверяем доступность 192.168.1.253 с 192.168.0.226
На 226-м:
# route -n
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.253 0.0.0.0 UG 0 0 0 eth0192.168.1.253 - доступен
# route add 192.168.1.253 gw 192.168.0.18
# route -n
192.168.1.253 192.168.0.18 255.255.255.255 UGH 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.253 0.0.0.0 UG 0 0 0 eth0# traceroute -n 192.168.1.253
traceroute to 192.168.1.253 (192.168.1.253), 30 hops max, 60 byte packets
1 192.168.0.18 0.253 ms 0.239 ms 0.233 ms
....192.168.1.253 - пока недоступен
# ping -w3 192.168.1.253
# traceroute -n 192.168.1.253
traceroute to 192.168.1.253 (192.168.1.253), 30 hops max, 60 byte packets
1 192.168.1.253 0.232 ms 0.226 ms 0.221 ms192.168.1.253 - стал доступен (напрямую), хотя команда:
#ip route get 192.168.1.253
выдает:
192.168.1.253 via 192.168.0.18 dev eth0 src 192.168.0.226
cache mtu 1500 advmss 1460 hoplimit 64
==========
ну и чем некорректен эксперимент/вывод ?
Напомню вывод: Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к использованию.
>[оверквотинг удален]
> ms
> 192.168.1.253 - стал доступен (напрямую), хотя команда:
> #ip route get 192.168.1.253
> выдает:
> 192.168.1.253 via 192.168.0.18 dev eth0 src 192.168.0.226
> cache mtu 1500 advmss 1460 hoplimit 64
> ==========
> ну и чем некорректен эксперимент/вывод ?
> Напомню вывод: Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к
> использованию.Тем что вы работаете с алиасом, который стал доступен после арп-запроса
>[оверквотинг удален]
>> 192.168.1.253 - стал доступен (напрямую), хотя команда:
>> #ip route get 192.168.1.253
>> выдает:
>> 192.168.1.253 via 192.168.0.18 dev eth0 src 192.168.0.226
>> cache mtu 1500 advmss 1460 hoplimit 64
>> ==========
>> ну и чем некорректен эксперимент/вывод ?
>> Напомню вывод: Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к
>> использованию.
> Тем что вы работаете с алиасом, который стал доступен после арп-запросаХорошо. Тогда какое может быть объяснение тому, что при установленном роутинге на хост A через шлюз B (циска) (при ненастроенном шлюзе)
traceroute на host A - не показывает попытку идти через шлюз B
?
>[оверквотинг удален]
>>> cache mtu 1500 advmss 1460 hoplimit 64
>>> ==========
>>> ну и чем некорректен эксперимент/вывод ?
>>> Напомню вывод: Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к
>>> использованию.
>> Тем что вы работаете с алиасом, который стал доступен после арп-запроса
> Хорошо. Тогда какое может быть объяснение тому, что при установленном роутинге на
> хост A через шлюз B (циска) (при ненастроенном шлюзе)
> traceroute на host A - не показывает попытку идти через шлюз B
> ?вы не тем смотрите инструментом.
смотрите tcpdump-ом
>[оверквотинг удален]
>>>> ну и чем некорректен эксперимент/вывод ?
>>>> Напомню вывод: Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к
>>>> использованию.
>>> Тем что вы работаете с алиасом, который стал доступен после арп-запроса
>> Хорошо. Тогда какое может быть объяснение тому, что при установленном роутинге на
>> хост A через шлюз B (циска) (при ненастроенном шлюзе)
>> traceroute на host A - не показывает попытку идти через шлюз B
>> ?
> вы не тем смотрите инструментом.
> смотрите tcpdump-омПосмотрел на удаленном объекте.
tcpdump доступен только на исходном хосте (откуда делается traceroute).Так вот там:
при прописанном роутинге через шлюз "B" (циска)
tcpdump - не показывает участия "B" при traceroute -n -T <A>только при traceroute -n -T -g B <A>
есть рез-т:
B > A: ICMP B unreachable - source route failed, length 80
=====
ну в принципе я уже давно понял, что причина того, что я не могу достучаться до "A" в том, что шлюз "B" (циска) недонастроен. (PS. Это чужая железка)Меня просто смущало, что traceroute не показывает даже ПОПЫТКИ идти через указанный шлюз.
>[оверквотинг удален]
> tcpdump - не показывает участия "B" при traceroute -n -T <A>
> только при traceroute -n -T -g B <A>
> есть рез-т:
> B > A: ICMP B unreachable - source route failed, length 80
> =====
> ну в принципе я уже давно понял, что причина того, что я
> не могу достучаться до "A" в том, что шлюз "B" (циска)
> недонастроен. (PS. Это чужая железка)
> Меня просто смущало, что traceroute не показывает даже ПОПЫТКИ идти через указанный
> шлюз.О том, что сеть А находится за шлюзом В - должен знать ваш шлюз, а не ваша хостовая машина.
Ваша хостовая машина- ничего кроме дефолтного роутинга на ваш шлюз знать не должна.
Ваш шлюз должен знать, за каким шлюзом находиться хост в сети А.
Шлюз В должен знать что за ним находиться хост А.Ну и в обратную сторону соответственно....шлюз В должен знать что ваш хост находится за вашим шлюзом...
>[оверквотинг удален]
>> Меня просто смущало, что traceroute не показывает даже ПОПЫТКИ идти через указанный
>> шлюз.
> О том, что сеть А находится за шлюзом В - должен знать
> ваш шлюз, а не ваша хостовая машина.
> Ваша хостовая машина- ничего кроме дефолтного роутинга на ваш шлюз знать не
> должна.
> Ваш шлюз должен знать, за каким шлюзом находиться хост в сети А.
> Шлюз В должен знать что за ним находиться хост А.
> Ну и в обратную сторону соответственно....шлюз В должен знать что ваш хост
> находится за вашим шлюзом...И вот тут мы подходим к вопросу :) который я вообще говоря хотел задать в самом начале...
А сети которые вы связываете, часом не серые?
Потому что если вам надо связать между собой две серые сети через интернет- то вы мягко говоря подошли к решению задачи вообще не с того конца... :)
>[оверквотинг удален]
>> Ваш шлюз должен знать, за каким шлюзом находиться хост в сети А.
>> Шлюз В должен знать что за ним находиться хост А.
>> Ну и в обратную сторону соответственно....шлюз В должен знать что ваш хост
>> находится за вашим шлюзом...
> И вот тут мы подходим к вопросу :) который я вообще говоря
> хотел задать в самом начале...
> А сети которые вы связываете, часом не серые?
> Потому что если вам надо связать между собой две серые сети через
> интернет- то вы мягко говоря подошли к решению задачи вообще не
> с того конца... :)да нет. Все тривиальнее. Наш сервер находится в некоем учреждение в местной localnet-1, там же есть отдельная localnet-2. Задача была связать наш сервер (из localnet-1) с машиной из localnet-2. Задействовали циску, котрая смотрит "1-м концом" с localnet-1, а "2-м концом" в localnet-2. Мне надо было только прописать роутинг на своем сервере.
В рез-те - связи не появилось. Вопрос - почему?
traceroute -n на хост из localnet-2 не показал, что он пытается использовать указанный шлюз (циску). Вот это и вызывает недоумение.
PS. К циске и localnet-2 я не имею никакого отношения. Все сети имеют серые addr.
> Тем что вы работаете с алиасом, который стал доступен после арп-запросаНе совсем так. Если я что-то понимаю в сетях, то запрос уходит на шлюз (192.168.0.18), как и говорит 'ip route get 192.168.1.253'.
А ответ приходит сразу от конечного IP лишь потому, что узел шлюза содержит этот адрес среди прочих (не важно на каком интерфейсе). Т.е. шлюз не знает, что в данном случае он шлюз - он просто получает пакет, видит что его не надо маршрутизировать дальше, и поэтому просто присылает ответ от нужного IP.
И команда 'arp -an |grep 192.168.1.253' покажет отсутствие соответствия MAC адреса для данного IP.
>> Тем что вы работаете с алиасом, который стал доступен после арп-запроса
> Не совсем так. Если я что-то понимаю в сетях, то запрос уходит
> на шлюз (192.168.0.18), как и говорит 'ip route get 192.168.1.253'.
> А ответ приходит сразу от конечного IP лишь потому, что узел шлюза
> содержит этот адрес среди прочих (не важно на каком интерфейсе). Т.е.
> шлюз не знает, что в данном случае он шлюз - он
> просто получает пакет, видит что его не надо маршрутизировать дальше, и
> поэтому просто присылает ответ от нужного IP.
> И команда 'arp -an |grep 192.168.1.253' покажет отсутствие соответствия MAC адреса
> для данного IP.192.168.0.18 не содержит 192.168.1.253 ни на каком интерфейсе.... если я правильно понял схему
>[оверквотинг удален]
>> на шлюз (192.168.0.18), как и говорит 'ip route get 192.168.1.253'.
>> А ответ приходит сразу от конечного IP лишь потому, что узел шлюза
>> содержит этот адрес среди прочих (не важно на каком интерфейсе). Т.е.
>> шлюз не знает, что в данном случае он шлюз - он
>> просто получает пакет, видит что его не надо маршрутизировать дальше, и
>> поэтому просто присылает ответ от нужного IP.
>> И команда 'arp -an |grep 192.168.1.253' покажет отсутствие соответствия MAC адреса
>> для данного IP.
> 192.168.0.18 не содержит 192.168.1.253 ни на каком интерфейсе.... если я правильно понял
> схемуу 192.168.0.18-го дефолтный gw = 0.253. Его запросили о 192.168.1.253, о котором он ничего не знает, и передел запрос на 0.253, который знает... Как-то так, наверное.
> 192.168.0.18 не содержит 192.168.1.253 ни на каком интерфейсе.... если я правильно понял схемуа, да - невнимательно посмотрел. Тогда на 192.168.0.18 должен быть маршрут до 192.168.1.253, и он по ICMP Redirect выслал исходной машине новый маршрут.
>> Тем что вы работаете с алиасом, который стал доступен после арп-запроса
> Не совсем так. Если я что-то понимаю в сетях, то запрос уходит
> на шлюз (192.168.0.18), как и говорит 'ip route get 192.168.1.253'.
> А ответ приходит сразу от конечного IP лишь потому, что узел шлюза
> содержит этот адрес среди прочих (не важно на каком интерфейсе). Т.е.
> шлюз не знает, что в данном случае он шлюз - он
> просто получает пакет, видит что его не надо маршрутизировать дальше, и
> поэтому просто присылает ответ от нужного IP.
> И команда 'arp -an |grep 192.168.1.253' покажет отсутствие соответствия MAC адреса
> для данного IP.Тоже так подумал. Только с последнем скорее не согласен. В arp будут mac и для 192.168.1.253 и для 192.168.0.253, причем в данном случае одинаковые.
Последний мой эксперимент действительно в этом случае - некорректен.
---
А в целом по теме: почему при прописанном роутинге traceroute не показывает попытку дойти до шлюза - ответ видимо в разных типах/настройках роутеров. В моем случае недонастроенная циска просто сразу топырит запрос (refuse route), и tracerote ничего и не выдает. Другие роутеры в подобной ситуации (не настроен шлюз) не топырят, и только по timeout отваливаются. И в этом случае tracerote покажет, что дошел до шлюза.
>[оверквотинг удален]
> ms
> 192.168.1.253 - стал доступен (напрямую), хотя команда:
> #ip route get 192.168.1.253
> выдает:
> 192.168.1.253 via 192.168.0.18 dev eth0 src 192.168.0.226
> cache mtu 1500 advmss 1460 hoplimit 64
> ==========
> ну и чем некорректен эксперимент/вывод ?
> Напомню вывод: Развеялось мое заблуждение, что роутинг указанный вручную - обязателен к
> использованию.Чтобы рассуждать о маршрутизации, вам надо собрать вот такую примерно схему
_________192.168.0.226/24
________________/\
192.168.0.253/24 192.168.0.18/24
_____________(1)\/(2)
___________192.168.1.253/24И никаких "необязательных в ручную роутингов" :)
>[оверквотинг удален]
>> 0.18 ?!?!?! Если оно не знает?
> для эксперимента. На самом деле мне надо было связать 2 машины из
> разных подсетей на удаленном объекте. Мне сообщили ip-шлюза. Роутинг прописал. Связи
> не появилось. А tracerote показал что и не идет через указанный
> маршрут.
> Вот и сделал в своей локалке эксперимент, указав заведомо нерабочий вариант. Получил
> ту же картину (почти). На самом деле 1-я попытка traceroute была
> правильной, а далее как указано выше.
> Сейчас почитал еще об роутинге. Развеялось мое заблуждение, что роутинг указанный вручную
> - обязателен к исполнению.Дык все правильно... УЧИТЕ МАТЧАСТЬ! А конкретнее - что такое ICMP Redirect....
1 - вы не показали маршрут до 192.168.0.18
2 - полагаю, нужно сбросить кэш маршрутизации: ip route flush cache
3 - покажите вывод команды: ip route get 192.168.1.1