ARP, routers, order of resolving

User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

ARP, routers, order of resolving

Post by A. Fig Lee »

Как в точности все ресолвится?
1. Хост посылаетARP broadcast на своем сегменте для 192.168.0.8.
2. Если никто не найден, он лезет посмотреть у себя - кто gateway для етого аддресса.
3. Посылает broadcast для етого аддресса - gateway, правильно?
Ну и после етого как обычно.
или чтото не так?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
KYKAH
Ник закрыт.
Posts: 994
Joined: 26 Aug 2003 16:14
Location: Riga > Ottawa > Hartford

Re: ARP, routers, order of resolving

Post by KYKAH »

A. Fig Lee wrote:Как в точности все ресолвится?
1. Хост посылаетARP broadcast на своем сегменте для 192.168.0.8.
2. Если никто не найден, он лезет посмотреть у себя - кто gateway для етого аддресса.
3. Посылает broadcast для етого аддресса - gateway, правильно?
Ну и после етого как обычно.
или чтото не так?


Нее, если никто не найден, никто уже никуда не лезет.
Потому как:
Сначала принимается routing decision
Потом просходит ARP resolution
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: ARP, routers, order of resolving

Post by Sabina »

A. Fig Lee wrote:Как в точности все ресолвится?
1. Хост посылаетARP broadcast на своем сегменте для 192.168.0.8.
2. Если никто не найден, он лезет посмотреть у себя - кто gateway для етого аддресса.
3. Посылает broadcast для етого аддресса - gateway, правильно?
Ну и после етого как обычно.
или чтото не так?


Может я ошибаюсь, но мне казалось, что source host сам определяет по subnet mask есть ли destination IP address в его окружении или надо слать пакеты на gateway. Если получается, что нет, то тогда хост шлет ARP broadcast уже на IP адрес gateway, чтобы потом отослать пакеты туда....

Сабина
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: ARP, routers, order of resolving

Post by A. Fig Lee »

Sabina wrote:
A. Fig Lee wrote:Как в точности все ресолвится?
1. Хост посылаетARP broadcast на своем сегменте для 192.168.0.8.
2. Если никто не найден, он лезет посмотреть у себя - кто gateway для етого аддресса.
3. Посылает broadcast для етого аддресса - gateway, правильно?
Ну и после етого как обычно.
или чтото не так?


Может я ошибаюсь, но мне казалось, что source host сам определяет по subnet mask есть ли destination IP address в его окружении или надо слать пакеты на gateway. Если получается, что нет, то тогда хост шлет ARP broadcast уже на IP адрес gateway, чтобы потом отослать пакеты туда....

Сабина

Да, похоже идея Ваша с КУКАНом правильная.
Теоретически правда, по сабнетмаск не определишь на каком сегменте находится, но смысл такой - что если сабнет своя - броадкаст с етим ИП, иначе броадкаст с ИП гейтвея.
Спасибо, братцы. :gen1:
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Re: ARP, routers, order of resolving

Post by Strannik223 »

Sabina wrote:Может я ошибаюсь, но мне казалось, что source host сам определяет по subnet mask есть ли destination IP address в его окружении или надо слать пакеты на gateway. Если получается, что нет, то тогда хост шлет ARP broadcast уже на IP адрес gateway, чтобы потом отослать пакеты туда....
Сабина


Сабина, вы меня просто поражаете своей эрудицией
Вы правы
Первым делом определяется роутинг. По таблице маршрутизации находится запись с наибольшим количеством совпавших битов в маске. Default routing совпадет всегда если не найдено ничего более подходящего. После этого читаются флаги найденой записи для того что бы определить что это, роутер или локальная сеть где находится destination.
Далее, что бы отправить пакет на адресату определенному на предыдущем шаге надо узнать его MAC (Media Access Controller) адрес. Для этого посылается broadcast ARP (Address Resolution Protocol) request "Who knows MAC for <destiantion ID> reply to <my MAC>". Адресат услышав свой адрес в таком запросе дает ответ, который кешируется передающей машиной, после чего передатчик направляет пакет в сетевую карту которая на аппаратном уровне реализует передачу.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: ARP, routers, order of resolving

Post by Sabina »

del
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Re: ARP, routers, order of resolving

Post by Strannik223 »

A. Fig Lee wrote:Да, похоже идея Ваша с КУКАНом правильная.
Теоретически правда, по сабнетмаск не определишь на каком сегменте находится, но смысл такой - что если сабнет своя - броадкаст с етим ИП, иначе броадкаст с ИП гейтвея.
Спасибо, братцы. :gen1:


Теплее но не совсем верно
Gateway/host in local segment определяется флагом в записи в таблице роутинга
Когда подымается интерфейс он прописывает в таблице роутинга запись что он обрабатывает пакеты с маской которая дана этому интерфейсу
А когда ты добавляешь роутинг ручками AKA static routing то команда route add ... добавит запись в таблицу роутинга и пометит ее флагом GATEWAY.
Благодаря этому можно делать интересные фокусы, например
===========================================
> netstat -rn
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 67.xxx.xxx.xxx UGS 0 9442 sis0
67.xxx.xxx.xxx/25 link#1 UC 0 0 sis0
67.xxx.xxx.xxx 00:05:00:e3:67:8c UHLW 1 0 sis0 1034
67.xxx.xxx.xxx 127.0.0.1 UGHS 0 0 lo0
^^^^^^^^^^^ ^^^^^^^
=================================================

В последней строчке если ты пингуешь или коннектишся на свой собственный IP то все зароутится на localhost! Причем localhost будет выступать в качестве роутера для собственной машины (falg G) :)

P.S.
Пример дан для FreeBSD
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: ARP, routers, order of resolving

Post by A. Fig Lee »

Strannik223 wrote:А когда ты добавляешь роутинг ручками AKA static routing то команда route add ... добавит запись в таблицу роутинга и пометит ее флагом GATEWAY.

AFAIU, для Линуха - ето не так. Ему если не скажешь в
route add
что ето гатеваы - до лампочки значения - значит не будет гейтвеем.
:pain1:
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Re: ARP, routers, order of resolving

Post by Strannik223 »

A. Fig Lee wrote:
Strannik223 wrote:А когда ты добавляешь роутинг ручками AKA static routing то команда route add ... добавит запись в таблицу роутинга и пометит ее флагом GATEWAY.

AFAIU, для Линуха - ето не так. Ему если не скажешь в
route add
что ето гатеваы - до лампочки значения - значит не будет гейтвеем.
:pain1:


Да, на фре то же надо сказать какой тип добавляешь
Но это уже ньюансы
Загвоздка в том что найдя запись в таблице роутинга без информации о флагах непонятно как интерпретировать данные: то ли это номер интерфейса на котором кричать надо то ли MAC то ли gateway IP. То есть просто по IP&mask невозможно определить что дальше делать.
User avatar
constm
Уже с Приветом
Posts: 119
Joined: 17 Apr 2001 09:01
Location: moscow.ru

Post by constm »

а в нашей локалке защита с привязкой к MAC-адресу. (т.е. я не могу сменить Ethernet карточку). думаю, в данном случае ARP broadcast организован как-то по-другому. (по идее, если жесткая привязка, то broadcast заменяется просмотром AR таблицы.)
кр. - сес. тал.
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

constm wrote:а в нашей локалке защита с привязкой к MAC-адресу. (т.е. я не могу сменить Ethernet карточку). думаю, в данном случае ARP broadcast организован как-то по-другому. (по идее, если жесткая привязка, то broadcast заменяется просмотром AR таблицы.)


Да, есть возможность "жестко" прописать на сервере ARP таблицу но это детская защита. Достаточно убедиться что хост под который хочеться подделаться выключен и можно смело назначать себе его MAC
Я не уверен практикуется ли такое но думаю что возможно прописывать MAC-и на свичах, тогда уже не обойдешь
PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Post by PavelM »

constm wrote:а в нашей локалке защита с привязкой к MAC-адресу. (т.е. я не могу сменить Ethernet карточку). думаю, в данном случае ARP broadcast организован как-то по-другому. (по идее, если жесткая привязка, то broadcast заменяется просмотром AR таблицы.)


broadcast - особенность протокола арп от которой никуда не деться.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

А вот еще проблемка.
Ситуация такая:
Red Hat 9

Code: Select all


192.168.0.20------192.168.0.11+192.168.0.10-----192.168.0.25+INTERNET
                     |
192.168.0.30--|
                     |
192.168.0.40--|


Слева подсетка посредине гейтвей.
Как правильно сконфигурить средний компьютер в раутер мод?
Имелось на гейтвей:
все proxy_arp=0
ip_forwarding=1
Чтото еще надо?
Пинги с 192.168.0.20 до 192.168.0.25 не проходили.
До 192.168.0.10 с любого компьютера подсетки шли.
Посмотрел tcpdump - странное дело - .25 спрашивает MAC .20-go
на .10-м интерфейсе, а .10 молчит как рыба - ни внутрь сетки не передает запрос,
ни свой не говорит инстед. Интересно что на внутренней сетке для запросов наружу он всем подставляет MAC .11-го, то есть вроде правильно - етот интерфейс в раутер моде.
Ну вобщем я поставил
proxy_arp=1 для .10-го
Пинги с .20-го до .25-го пошли
Онако, никакой другой компьютер с подсетки пинговать .25 не смог.
арп на внутрисеточных компьютерах чистилось регулярно, и гейтвеем на них
.10
Только когда я добавил proxy_arp=1
для all - все остальные заработали.
1)Почему так - что такое алл?
2).10 я так понимаю в бридге моде?
А как сделать раутинг мод, без бриджа?
[/code]
Верить нельзя никому - даже себе. Мне - можно!
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

A. Fig Lee wrote:А вот еще проблемка.
Ситуация такая:
Red Hat 9

Code: Select all


192.168.0.20------192.168.0.11+192.168.0.10-----192.168.0.25+INTERNET
                     |
192.168.0.30--|
                     |
192.168.0.40--|


Слева подсетка посредине гейтвей.
Как правильно сконфигурить средний компьютер в раутер мод?
Имелось на гейтвей:
все proxy_arp=0
ip_forwarding=1
Чтото еще надо?
Пинги с 192.168.0.20 до 192.168.0.25 не проходили.
До 192.168.0.10 с любого компьютера подсетки шли.
Посмотрел tcpdump - странное дело - .25 спрашивает MAC .20-go
на .10-м интерфейсе, а .10 молчит как рыба - ни внутрь сетки не передает запрос,
ни свой не говорит инстед. Интересно что на внутренней сетке для запросов наружу он всем подставляет MAC .11-го, то есть вроде правильно - етот интерфейс в раутер моде.
Ну вобщем я поставил
proxy_arp=1 для .10-го
Пинги с .20-го до .25-го пошли
Онако, никакой другой компьютер с подсетки пинговать .25 не смог.
арп на внутрисеточных компьютерах чистилось регулярно, и гейтвеем на них
.10
Только когда я добавил proxy_arp=1
для all - все остальные заработали.
1)Почему так - что такое алл?
2).10 я так понимаю в бридге моде?
А как сделать раутинг мод, без бриджа?
[/code]

Мне неохота лезть, ковырятся и смотреть маски, но на первый взгляд Ваши сетки неправильно разбиты на подсети.
В качестве хака можно посоветовать для компьютеров левой сети (20,30,40) прописать для каждого свою запись в таблице роутинга на среднем компьютере.
Дальше, все будет только хуже. Оптимист.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

f_evgeny wrote:
A. Fig Lee wrote:А вот еще проблемка.
Ситуация такая:
Red Hat 9

Code: Select all


192.168.0.20------192.168.0.11+192.168.0.10-----192.168.0.25+INTERNET
                     |
192.168.0.30--|
                     |
192.168.0.40--|


Слева подсетка посредине гейтвей.
Как правильно сконфигурить средний компьютер в раутер мод?
Имелось на гейтвей:
все proxy_arp=0
ip_forwarding=1
Чтото еще надо?
Пинги с 192.168.0.20 до 192.168.0.25 не проходили.
До 192.168.0.10 с любого компьютера подсетки шли.
Посмотрел tcpdump - странное дело - .25 спрашивает MAC .20-go
на .10-м интерфейсе, а .10 молчит как рыба - ни внутрь сетки не передает запрос,
ни свой не говорит инстед. Интересно что на внутренней сетке для запросов наружу он всем подставляет MAC .11-го, то есть вроде правильно - етот интерфейс в раутер моде.
Ну вобщем я поставил
proxy_arp=1 для .10-го
Пинги с .20-го до .25-го пошли
Онако, никакой другой компьютер с подсетки пинговать .25 не смог.
арп на внутрисеточных компьютерах чистилось регулярно, и гейтвеем на них
.10
Только когда я добавил proxy_arp=1
для all - все остальные заработали.
1)Почему так - что такое алл?
2).10 я так понимаю в бридге моде?
А как сделать раутинг мод, без бриджа?
[/code]

Мне неохота лезть, ковырятся и смотреть маски, но на первый взгляд Ваши сетки неправильно разбиты на подсети.
В качестве хака можно посоветовать для компьютеров левой сети (20,30,40) прописать для каждого свою запись в таблице роутинга на среднем компьютере.

Зачем прописывать? Со среднего компьютера пингуется ВСЕ!
С любого интерфейса. Не думаю, что тут с масками проблема.
192.168.0.25 - не наш компьютер, компьютер провайдера.
Маски на всех компьютерах 255.255.255.0
Роутинг тейбл на среднем :
192.168.0.25 255.255.255.255 UH eth0
192.168.0.0 255.255.255.0 U eth1
default 192.168.0.25 UG eth0
Last edited by A. Fig Lee on 30 Jan 2004 16:35, edited 1 time in total.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Кажись, дошло.

Так как .25-ка ничего не знает, что там раутер посредине - он думает что находится на том же сегменте, поетому посылает АРП для .20-го.
Получается надо делать бридге етого интерфейса (.10) или подправить .25-ку указать что там .10-ка - ето гейтвей для етой сабнет. Так как доступа к .25 нет - надо делать бридге .10ки.
А что такое
/proc/sys/net/ipv4/all/proxy_arp ?
На чем оно отражается?
Почему когда апдейтишь только для
.10(етх0) - срабатывает только один компьютер?
Или ето была случайность и он вообще не должен был срабатывать?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

A. Fig Lee wrote:Кажись, дошло.

Так как .25-ка ничего не знает, что там раутер посредине - он думает что находится на том же сегменте, поетому посылает АРП для .20-го.
Получается надо делать бридге етого интерфейса (.10) или подправить .25-ку указать что там .10-ка - ето гейтвей для етой сабнет. Так как доступа к .25 нет - надо делать бридге .10ки.

А еще можно забацать маскарадинг для левой сетки.
Дальше, все будет только хуже. Оптимист.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

f_evgeny wrote:
A. Fig Lee wrote:Кажись, дошло.

Так как .25-ка ничего не знает, что там раутер посредине - он думает что находится на том же сегменте, поетому посылает АРП для .20-го.
Получается надо делать бридге етого интерфейса (.10) или подправить .25-ку указать что там .10-ка - ето гейтвей для етой сабнет. Так как доступа к .25 нет - надо делать бридге .10ки.

А еще можно забацать маскарадинг для левой сетки.

ась?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

A. Fig Lee wrote:

Зачем прописывать? Со среднего компьютера пингуется ВСЕ!
С любого интерфейса. Не думаю, что тут с масками проблема.
192.168.0.25 - не наш компьютер, компьютер провайдера.
Маски на всех компьютерах 255.255.255.0
Роутинг тейбл на среднем :
192.168.0.25 255.255.255.255 UH eth0
192.168.0.0 255.255.255.0 U eth1
default 192.168.0.25 UG eth0[/quote]

Как уже было сказано сеть разбита неправильно
У вас получается одна IP сеть а физически их несколько
По-хорошему надо бы каждой физической сети сделать свою IP сеть А сейчас машины находящиеся на краях сети пытаются найти машины на другом крае в своей физической подсети так как вы ввели их в заблуждение неправильной маской
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

A. Fig Lee wrote:
f_evgeny wrote:А еще можно забацать маскарадинг для левой сетки.

ась?

По БСД-шному - NAT.
В левой сети gateway будет 192.168.0.11
Средний компьютер будет транслировать пакеты таким образом, что справа они будут иметь исходящий IP 192.168.0.10 а обратные пакеты передавать обратно на хосты, которые надо.
Дальше, все будет только хуже. Оптимист.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

f_evgeny wrote:
A. Fig Lee wrote:
f_evgeny wrote:А еще можно забацать маскарадинг для левой сетки.

ась?

По БСД-шному - NAT.
В левой сети gateway будет 192.168.0.11
Средний компьютер будет транслировать пакеты таким образом, что справа они будут иметь исходящий IP 192.168.0.10 а обратные пакеты передавать обратно на хосты, которые надо.

Не годится! :nono#:
Верить нельзя никому - даже себе. Мне - можно!
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

A. Fig Lee wrote:
f_evgeny wrote:
A. Fig Lee wrote:
f_evgeny wrote:А еще можно забацать маскарадинг для левой сетки.

ась?

По БСД-шному - NAT.
В левой сети gateway будет 192.168.0.11
Средний компьютер будет транслировать пакеты таким образом, что справа они будут иметь исходящий IP 192.168.0.10 а обратные пакеты передавать обратно на хосты, которые надо.

Не годится! :nono#:

?
Дальше, все будет только хуже. Оптимист.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

f_evgeny wrote:
A. Fig Lee wrote:
f_evgeny wrote:
A. Fig Lee wrote:
f_evgeny wrote:А еще можно забацать маскарадинг для левой сетки.

ась?

По БСД-шному - NAT.
В левой сети gateway будет 192.168.0.11
Средний компьютер будет транслировать пакеты таким образом, что справа они будут иметь исходящий IP 192.168.0.10 а обратные пакеты передавать обратно на хосты, которые надо.

Не годится! :nono#:

?

Ну скажем, когда ньюс сервер допускает по ИП - как быть если ИП у всех одинаковый?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

A. Fig Lee wrote:А что такое
/proc/sys/net/ipv4/all/proxy_arp ?
На чем оно отражается?
Почему когда апдейтишь только для
.10(етх0) - срабатывает только один компьютер?
Или ето была случайность и он вообще не должен был срабатывать?


Может пригодиться или наведет на нужную мысль:

Тред с http://www.ussg.iu.edu/hypermail/linux/kernel/0004.2/0573.html

Q: We did the following for using proxy-arp in a machine

1. Set /proc/sys/net/ipv4/conf/*/proxy_arp to 1 ( using echo )
2. published arp entry for w.x.y.z ( using the command
arp -H ether -i eth0 -Ds w.x.y.z eth0 pub

The system responds for arp request for this address. But also responds
for other unpublished addresses
We tried with RedHat6.0 system on a pentium with two NE2000 compatible
cards.

A:That's because of step 1. Setting "/proc/sys/net/ipv4/conf/<if>/proxy_arp"
to 1 causes the system to answer any ARP requests which:

1. are received on the corresponding interface, and
2. are for an IP address to which the system has a route via a
different interface.

Basically, you want to use either step 1 or 2, but probably not both.


Ну и тут еще http://tldp.org/HOWTO/Proxy-ARP-Subnet/index.html

отсюда http://tldp.org/HOWTO/Proxy-ARP-Subnet/why.html

....In my case, getting a new subnet (network) number was not an option, so I wanted a solution that allowed all the machines on network 0* to appear as if they were on network 1**. This is where Proxy ARP comes in.

* - сеть внутри сабнета
** - сеть снаружи


Сабина
Last edited by Sabina on 30 Jan 2004 23:13, edited 1 time in total.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Sabina,
спасибо - будем посмотреть.
Верить нельзя никому - даже себе. Мне - можно!

Return to “Вопросы и новости IT”