Author Topic: 2 сетевухи в одну подсеть, FreeBSD  (Read 15216 times)

0 Members and 2 Guests are viewing this topic.

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
2 сетевухи в одну подсеть, FreeBSD
« on: August 30, 2010, 23:23:26 »
Всем доброго времени суток.

Не сочтите за троллизм и не бейте ногами, задача такова: надо оттестить пару сервисов в "типакластерном" режиме.
Проблема - компутер только один, но на нем 2 сетевые карты. FreeBSD 8.1. Тестировать предполагается чередующимся отрыванием кабелей от сетевых карт. Надо повесить на каждую из сетевух адрес вида 192.168.0.x/24 и при этом чтобы каждая отвечала сама за себя, т.е. ответ шел с той сетевухи, на которую пришел запрос. Обе карты воткнуты в один свитч, естественно.

Можно ли такое сделать без особых танцев с бубном? Варианты "не клепать мозги и сделать по-нормальному" не предлагайте, в рабочем варианты будет все по-нормальному, а потестить хотелось бы на скорую руку с имеющимися средствами.

Заранее благодарен за ответы.

Offline Green

  • Full Member
  • ***
  • Posts: 129
  • Karma: +3/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #1 on: August 31, 2010, 01:11:01 »
эээ... уважаемый... как бы так по корректнее ответить то??? эммм... в общем, если я все правильно понял, то тебе надо сильно "по клепать мозги" чтобы сделать наоборот...

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #2 on: August 31, 2010, 01:19:25 »
Когда компутер один, ставят виртуалки. Кластера бывают сильно разными, это довольно общий такой термин, надо уточнить.

Offline Green

  • Full Member
  • ***
  • Posts: 129
  • Karma: +3/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #3 on: August 31, 2010, 01:23:49 »
dudes, по дефолту ответ всегда приходит на ту сетевуху (а если мы говорим о все же о классических сервисах, то читать "на тот ip address") с которой пришел запрос... как бы оно по умолчанию так...

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #4 on: August 31, 2010, 01:29:10 »
Вопрос простой - можно или нельзя? Я уже сказал, что это тестовый изврат, что на продакшене будут нормальные 2 машины. Можно ли на скорую руку сделать так, чтобы каждая сетевуха отвечала сама за себя, чтобы на каждый из IPёв можно было повесить по сервису, nginx, mysql & etc, чтобы это работало как 2 разные машины? Работоспособность нужна исключительно в пределах одного свитча.

Убедительно прошу абстрагироваться от философских вопросов зачем так извращаться и советов как сделать "правильно" и просто ответиться на вопрос - можно ли во фре8.1 сделать описанное мною? если нет, то так и отвечаем, на этом диалог иссякнет.

2Green: сегодня проверил. На машине em0 (192.168.0.1) и em1(192.168.0.2), обе тыкнуты в один свитч. В тот же свитч ткнута машина, с которой делались пинги (192.168.0.3). Оба айпи пингуются. При выдергивании кабеля из ем1, перестает пинговаться только 192.168.0.2, 192.168.0.1 - пингуется. При выдергивании кабеля из ем0 пинговаться перестают оба адреса. Очевидно, что принимают запросы оба интерфейса, а ответ уходит с одного дефолтного, в данном случае - ем0. Хочется узнать, можно настроить так, чтобы переставал пингаться только тот интерфейс, из которого выдернут кабель, а второй работал бы при этом?

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #5 on: August 31, 2010, 06:41:26 »
Перестаньте извращаться и идите по нормальному пути, как это происходит в кластерах. Если позволяет ваш свитч, объедините обе сетевухи в один канал (bonding, etherchannel. etc). Это обеспечит вам надежность канала и увеличение пропускной способности. Доступность сервисов в кластере обеспечивается инфраструктурой кластера, которая "играет" с mac-адресами узлов кластера для обеспечения поддержания подключений при миграции виртуальных машин с одного узла кластера на другой.
Сомневаюсь, что в BSD эти технологии отличаются от применяемых в Linux.
Т.е. RTFM, наконец! ;)

Offline SirYorik

  • Full Member
  • ***
  • Posts: 136
  • Karma: +3/-3
  • ccnas
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #6 on: August 31, 2010, 09:16:30 »
Quote
При выдергивании кабеля из ем0 пинговаться перестают оба адреса. Очевидно, что принимают запросы оба интерфейса, а ответ уходит с одного дефолтного, в данном случае - ем0. Хочется узнать, можно настроить так, чтобы переставал пингаться только тот интерфейс, из которого выдернут кабель, а второй работал бы при этом?
сами себе и ответили

абстрагируюсь. задача конечно дурная, но решается скриптом-watchdog типа-демоном (крон не осилит), чекающим состояние линка раз 50-100 в секунду, чуть что - выдаёт команду смены дефолтного интерфейса. python|perl|C|и тп по вкусу.


зы: но bonding всё-же лучше
« Last Edit: August 31, 2010, 09:25:16 by SirYorik »

Offline Diver

  • Hero Member
  • *****
  • Posts: 790
  • Karma: +2/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #7 on: August 31, 2010, 09:26:37 »
как вариант, наверное, можно поднять две виртуалки и тестить на них
MCP

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #8 on: August 31, 2010, 09:55:00 »
сами себе и ответили

абстрагируюсь. задача конечно дурная, но решается скриптом-watchdog типа-демоном (крон не осилит), чекающим состояние линка раз 50-100 в секунду, чуть что - выдаёт команду смены дефолтного интерфейса. python|perl|C|и тп по вкусу.

Спасибо огромное. Хоть кто-то услышал что мне надо. Я знаю, что задача дурная, о чем честно предупредил сразу.

Quote
зы: но bonding всё-же лучше
Мне надо было выяснить можно ли сделать так, чтобы с точки зрения сети 1 машина выглядела как 2. Не объединить, а наоборот - разделить интерфейсы, чтобы они работали независимо, при этом находясь и логически, и физически в одной сети.

Предложенный метод немного не то, что хотелось бы, но если по-другому нельзя, то подойдет и этот, все одно задача временная.

Еще рас спасибо за подсказку.

Quote from: Diver
как вариант, наверное, можно поднять две виртуалки и тестить на них
Про это думал уже, но времени возиться особо нет.

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #9 on: August 31, 2010, 10:09:24 »
абстрагируюсь. задача конечно дурная, но решается скриптом-watchdog типа-демоном (крон не осилит), чекающим состояние линка раз 50-100 в секунду, чуть что - выдаёт команду смены дефолтного интерфейса. python|perl|C|и тп по вкусу.

Кстати, как это делается? Не нагуглил сходу ответа, у ifconfig'а только defaultif похожа на нужное, но она для ICMPv6.

Offline SirYorik

  • Full Member
  • ***
  • Posts: 136
  • Karma: +3/-3
  • ccnas
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #10 on: August 31, 2010, 12:58:33 »
Quote
с точки зрения сети 1 машина выглядела как 2
bonding + два ip на bond-interface ?

зы: ниже правильно припомнили возможность ipfw (iptables в линукс) возвращать пакет на интерфейс откуда пришел запрос - эффект тотже будет


Quote
Кстати, как это делается?
iproute во фрибсд есть поди ?

было допустим  "default via 192.168.3.1 dev eth0"

  ip ro del default
  ip ro add default dev eth1 via 192.168.3.1

а как на С - взять исходник тогоже iproute


« Last Edit: August 31, 2010, 13:07:10 by SirYorik »

Offline zhenya

  • Administrator
  • Full Member
  • *****
  • Posts: 215
  • Karma: +14/-5
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #11 on: August 31, 2010, 13:01:54 »
В гугле встречал решения для отправки пакета через тот интерфейс откуда он пришел (решается на уровне ipfw). В моем случае были правда vpn + em0.

Offline SinClaus

  • Sr. Member
  • ****
  • Posts: 453
  • Karma: +6/-2
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #12 on: August 31, 2010, 13:04:44 »
Один момент - если оба адреса будут в одной подсети, между ними никакого рутинга настроить не удастся.
Самый страшный вирус называется юзер.

Offline SirYorik

  • Full Member
  • ***
  • Posts: 136
  • Karma: +3/-3
  • ccnas
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #13 on: August 31, 2010, 13:07:44 »
так вроде и не нужен по постановке задачи

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #14 on: August 31, 2010, 15:31:12 »
Не, ну сделать-то так конечно можно, хоть задача и извратная. Лет 5 назад я с таким экспериментировал. Вот только это не имеет никакого смысла - потому что тестироваться-то будут совсем другие условия, чем будет в "нормальном" решении. Ключи тоже можно искать под фонарем, да найти не свои...
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #15 on: August 31, 2010, 22:36:07 »
В гугле встречал решения для отправки пакета через тот интерфейс откуда он пришел (решается на уровне ipfw). В моем случае были правда vpn + em0.

хм, типа так? не могу сейчас проверить, будет ли такое работать
ipfw XX add fwd 192.168.0.2 ip from 192.168.0.2 to any via em1

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #16 on: September 01, 2010, 16:00:43 »
Такая строка бессмысленна, зачем слать пакет хосту, с которого он пришел?.. Решение, среди прочего, описано на http://nuclight.livejournal.com/124348.html (правда, небольшой патч нужен).

Однако повторюсь - это не та задача, которую следует решать и проверять, потому что реальные условия будут совсем иные. Только вредная потеря времени, это как "ложное чувство безопасности".
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #17 on: September 01, 2010, 18:00:14 »
Однако повторюсь - это не та задача, которую следует решать и проверять, потому что реальные условия будут совсем иные. Только вредная потеря времени, это как "ложное чувство безопасности".

Спасибо, почитаю, попытаюсь осознать. И в свою очередь повторюсь, раз в третий уже наверное: мне надо оттестить работу двух нод. Для двух нод по-хорошему надо 2 машины. Но машина - только одна, зато с двумя сетевухами. Поэтому спросил можно сделать так, чтобы с точки зрения сети машина была не одна, а как бы две. Внутренний роутинг не нужен. Нужно поднять 2 одинаковых сервиса на разных айпи, чтобы каждый из них был доступен только при условии физического соединения соответствующей сетевухи со свитчом. Это очень узкая частная мелкая задачка, которая решается в преддверии полномасштабного проектирования. Не надо при виде слова "кластер" начинать мыслить штампами в виде бондинга, эзерлинка, транков и прочего. Задача ровно такая, как я ее описал, не надо ничего додумывать.

Собственно, вопрос был задан толко потому, что при гуглении видел, что такой вопрос задавался много где, но ответа не было дано, зато везде начинали советовать не клепать мозги и учить как надо делать. Тут, увы, получилось почти то же самое.

Offline Alloy

  • Newbie
  • *
  • Posts: 39
  • Karma: +0/-0
    • http://alloy.tomsk.ru/
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #18 on: September 02, 2010, 08:44:16 »
аха, афтар таки воткул и настроил две сетевухи в одну сеть и посмотрел что будет происходить и сделал быстрые выводы. выводы не полные, потому как надо четко понимать как работает ARP, адресация на MAC-уровне и какие там таймауты. таймауты ключевое слово.
рекомендую подтянуть мат часть и сделать правильные выводы.

правильно здесь подсказавают про виртуальные машины, никто не мешает запустить две виртуальки на одном компе.
не обязательно запускать полные виртуалки, в данном случае наверно можно обойтись простым FreeBSD'шным jail'ом (я только не уверен допинали ли его в 8.1 до уровня разных ARP таблиц, надо пробовать)

ну и /usr/ports/sysutils/heartbeat вам в помощь.

Offline igor7777

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: 2 сетевухи в одну подсеть, FreeBSD
« Reply #19 on: September 02, 2010, 10:37:40 »
Мда. Автор СРАЗУ воткнул две сетевухи в одну сеть. Автор НЕ настроил две сетевухи так, как хотел. Выводов, соответственно, никаких НЕ сделал. Автор способен сам решить, нужна ему такая схема или нет, соответственно, НЕ нуждается в советах так НЕ делать. Автору нужен был простой ответ на вопрос, можно ли сделать описываемое или нельзя. Если можно, то как? Если нельзя, то почему?

ЗЫ: Хёртбит на этой машине мне не нужен, он будет стоять в другом месте.