URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91726
[ Назад ]

Исходное сообщение
"Роутер на FreeBSD"

Отправлено minimax_07 , 08-Июн-11 17:15 
Доброго всем дня. У меня задача создать роутер на базе фри. Имеется 5 подсетей, две из которых имеют одинаковое адресное пространство, пусть 192.168.2.0  (так надо и никуда от этого не денешься) и имеют разные адреса нитерфейсов роутера.Определенные хосты из каждой подсети обращаются к серверу с адресом 192.168.0.2, а между собой они развязаны правилами ipfw. Все достаточно корректно работает, кроме этих двух одиннаковых подсетей. Пусть в первой из них только хост 192.168.1.66 обращается к серверу, а из другой несколько хостов. Устанавливаю на интерфес роутера xl0 адрес 192.168.1.230 (), а на втрой em1 192.168.1.235 () и получаю сообщение о дубликате адресов. Из сети № 2 на сервер с разрешенных адресов пинг идет (подключена к интерфейсу em0), а при попытке пинговать сервер из первой сети через xl0 выдается сообщение такого типа:
kernel : arp : 192.168.1.66 is on em1 but got reply from (MAC адрес хоста с адресом 192.168.1.66) on xl0. Надеюсь не очень запутанно изложил. Спасибо.

Содержание

Сообщения в этом обсуждении
"Роутер на FreeBSD"
Отправлено sm00th1980 , 08-Июн-11 17:42 
Для сетевых инженеров очевидно что сети с пересекающимися адресами не смогут напрямую взаимодействовать через стандартный L3-роутер.

Для этого обычно применяется что-то вроде VRF(cisco-aware) - во freebsd есть что-то подобное - смотреть в сторону multiple routing tables. Так мы развяжем 2 сети с пересекающимися адресами на одном роутере.

Далее:
можно попробовать посмотреть в сторону NAT-чтобы сети маппились каждая в свой уникальный блок адресов и после этого уже они смогут взаимодействовать.


"Роутер на FreeBSD"
Отправлено Square , 08-Июн-11 17:46 
>[оверквотинг удален]
> достаточно корректно работает, кроме этих двух одиннаковых подсетей. Пусть в первой
> из них только хост 192.168.1.66 обращается к серверу, а из другой
> несколько хостов. Устанавливаю на интерфес роутера xl0 адрес 192.168.1.230 (), а
> на втрой em1 192.168.1.235 () и получаю сообщение о дубликате адресов.
> Из сети № 2 на сервер с разрешенных адресов пинг идет
> (подключена к интерфейсу em0), а при попытке пинговать сервер из первой
> сети через xl0 выдается сообщение такого типа:
> kernel : arp : 192.168.1.66 is on em1 but got reply from
> (MAC адрес хоста с адресом 192.168.1.66) on xl0. Надеюсь не очень
> запутанно изложил. Спасибо.

И что вы хотите услышать?


"Роутер на FreeBSD"
Отправлено reader , 08-Июн-11 21:34 
>[оверквотинг удален]
> достаточно корректно работает, кроме этих двух одиннаковых подсетей. Пусть в первой
> из них только хост 192.168.1.66 обращается к серверу, а из другой
> несколько хостов. Устанавливаю на интерфес роутера xl0 адрес 192.168.1.230 (), а
> на втрой em1 192.168.1.235 () и получаю сообщение о дубликате адресов.
> Из сети № 2 на сервер с разрешенных адресов пинг идет
> (подключена к интерфейсу em0), а при попытке пинговать сервер из первой
> сети через xl0 выдается сообщение такого типа:
> kernel : arp : 192.168.1.66 is on em1 but got reply from
> (MAC адрес хоста с адресом 192.168.1.66) on xl0. Надеюсь не очень
> запутанно изложил. Спасибо.

если таких машин не много и именно их адреса не пересекаются, то можно попробовать прописать маршруты до каждого хоста


"Роутер на FreeBSD"
Отправлено minimax_07 , 08-Июн-11 23:01 
>>на самом серваке прописывал статический маршрут route add  192.168.1.66 192.168.1.235 - не помогло...

"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 10:17 
>>>на самом серваке прописывал статический маршрут route add  192.168.1.66 192.168.1.235 - не помогло...

при этом в таблтце маршрутизации всеравно маршрут прописан через другой интерфейс


"Роутер на FreeBSD"
Отправлено reader , 09-Июн-11 11:19 
>>>>на самом серваке прописывал статический маршрут route add  192.168.1.66 192.168.1.235 - не помогло...
> при этом в таблтце маршрутизации всеравно маршрут прописан через другой интерфейс

а если интерфейс указать при прописывании маршрута


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 11:45 
>>>>>на самом серваке прописывал статический маршрут route add  192.168.1.66 192.168.1.235 - не помогло...
>> при этом в таблтце маршрутизации всеравно маршрут прописан через другой интерфейс
> а если интерфейс указать при прописывании маршрута

с радостью бы попробовал, но не нашел как. Подкажете?


"Роутер на FreeBSD"
Отправлено reader , 09-Июн-11 11:51 
>>>>>>на самом серваке прописывал статический маршрут route add  192.168.1.66 192.168.1.235 - не помогло...
>>> при этом в таблтце маршрутизации всеравно маршрут прописан через другой интерфейс
>> а если интерфейс указать при прописывании маршрута
> с радостью бы попробовал, но не нашел как. Подкажете?

route add 192.168.1.66 -interface ...

https://www.opennet.ru/man.shtml?topic=route&category=8&russi...


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 12:21 
>>>>>>>на самом серваке прописывал статический маршрут route add  192.168.1.66 192.168.1.235 - не помогло...
>>>> при этом в таблтце маршрутизации всеравно маршрут прописан через другой интерфейс
>>> а если интерфейс указать при прописывании маршрута
>> с радостью бы попробовал, но не нашел как. Подкажете?
> route add 192.168.1.66 -interface ...
> https://www.opennet.ru/man.shtml?topic=route&category=8&russi...

Прописал, в таблице появилось именно то, что надо, судя по команде show для ipfw, через интерфейс пакеты ходить началь, но только если я пингую 192.168.1.66 с сервера 192.168.0.2, по с его шлюза получаю сообщение, что заданный узел недостепен, а если пингую со станции сервер, то превышен интервал. Шлюзы вроде везде прописаны. Правила ipfw тоже. Такое впечатление, что пакеты от станции к скрваку почему-то теряются на его шлюзе...


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 12:39 
>[оверквотинг удален]
>>>> а если интерфейс указать при прописывании маршрута
>>> с радостью бы попробовал, но не нашел как. Подкажете?
>> route add 192.168.1.66 -interface ...
>> https://www.opennet.ru/man.shtml?topic=route&category=8&russi...
> Прописал, в таблице появилось именно то, что надо, судя по команде show
> для ipfw, через интерфейс пакеты ходить началь, но только если я
> пингую 192.168.1.66 с сервера 192.168.0.2, по с его шлюза получаю сообщение,
> что заданный узел недостепен, а если пингую со станции сервер, то
> превышен интервал. Шлюзы вроде везде прописаны. Правила ipfw тоже. Такое впечатление,
> что пакеты от станции к скрваку почему-то теряются на его шлюзе...

Хотя я ошибаюсь, и в ту и в другую сторону запросы проходяю через интерфейс роутера xl0 (шлюз для рабочей станции)


"Роутер на FreeBSD"
Отправлено reader , 09-Июн-11 12:44 
>[оверквотинг удален]
>>>> а если интерфейс указать при прописывании маршрута
>>> с радостью бы попробовал, но не нашел как. Подкажете?
>> route add 192.168.1.66 -interface ...
>> https://www.opennet.ru/man.shtml?topic=route&category=8&russi...
> Прописал, в таблице появилось именно то, что надо, судя по команде show
> для ipfw, через интерфейс пакеты ходить началь, но только если я
> пингую 192.168.1.66 с сервера 192.168.0.2, по с его шлюза получаю сообщение,
> что заданный узел недостепен, а если пингую со станции сервер, то
> превышен интервал. Шлюзы вроде везде прописаны. Правила ipfw тоже. Такое впечатление,
> что пакеты от станции к скрваку почему-то теряются на его шлюзе...

tcpdump и смотреть что где и через что.


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 15:00 
>[оверквотинг удален]
>>>> с радостью бы попробовал, но не нашел как. Подкажете?
>>> route add 192.168.1.66 -interface ...
>>> https://www.opennet.ru/man.shtml?topic=route&category=8&russi...
>> Прописал, в таблице появилось именно то, что надо, судя по команде show
>> для ipfw, через интерфейс пакеты ходить началь, но только если я
>> пингую 192.168.1.66 с сервера 192.168.0.2, по с его шлюза получаю сообщение,
>> что заданный узел недостепен, а если пингую со станции сервер, то
>> превышен интервал. Шлюзы вроде везде прописаны. Правила ipfw тоже. Такое впечатление,
>> что пакеты от станции к скрваку почему-то теряются на его шлюзе...
> tcpdump и смотреть что где и через что.

ситуация такая, с 192.168.1.66 на сервер приходят запросы, а ответы не доходят, т.к. шлюз сервера не видит станции и отправляет сообщение, что заданный узел недоступен, а на станции превышение интервала времени, если же я пингую с сервера станцию, то шлюз сразу отвечает, что заданный узел недоступен, т.е. маршрут не работает от сервера к станции. Не может это быть из-за конфликта адресов на интерфейсах xl0 и em1, хотя с 192.168.1.117 через em1 все идет нормально.


"Роутер на FreeBSD"
Отправлено reader , 09-Июн-11 16:13 
>[оверквотинг удален]
>>> превышен интервал. Шлюзы вроде везде прописаны. Правила ipfw тоже. Такое впечатление,
>>> что пакеты от станции к скрваку почему-то теряются на его шлюзе...
>> tcpdump и смотреть что где и через что.
> ситуация такая, с 192.168.1.66 на сервер приходят запросы, а ответы не доходят,
> т.к. шлюз сервера не видит станции и отправляет сообщение, что заданный
> узел недоступен, а на станции превышение интервала времени, если же я
> пингую с сервера станцию, то шлюз сразу отвечает, что заданный узел
> недоступен, т.е. маршрут не работает от сервера к станции. Не может
> это быть из-за конфликта адресов на интерфейсах xl0 и em1, хотя
> с 192.168.1.117 через em1 все идет нормально.

а в arp таблице есть 192.168.1.66?


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 16:18 
> а в arp таблице есть 192.168.1.66?

Нет, не динамически добавляется. Может статически можно добавить?


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 16:19 
>> а в arp таблице есть 192.168.1.66?
> Нет, динамически не добавляется. Может статически можно добавить?

"Роутер на FreeBSD"
Отправлено reader , 09-Июн-11 16:29 
>>> а в arp таблице есть 192.168.1.66?
>> Нет, динамически не добавляется. Может статически можно добавить?

а arp запросы были? и через какой интерфейс отправлялись, через нужный?


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 16:46 
>>>> а в arp таблице есть 192.168.1.66?
>>> Нет, динамически не добавляется. Может статически можно добавить?
> а arp запросы были? и через какой интерфейс отправлялись, через нужный?

через xl0 идут только ARP запросы с 192.168.1.66


"Роутер на FreeBSD"
Отправлено reader , 09-Июн-11 16:53 
>>>>> а в arp таблице есть 192.168.1.66?
>>>> Нет, динамически не добавляется. Может статически можно добавить?
>> а arp запросы были? и через какой интерфейс отправлялись, через нужный?
> через xl0 идут только ARP запросы с 192.168.1.66

а к 192.168.1.66 через какой? или их вообще нет?


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 16:54 
>>>>> а в arp таблице есть 192.168.1.66?
>>>> Нет, динамически не добавляется. Может статически можно добавить?
>> а arp запросы были? и через какой интерфейс отправлялись, через нужный?
> через xl0 идут только ARP запросы с 192.168.1.66 но только кто 192.168.1.103 (клиент ищет сервер сервак дрвеб) и все. Может они просто херятся ipfw? Хотя вряд ли...

"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 16:55 
Их нет вообще



"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 17:43 
прописал в ipfw allow all from any to any - не помогло


"Роутер на FreeBSD"
Отправлено minimax_07 , 09-Июн-11 23:20 
У кого какие мысли? Чувствую, что решение этой проблемы есть и оно где-то не глубоко )))



"Роутер на FreeBSD"
Отправлено minimax_07 , 10-Июн-11 11:41 
> Че, все уже на дачах? ))) Раньше хоть reader проявлял сочувствие...

"Роутер на FreeBSD"
Отправлено reader , 10-Июн-11 12:59 
а еще один роутер можете поставить?



"Роутер на FreeBSD"
Отправлено minimax_07 , 10-Июн-11 14:27 
он есть и через него существует маршрут в сеть 2, сейчас попробую сделать так, прописав статик



"Роутер на FreeBSD"
Отправлено reader , 10-Июн-11 14:43 
> он есть и через него существует маршрут в сеть 2, сейчас попробую
> сделать так, прописав статик

между этими двумя подсетями с одинаковой адресацией два роутера?
если да, то я не понимаю вашей топологии сети.


"Роутер на FreeBSD"
Отправлено minimax_07 , 10-Июн-11 15:17 
нет, все просто. из сети 1 с адресами 192.168.1.0 нам нужен доступ к серваку 192.168.0.2 солько с 66 адреса, а из сети 2 - несколько адресов, но в нее можно попасть через сеть 3 с адресами 192.168.3.0, тоже имеющюю дотуп к нашему серверу через собираемый мной роутер. Т.е. если к 192.168.2.66 прописать дотуп через интерфейс em1 с адресом 192.168.2.230, а ко всей сети 192.168.1.0/24 прописать маршрут через 192.168.3.7, то может оно и заработает. Или я глубоко заблуждаюсь...


"Роутер на FreeBSD"
Отправлено reader , 10-Июн-11 15:44 
> нет, все просто. из сети 1 с адресами 192.168.1.0 нам нужен доступ
> к серваку 192.168.0.2 солько с 66 адреса, а из сети 2
> - несколько адресов, но в нее можно попасть через сеть 3
> с адресами 192.168.3.0, тоже имеющюю дотуп к нашему серверу через собираемый
> мной роутер. Т.е. если к 192.168.2.66 прописать дотуп через интерфейс em1
> с адресом 192.168.2.230, а ко всей сети 192.168.1.0/24 прописать маршрут через
> 192.168.3.7, то может оно и заработает. Или я глубоко заблуждаюсь...

наверно имелось ввиду 192.168.1.66? или 192.168.2.66

если я правельно понял топологию, то можно.
основано на том что маршрут до хоста будет приоритетней маршрута до подсети.

на этом же основано предложение и для двух интерфейсов из одной подсети.


"Роутер на FreeBSD"
Отправлено reader , 10-Июн-11 15:53 
на виртуалке на freedsb 8.0 поднял два интерфейса в одной подсети, прописал отдельно машруты к 2-м хостам через интерфейс отличный от того что прописался автоматом. tcpdump показал что пинги и arm запросы пошли через маршруты прописанный вручную, как я и предполагал, так что и у вас должно было работать.

"Роутер на FreeBSD"
Отправлено minimax_07 , 10-Июн-11 16:18 
> на виртуалке на freedsb 8.0 поднял два интерфейса в одной подсети, прописал
> отдельно машруты к 2-м хостам через интерфейс отличный от того что
> прописался автоматом. tcpdump показал что пинги и arm запросы пошли через
> маршруты прописанный вручную, как я и предполагал, так что и у
> вас должно было работать.

а у меня на 7.0 не хочет. Вряд ли дело в версии. Скорее в руках. Всеравно проблема с маршрутизацией, несмотря на изменение схемы. Значит проблема в кривых руках. Как вы прописывали маршрут? Я route add адрес хоста -interface адрес шлюза.


"Роутер на FreeBSD"
Отправлено minimax_07 , 10-Июн-11 16:24 
Ладно, оставим до вторника, с наступающими выходными, хорошего отдыха

"Роутер на FreeBSD"
Отправлено reader , 10-Июн-11 16:29 
>> на виртуалке на freedsb 8.0 поднял два интерфейса в одной подсети, прописал
>> отдельно машруты к 2-м хостам через интерфейс отличный от того что
>> прописался автоматом. tcpdump показал что пинги и arm запросы пошли через
>> маршруты прописанный вручную, как я и предполагал, так что и у
>> вас должно было работать.
> а у меня на 7.0 не хочет. Вряд ли дело в версии.
> Скорее в руках. Всеравно проблема с маршрутизацией, несмотря на изменение схемы.

через 192.168.3.7 тоже не получилось? если да, давайте рисунок вашей подсети

> Значит проблема в кривых руках. Как вы прописывали маршрут? Я route
> add адрес хоста -interface адрес шлюза.

route add 10.10.0.1 -interface em1


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 11:59 
ну что продолжим взрыв мозга? )))
Отключил демона routd (почему-то думал, что он необходим) и пакеты пошли через xl0 к 192.168.1.66, но всеравно работать не хочет. Т.е. запросы с 192.168.1.66 проходят, ответы от 192.168.0.2 проходят(все через xl0).В обратную сторону идут только запросы. Виндовый файерволл на станции отключен. Тругую станцию пока подключить не пробовал - думаю не в этом дело.Согласно arp таблице адресу 192.168.1.66 соответствует физический адрес интерфейса xl0. Ядро постоянно выдает сообшение о попытке поменять постоянную запись arp на (физический адрес станции 192.168.1.66) на xl0.

"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 12:05 
Да, забыл, в arp прописано соответствие 192.168.1.66 MAC адресу интерфейса xl0


"Роутер на FreeBSD"
Отправлено reader , 14-Июн-11 13:39 
> Да, забыл, в arp прописано соответствие 192.168.1.66 MAC адресу интерфейса xl0

зачем?


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 15:12 
> зачем?

Эта запись добавлялась динамически


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 14:36 
>

Ну вот, вручную прописал в arp таблице соответствие 192.168.1.66 и его физического адреса и все заработало )))


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 15:14 
А не подскажете, возможно ли в rc.config прописать arp -s ip MAC, или это только через скрипт делается?

"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 15:22 
Извиняюсь, уже нашел. Огромное спасибо за оказанную неоценимую помощь )))


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 15:23 
> Огромное спасибо за оказанную неоценимую помощь )))

Это я вам, reader



"Роутер на FreeBSD"
Отправлено reader , 14-Июн-11 15:29 
>> Огромное спасибо за оказанную неоценимую помощь )))
> Это я вам, reader

пожалуйста , просто было интересно на сколько это стабильно будет работать, а в своей сети такое городить что-то не хочется :)


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 16:13 
Блин, поторопился я, попрощавшись (((
Прописал в rc.config static_arp_pairs="xxx"
                     static_arp_xxx="192.168.1.66 MAC" - не меняет, ругается на попытку изменения постоянных значений, дает менять только когда зайдешь  под root, прописав лапками arp -s...

"Роутер на FreeBSD"
Отправлено reader , 14-Июн-11 16:47 
> Блин, поторопился я, попрощавшись (((
> Прописал в rc.config static_arp_pairs="xxx"
>            
>          static_arp_xxx="192.168.1.66 MAC"
> - не меняет, ругается на попытку изменения постоянных значений, дает менять
> только когда зайдешь  под root, прописав лапками arp -s...

так а динамическое обновление не работает? зачем постоянный прописывать?


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 16:54 
>> Блин, поторопился я, попрощавшись (((
>> Прописал в rc.config static_arp_pairs="xxx"
>>
>>          static_arp_xxx="192.168.1.66 MAC"
>> - не меняет, ругается на попытку изменения постоянных значений, дает менять
>> только когда зайдешь  под root, прописав лапками arp -s...
> так а динамическое обновление не работает?

она считает запись статической, и динамически не дает ее обновить, выдеот сообщение о попытке изменить перманентные данные


"Роутер на FreeBSD"
Отправлено reader , 14-Июн-11 17:02 
>>> Блин, поторопился я, попрощавшись (((
>>> Прописал в rc.config static_arp_pairs="xxx"
>>>
>>>          static_arp_xxx="192.168.1.66 MAC"
>>> - не меняет, ругается на попытку изменения постоянных значений, дает менять
>>> только когда зайдешь  под root, прописав лапками arp -s...
>> так а динамическое обновление не работает?
> она считает запись статической, и динамически не дает ее обновить, выдеот сообщение
> о попытке изменить перманентные данные

вы же можете удалить, а дальше ping 192.168.1.66 и пусть машина сама шлет arp запрос


"Роутер на FreeBSD"
Отправлено minimax_07 , 14-Июн-11 17:15 

> вы же можете удалить, а дальше ping 192.168.1.66 и пусть машина сама
> шлет arp запрос

попробую, но наверное уже завтра


"Роутер на FreeBSD"
Отправлено minimax_07 , 15-Июн-11 10:18 

>> вы же можете удалить, а дальше ping 192.168.1.66 и пусть машина сама
>> шлет arp запрос

Нет, не проходило, т.к. при удалнении соответсвующей строки из arp-таблицы удалялась так же строка и из таблицы маршрутизации и ничего не работало. Выход - скрипт со строкой arp -s...
Так что теперь точно эпопея триумфально закончена, награды ждут своих героев )))) Спасибо еще раз за советы.



"Роутер на FreeBSD"
Отправлено reader , 15-Июн-11 11:38 
>>> вы же можете удалить, а дальше ping 192.168.1.66 и пусть машина сама
>>> шлет arp запрос
> Нет, не проходило, т.к. при удалнении соответсвующей строки из arp-таблицы удалялась так
> же строка и из таблицы маршрутизации и ничего не работало. Выход
> - скрипт со строкой arp -s...

какие то странные вещи вы рассказываете, хотелось бы вывод команд видеть.

хорошо, а если после этого маршрут снова прописать?
насколько помню, при динамической arp записи она тоже удалится из таблицы, но маршрут точно никуда не девался, а отправлялся arp запрос согласно таблицы маршрутизации.

> Так что теперь точно эпопея триумфально закончена, награды ждут своих героев ))))
> Спасибо еще раз за советы.


"Роутер на FreeBSD"
Отправлено minimax_07 , 15-Июн-11 11:44 

> какие то странные вещи вы рассказываете, хотелось бы вывод команд видеть.
> хорошо, а если после этого маршрут снова прописать?
> насколько помню, при динамической arp записи она тоже удалится из таблицы, но
> маршрут точно никуда не девался, а отправлялся arp запрос согласно таблицы
> маршрутизации.

Сам был удивлен, но так оно и случалоь - очищал arp и маршрут тоже пропадал. САМ ВИДИЛ!!!!