LINUX.ORG.RU
ФорумAdmin

Нужна помощь клуба


0

0

Срочно надо решить проблему. Ну или доказать, что такое нерешаемо. В двух словах: есть комп с двумя сетевыми интерфейсами eth0 и eth1. Оба получают свой адрес через avahi. Один получает 169.254.1.10, второй 169.254.2.10. В «route» стоит:

Destination Gateway Genmask Flags Metric Ref Use Iface
169.254.0.0 * 255.255.0.0 U 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 eth1
127.0.0.1 * 255.0.0.0 U 0 0 lo

прикол в том, что ни eth0, ни eth1 не пингуются, хотя ifconfig показывет, что оба нормально конфигурированы. Удаляю eth0 или eth1 из таблицы роутера, второй (неудалённый) интерфей пингуется вполне без проблем.

Так вот вопрос: как настроить комп так, чтобы он понимал, что 169.254.1.10 и 169.254.2.10 - его адреса? а запрос на остальные он должен переправлять на другой интерфейс.

Спасибо за советы


Назначить интерфейсам разные метрики?

dexpl ★★★★★
()

маска /16 в роутах
поэтому и не пингуется, использовать другую адресацию...
или удалять
169.254.0.0 * 255.255.0.0 U 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 eth1

и добавлять
169.254.1.0 * 255.255.255.0 U 0 0 eth0
169.254.2.0 * 255.255.255.0 U 0 0 eth1

dr0n
()

Либо ковыряй аваху, чтобы он им адреса из разных подсетей выдавал, либо объединяй их в мост, если обстоятельства позволяют.

nnz ★★★★
()
Ответ на: комментарий от dr0n

Как же я могу использовать другую адресацию, если адреса получаю автоматически через avahi. я попросил 169.254.1.10, и он мне дал этот адрес, поскольку он ещё не занят в сети. Но в другой раз я могу получить любой адрес из 169.254.0.0 - 169.254.255.255. Я только знаю свои 2 адреса и то, что если по одному интерфейсу получаю запрос на адрес не равный адресу моего интерфейса, то надо преправить запрос на другой интерфейс - пускай там разбираются. Такое возможно? Если да, то как?

Ещё раз спасибо

Dovgan
() автор топика
Ответ на: комментарий от Dovgan

Отсюда мораль - назначить адреса вручную без помощи avahi из диапазонов частных сетей 10.0.0.0-10.255.255.255, 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255

Guest_now
()
Ответ на: комментарий от Dovgan

>Что под этим имеется в виду?

Под этим имеется в виду объединение их в мост.
ip li se dev eth0 down
ip li se dev eth1 down
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ip li se dev br0 up

nnz ★★★★
()
Ответ на: комментарий от Dovgan

Проблема стандартная в том что оба интерфейса находятся в одной подсети, вот они и не работают.

Guest_now
()
Ответ на: комментарий от Dovgan

>Ведь «проблема» по сути стандартная - 2 интерфейса на авахе

Ничего стандартного в ней нет. Авахи предназначен для подъема локалки без специального конфигурирования _в стандартной ситуации_, то есть когда каждый комп подключен к этой сети одним интерфейсом, а других сетей, требующих автоконфигурирования, нет.

Конечно, можно подправить /etc/avahi/avahi-autoipd.action, например, заменив
«$3»/16 brd 169.254.255.255
на
«$3»/24 brd 169.254.$(echo $2 | sed -e 's/[^0-9]*//').255
но это все равно будет кривой костыль с кучей неприятных последствий.

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

Либо объединяй обе сети в одну, либо настраивай одну из них вручную.

И еще. Изучи хоть немного стек TCP/IP. Сразу пропадет желание задавать глупые вопросы.

nnz ★★★★
()
Ответ на: комментарий от Dovgan

стандартная
2 интерфейса на авахе

/0 никто и никогда не делает роутер на авахе лол.
имхо аваха вообще ненужна.
поднимаешь дхцпд
@
радуешься

guyvernk
()
Ответ на: комментарий от nnz

Спасибо за ответ. Сегодня Посмотрю/попробую с мостом.

Либо объединяй обе сети в одну, либо настраивай одну из них вручную.

Это было б хорошо, но проблема в том, что настраивать «вручную» несёт за собой другие проблемы. Это я для простоты описал, что есть _один_ комп с двумя интерфейсами. В реалии же эти два интерфейса будут использованы в некоторых устройствах, которых продать предполагается несколько десятков тыщ штук. К примеру, один прибор - дыхательный аппарат - к одному его интерфейсу подключён пульсоксиметр, к другому модем или ещё какое устройство. Пульсоксиметр должен передавать данные как в дыхательный аппарат, так и напрямую в модем. Т.е. дыхаппарат в данной ситуации маршрутизатор. Модем, у которого тоже 2 интерфейса и ко второму интерфейсу подключён, например, кардиограф, тоже должен быть маршрутизатором...

Я не совсем отбрасываю вариант с ручной установкой IP адресов. Просто не исключён вариант, когда какой-то лох подключит 2 одинаковых прибора в системе (к примеру те же 2 модема). Конечно, это - конфликт. Такой конфликт я хотел определять через сервисы авахи. Т.е. IP адреса нашлись автоматически, а вот то, что в системе 2 прибора с одной функцией, думал находить через авахи. А вот как в такой сетке определить конфликт IP адресов (если их выставлять статическими) из-за недостатка опыта пока не понимаю.

И еще. Изучи хоть немного стек TCP/IP. Сразу пропадет желание задавать глупые вопросы.

Вопросы всегда глупые, если знать на них ответы )) Тут просто ТАКОЙ поток информации в проекте, что не сразу все пробелы восполнить. Вот иногда и проще задать вопрос, чтоб послали на ответ ))

Dovgan
() автор топика
Ответ на: комментарий от Dovgan

нафига придумывать костыли с перенаправлением?
если есть
*debian
/etc/network/interface
*rhl
/etc/sysconfig/network-scripts/ifcfg-*

а перенаправление можно попробовать так, но не факт что оно будет работать)))

iptables -A PREROUTING -p ALL -i eth0 -d 169.254.2.10 -j DNAT --to-destination 169.254.1.10
iptables -A PREROUTING -p ALL -i eth1 -d 169.254.1.10 -j DNAT --to-destination 169.254.2.10
iptables -P FORWARD ACCEPT

dr0n
()
Ответ на: комментарий от Dovgan

2 одинаковых прибора в системе (к примеру те же 2 модема). Конечно, это - конфликт.

нет это не конфликт
читаем про MAC адреса

guyvernk
()
Ответ на: комментарий от anton_jugatsu

>> И еще. Изучи хоть немного стек TCP/IP. Сразу пропадет желание

задавать глупые вопросы.


Какие книги посоветуете?


Да тут, скорее, адресацию просто изучить. Вот, например:
http://www.dvgu.ru/meteo/PC/IPaddress.htm

AS ★★★★★
()
Ответ на: комментарий от Dovgan

>В реалии же эти два интерфейса будут использованы в некоторых устройствах, которых продать предполагается несколько десятков тыщ штук. К примеру, один прибор - дыхательный аппарат - к одному его интерфейсу подключён пульсоксиметр, к другому модем или ещё какое устройство. Пульсоксиметр должен передавать данные как в дыхательный аппарат, так и напрямую в модем. Т.е. дыхаппарат в данной ситуации маршрутизатор. Модем, у которого тоже 2 интерфейса и ко второму интерфейсу подключён, например, кардиограф, тоже должен быть маршрутизатором...

Нет, это очень плохая идея. Купи свич и используй по одному интерфейсу от каждого девайса. Тогда и авахи нормально работать будет.

Если же хочется использовать именно линейную топологию, подумай об автоматизации объединения в мост интерфейсов каждого устройства.

nnz ★★★★
()
Ответ на: комментарий от AS

>Да тут, скорее, адресацию просто изучить. Вот, например: http://www.dvgu.ru/meteo/PC/IPaddress.htm

Cпасибо за линк. Когда-то пробовал читать про маршрутизацию в IP, но там хрен чё разберёшь. А тут толково, коротко и без соплей описано. Понял, в чём моя проблема.

Dovgan
() автор топика
Ответ на: комментарий от nnz

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

Не, не! Так нельзя. Фишка в том, что эти приборы в системе между собой будут соединены по USB. Да, да! ))) И поверх USB будет запущен usbnet, чтоб получить IP протокол. Так вот механически предусмотрено так, что в большом приборе (дыхательный аппарат) есть механическое соединение для какого-либо модуля. Модулем может быть, например, пульсоксиметр или модем или кардиограф и т.д. Что именно первое подключено к дыхаппарату - ХЕЗ, но у этого подключенного модуля есть с другой стороны такое же механическое соединение и УСБ интерфейс. Надо обеспечить, чтоб в этой цепочке каждый модуль мог опознать все модули цепочки и передавать данные друг другу. Первая идея была всем присвоить статические адреса, но вдруг кто в системе подключит 2 одинаковых модуля. Как такое опознать и разрешить? Потом подумал за avahi, но, как вы видите, не силён был (да и сейчас не намного лучше), чтоб не заметить очевидное - avahi для такого не подходит.

Если же хочется использовать именно линейную топологию, подумай об автоматизации объединения в мост интерфейсов каждого устройства.


Похоже, придётся таки делать мосты. Надо за это дело почитать. Вот теперь, правда, не знаю, как быть с установкой IP адресов. DHCP тут, пожалуй, не пройдёт: есть вариант использования когда в системе могут оказаться 2 устройства с DHCP сервером на борту.

Dovgan
() автор топика
Ответ на: комментарий от Dovgan

>Похоже, придётся таки делать мосты. Надо за это дело почитать. Вот теперь, правда, не знаю, как быть с установкой IP адресов.

По идее, авахи в такой ситуации должен справиться.

nnz ★★★★
()
Ответ на: комментарий от anton_jugatsu

>Какие книги посоветуете?

В этом вопросе я фиговый советчик :)
Меня учили живые люди на практических примерах, и теперь практически все книги по этой теме, которые я видел, кажутся мне скучными, непоследовательными и недостаточно развернуто излагающими материал.

nnz ★★★★
()
Ответ на: комментарий от nnz

Ха! Почитал немного http://xgu.ru/wiki/Linux_Bridge

Информация выложена немного бестолково, но понимаемо.
По-моему это то, что Доктор прописал! Т.е. я могу сделать оба интерфейса прозрачными для трафика нижнего уровня (IP просто проходит сквозь) и определить один интерфейс для так сказать верхнего уровня, для которого задам IP адрес. И оба интерфейса нижнего уровня будут отзываться на этот IP адрес. Так?

Что-то вроде того, чтоб в inittab прописать:

null::sysinit:brctl addbr br0
null::sysinit:brctl addif br0 eth0
null::sysinit:brctl addif br0 usb0
null::sysinit:ifconfig br0 up
null::sysinit:avahi-autoipd -D br0 --no-chroot -S 169.254.1.10

Поддержка bridge есть в buildroot. Т.е. религия позволяет скомпилить brctl для моего процессора без лишних усилий. Текущий developmentkit имеет eth0 и usb0. Поэтому они в inittab. Ща попробую, отпишусь о результатах.Спасибо за идею!

velikS
()
Ответ на: комментарий от velikS

Класс!!! Забыл пароль от этого ника и на рабочем компе вчера заригистрился заново. А на домашнем, похоже, поставил опцию «запомнить меня» )) Dovgan == velikS ))

velikS
()
Ответ на: комментарий от velikS

Странно, но лыжи не едут (

Запустил всё описанное и вижу по ifconfig, что появился интерфейс br0:avahi с IP адресом 169.254.1.10

brctl show показывает, что есть бридж br0, в который включены интерфейсы eth0, usb0.

route показывает вроде:
169.254.0.0 * 255.255.0.0 U 0 0 br0

Т.е. всё вроде как хотелось бы, но вот пинги от компа к плате по Ethernet не проходят. Пингую, естессно, по 169.254.1.10. Пишет, что Destination host unreachable. Причём, на компе eth0 тоже запущен по avahi и раньше можно было пинговать плату. Мож чего в ядре для моста не включено? Других идей у меня пока нет.

velikS
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.