Объединение сетевых интерфейсов под Freebsd используя lagg

Купили сервер. Захотелось объеденить 2 сетевушки, что бы работала как одна. Полез в инет и нашёл, что для этих случаев можно юзать ng_one2many. Попробовал делать по статье http://www.opennet.ru/tips/info/755.shtml, но на определённом этапе начал давать сбои, машина уходила в ребут. Поэтому решил искать что-то другое. Через некоторое время увидел такую штуку, как lagg0 и решил юзать её. Сразу скажу, что она начала поддерживаться начиная с версии 6.3 (у меня как раз такая и стояла). Сложного ничего нет, делаем всё по HandBook’y.

Для включения поддержки устройства lagg можно пересобрать ядро с поддержкой lagg

device lagg

или добавить строчку

if_lagg_load="YES"

в

loader.conf

Я выбрал второй вариант. Добавил соотвествующую строчку и тут же подгрузил этот модуль.

#kldload if_lagg

Теперь переходим собственно к созданию этого самого lagg
Выполним последовательно команды

#ifconfig lagg0 create
#ifconfig lagg0 up laggproto lacp laggport em0 laggport em1 10.10.10.10 netmask 255.255.255.0

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

Для того, что бы при перезагрузки lagg0 автоматом подымался, пишем в /etc/rc.conf такое

cloned_interfaces="lagg0"
ifconfig_em0="up"
ifconfig_em1="up"
ifconfig_lagg0="laggproto lacp laggport em0 laggport em1 10.10.10.10 netmask 255.255.255.0"

Если вдруг у вас не поднимается lagg0, то либо вы не указали для сетевых слово up в /etc/rc.conf, либо можете попробовать другой вариант: добавить следующее в /etc/rc.local (а в /etc/rc.conf удалить выше написанное)

(ifconfig lagg0 create && ifconfig lagg0 up laggproto lacp laggport em0 \
laggport em1 10.10.10.10 netmask 255.255.255.0 && route add default 10.10.10.1) || \
(ifconfig em0 up 10.10.10.10 netmask 255.255.255.0 && route add default 10.10.10.1)

Примечание (спасибо пользователю neyromant).

Обязательно нужно настроить порты коммутатора (куда подключёны сетевые lagg) в режим LACP/LAG, иначе работать не будет.

Аналоги в других ОС.

Solaris: dladm link agregation
Linux: bonding
OpenBSD: trunk

Объединение сетевых интерфейсов под Freebsd используя lagg: 14 комментариев

  1. Shurik77

    вот таким образом работает через /etc/rc.conf во freebsd 7.x или 8.x
    cloned_interfaces=»lagg0″
    ifconfig_em0=»up»
    ifconfig_em1=»up»
    ifconfig_lagg0=»laggproto lacp laggport em0 laggport em1″
    ifconfig_lagg0_alias0=»inet 10.10.10.10 netmask 255.255.255.0″

    1. cvb

      Оказалось важно писать «inet… » до «lagg…», тогда подцепилось, то же самое и про «up»:
      ifconfig_lagg0=»inet 1.2.3.4/30 laggproto lacp laggport igb0 laggport igb1″

  2. mitiok

    у меня работает так (8.2, модуль собран в ядро)
    cloned_interfaces=»lagg0 lagg1 vlan2 vlan3 vlan4 vlan11″
    #
    ifconfig_em0=»up»
    ifconfig_em1=»up»
    ifconfig_bge0=»up»
    ifconfig_bge1=»up»
    #
    ifconfig_lagg0=»laggproto loadbalance laggport em0 laggport em1″
    ifconfig_vlan2=»inet 192.168.154.1 netmask 255.255.255.0 vlan 2 vlandev lagg0″
    ifconfig_vlan3=»inet 192.168.10.1 netmask 255.255.255.0 vlan 3 vlandev lagg0″
    ifconfig_vlan4=»inet 10.10.0.5 netmask 255.255.255.0 vlan 4 vlandev lagg0″
    ifconfig_vlan11=»inet 192.168.11.1 netmask 255.255.255.0 vlan 11 vlandev lagg0″
    #
    #ifconfig_lagg1=»laggproto loadbalance laggport bge0 laggport bge1″
    #ifconfig_lagg1=»inet 10.56.11.1 netmask 255.255.255.0″

    ifconfig_lagg1=»laggproto loadbalance laggport bge0 laggport bge1 10.56.11.1 netmask 255.255.255.0″

  3. Andrey

    Здравствуйте. Такой вопросик:
    Можно ли объеденить 2 канала от провайдера, в один?
    Ситуация такая:
    re0 — на ней поднимаем PPPoE:rg0 , есть реал ip (пусть 46.28.146.1)
    xl1 — на ней есть реал ip не через PPPoE (пусть 213.80.21.10)
    Как объеденить эти 2 канала, что бы сложить пропускную способность каналов, на случай падения одного канала (с одним ip) машина была доступна по второму каналу (2-й ip) ?

    1. skeletor Автор записи

      Дело в том, что lagg позволяет объединять линки и назначать им 1 адрес. У вас же ситуация другая: отказоустойчивая балансировка. Это решается с помощью файервола. Идея такова: половину трафика пускать через 1 канал, потовину — через другой. Например, в ipfw это решается с помощью probe 0.5. Дополнительно нужна проверка на «живучесть» каналов, если канал упал, то перестроить правила файервола так, что бы трафик через этот канал не шёл.

  4. neyromant

    А коммутатор так же должен поддерживать данную технологию?
    Ведь когда к нему пакеты приходят как он решает на какой порт отправить, когда два порта имеют один IP ?

  5. neyromant

    В сети по статьям про vlan-ы так же забывают писать , что клиентские компы да и коммутационное оборудование должно поддерживать стандарт IEEE 802.1Q.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *