• Настройка VLAN в Linux

    1. Модуль ядра для работы с VLAN

    Для работы в Linux с VLAN необходимо загрузить модуль ядра: 8021q

    # modprobe 8021q

    Для этого, ядро должно быть сконфигурировано с поддержкой стандарта IEEE 802.1Q (включается при конфигурировании ядра: в kernel/net/8021q включить 802.1Q VLAN Support или в Network options / 802.1Q VLAN Support). Во многих современных дистрибутивах Linux (Debian, CentOS, openSUSE и т.д) такая поддержка уже включена в ядре и модуль можно загружать.

     

     2. Использование утилиты vconfig для настройки VLAN

    Что бы настроить на интерфейсе необходимые VLAN, можно воспользоваться утилитой vconfig она находится в пакете vlan либо в пакете vconfig, в зависимости от дистрибутива Linux.

    vconfig имеет следующие опции:

     add [interface-name] [vlan_id] — добавить VLAN с номером vlan_id (от 0 до 4095) на интерфейсе interface-name

     rem [vlan-name] — удалить VLAN, именованый как vlan-name (имя vlan-name зависит от того, какой тип именования выбран см. ниже)

     set_flag [interface-name] [flag-num] [0 | 1] — указывает следует ли делать перестановку (reorder) заголовка Ethernet кадра. Если значение 1 — перестановка включена, и трафик в снифферах (tcpdump и т.д)  будет выглядеть как трафик обычного сетевого устройства без тегов VLAN. Если значение 0 — перестановка отключена, и трафик видится с тегами VLAN. Значение по умолчанию: 0.

     set_egress_map [vlan-name] [skb_priority] [vlan_qos] — указывает, что для исходящих пакетов через vlan-name с определённым приоритетом буфера сокетов (sk_buff) skb_priority, должна выполняться маркировка приоритета VLAN в значение vlan_qos (3-х битное значение в VLAN заголовке). По умолчанию значение приоритета VLAN vlan_qos: 0.

     set_ingress_map [vlan-name] [skb_priority] [vlan_qos] — указывает, что входящие пакеты через vlan-name с определённым приоритетом VLAN vlan_qos, должны помещаться в очередь буфера сокетов с приоритетом  skb_priority. Значение по умолчанию приоритета очереди буфера сокетов skb_priority: 0.

     set_name_type [name-type] — задаёт тип именования VLAN интерфейсов, при их добавлении. Возможные значения name-type:
        VLAN_PLUS_VID — имя vlan-name будет вида  vlan0020
        VLAN_PLUS_VID_NO_PAD — имя vlan-name будет вида vlan20
        DEV_PLUS_VID — имя vlan-name будет вида eth0.0020
        DEV_PLUS_VID_NO_PAD — имя vlan-name будет вида eth0.20

      (далее…)

  • Linux bonding — объединение сетевых интерфейсов в Linux

    1. Драйвер bonding

    Объединение сетевых карт в Linux можно осуществить с помощью драйвера bonding, он предоставляет методы для агрегирования нескольких сетевых интерфейсов в один логический. Поведение связанных интерфейсов зависит от режима. В общем случае, объединенные интерфейсы могут работать в режиме горячего резерва (отказоустойчивости) или в режиме балансировки нагрузки.

    Многие ядра в популярных дистрибутивах Linux имеют этот драйвер в виде модуля bonding и утилиты пользовательского уровня ifenslave для управления им. Утилита ifenslave может не быть установлена, тогда её нужно установить отдельно.

    Если ядро без поддержки bonding, то для его использования, необходимо сконфигурировать (при конфигурировании ядра командами «make menuconfig» или «make xconfig» или
    «make config«, в секци «Network device support» выбрать «Bonding driver support«), собрать и установить ядро. После установить утилиту ifenslave.

    Драйвер bonding имеет опции. Эти опции можно задать как аргументы в командах insmod или modprobe, обычно их задают в файле «/etc/modules.conf» или в файле «/etc/modprobe.conf», так же опции могут задаваться в специфичных конфигурационных файлах для определённых дистрибутивов.

     

    2. Параметры (опции) модуля bonding

     mode — определяет политику поведения объединенных интерфейсов. Возможные значения:

     balance-rr       или 0 Политика round-robin. Пакеты отправляются последовательно, начиная с первого доступного интерфейса и заканчивая последним. Эта политика применяется для балансировки нагрузки и отказоустойчивости
     active-backup или 1  Политика активный-резервный. Только один сетевой интерфейс из объединённых будет активным. Другой интерфейс может стать активным, только в том случае, когда упадёт текущий активный интерфейс. При такой политике MAC адрес bond интерфейса виден снаружи только через один сетевой порт, во избежание появления проблем с коммутатором. Эта политика применяется для отказоустойчивости.
     balance-xor    или 2  Политика XOR. Передача распределяется между сетевыми картами используя формулу: [( «MAC адрес источника» XOR «MAC адрес назначения») по модулю «число интерфейсов»]. Получается одна и та же сетевая карта передаёт пакеты одним и тем же получателям. Опционально распределение передачи может быть основано и на политике «xmit_hash».  Политика XOR применяется для балансировки нагрузки и отказоустойчивости. 
     broadcast       или 3   Широковещательная политика. Передает всё на все сетевые интерфейсы. Эта политика применяется для отказоустойчивости.
     802.3ad           или 4  Политика агрегирования каналов по стандарту IEEE 802.3ad. Создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача задействует все каналы в активной агрегации, согласно стандарту IEEE 802.3ad. Выбор через какой интерфейс отправлять пакет определяется политикой, по умолчанию XOR политика, можно использовать «xmit_hash» политику. 
    Требования:
    1. Поддержка Ethtool в драйвере, для получения информации о скорости и дуплексе на каждом сетевом интерфейсе
    2. Поддержка на коммутаторе стандарта IEEE 802.3ad
    3. Настройка на коммутаторе
     balance-tlb     или 5 Политика адаптивной балансировки нагрузки передачи. Исходящий трафик распределяется в зависимости от загруженности каждой сетевой карты (определяется скоростью загрузки). Не требует дополнительной настройки на коммутаторе. Входящий трафик приходит на текущую сетевую карту. Если она выходит из строя, то другая сетевая карта берёт себе MAC адрес вышедшей из строя карты. 
    Требования:
    1. Поддержка Ethtool в драйвере, для получения информации о скорости загрузки на каждом сетевом интерфейсе.
     balance-alb    или 6 Политика адаптивной балансировки нагрузки. Включает в себя политику balance-tlb плюс осуществляет балансировку входящего трафика. Не требует дополнительной настройки на коммутаторе. Балансировка входящего трафика достигается путём ARP переговоров. Драйвер bonding перехватывает ARP ответы, отправляемые с локальных сетевых карт наружу, и переписывает MAC адрес источника на один из уникальных MAC адресов сетевой карты, участвующей в объединении. Таким образом различные пиры используют различные MAC адреса сервера. Балансировка входящего трафика распределяется последовательно (round-robin) между интерфейсами.
    Требования:
    1. Поддержка Ethtool в драйвере, для получения информации о скорости загрузки на каждом сетевом интерфейсе.
    2. Поддержка в драйвере замены MAC адреса на включенном устройстве.
    3. Возможно придётся корректировать значение параметра updelay равным или большим, чем значение задержки на коммутаторе (что бы ARP ответы небыли заблокированы на коммутаторе при переподключении линка, либо при добавлении новой сетевой карты в bonding)

      (далее…)

  • Wi-Fi в Vmware

    Для того, что бы получить возможность  настройки Wi-Fi соединения в виртуальной среде Vmware, Virtualbox и пр. можно взять USB Wi-Fi карту, вставить её в хостовый компьютер и подключить к виртуальной машине. После чего в гостевой ОС появится это wi-fi устройство, дальнейшая работа с ним происходит как и в обычном компьютере (установка драйвера, настройка, использование).

     В Vmware Player для подключения Wi-Fi карты, необходимо выполнить действия: в меню раскрыть «Player» в нём выбрать «Removable Devices«, из предложенного списка указать «нужную Wi-Fi карту« и нажать «Connect«, как показано на рисунке ниже.

    Vmware Wi-Fi Connetct

    (далее…)

  • Настройка Wi-Fi в Linux Debian

    1. Установка драйвера Wi-Fi карты в Linux

    Для работы wi-fi карты необходим драйвер. Нужного драйвера может не быть в системе. Что бы узнать какое устройство (сетевая карта) используется, можно посмотреть ID производителя и ID устройства с помощью команды «lspci -nn» или, если USB карта, «lsusb» эти команды выводят список устройств в системе, а также показывают их идентификатор. Пример строки из вывода команды lsusb:

    Bus 001 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN

     Видно, что wi-fi карточка Realtek, модель: RTL8188CUS,  ID у неё: 0bda:8176 (первые четыре шестнадцатеричные цифры — это ID производителя, вторые — ID устройства). В данном случае модель уже известна и искать её по номеру ID  нет смысла. Многие драйвера для проводных и беспроводных карт Realtek собраны в пакете firmware-realtek, однако после его установки и подключения usb wi-fi карты, беспроводной интерфейс у меня не появился. Тогда я скачал с сайта производителя драйвера нужной мне модели под Linux(Unix). В архиве находились исходные тексты драйвера, скрипт установки «install.sh» и документация. После запуска скрипта install.sh, произошла компиляция модуля драйвера (8192cu) и его установка в систему. После чего появился беспроводной интерфейс wlan0.

    Узнать, что он появился можно командой «ifconfig -a«

    (далее…)

  • Настройка PPPoE в Linux Debian

    Для конфигурирования PPPoE клиента в Linux, можно воспользоваться пакетом pppoeconf  (зависит от пакета ppp)

    Мастер настройки запускается командой pppoeconf и выполняет следующие шаги

    1.  Производится поиск Ethernet устройств, если найдены не все устройства, то предлагается установить драйвер с помощью modconf

    Поиск Ethernet устройств

      (далее…)