Linux

Иногда, бывает необходимо посмотреть, кто больше всего загружает канал передачи данных. Для мониторинга текущего состояния сети есть множество утилит. Под ОС Linux я обычно использую jnettop и nethogs. Эти утилиты поставляются в одноименных пакетах jnettop и nethogs соответственно.

 

jnettop — позволяет отображать хосты и порты, потребляющие большинство трафика в данный момент.

jnettop

 

nethogs — отображает информацию о том, сколько потребляют трафика различные процессы в Linux.

nethogs

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. Если значение — перестановка отключена, и трафик видится с тегами 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

  Читать далее

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 или Политика активный-резервный. Только один сетевой интерфейс из объединённых будет активным. Другой интерфейс может стать активным, только в том случае, когда упадёт текущий активный интерфейс. При такой политике MAC адрес bond интерфейса виден снаружи только через один сетевой порт, во избежание появления проблем с коммутатором. Эта политика применяется для отказоустойчивости.
 balance-xor    или Политика XOR. Передача распределяется между сетевыми картами используя формулу: [( «MAC адрес источника» XOR «MAC адрес назначения») по модулю «число интерфейсов»]. Получается одна и та же сетевая карта передаёт пакеты одним и тем же получателям. Опционально распределение передачи может быть основано и на политике «xmit_hash».  Политика XOR применяется для балансировки нагрузки и отказоустойчивости. 
 broadcast       или  Широковещательная политика. Передает всё на все сетевые интерфейсы. Эта политика применяется для отказоустойчивости.
 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)

  Читать далее

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, можно воспользоваться пакетом pppoeconf  (зависит от пакета ppp)

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

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

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

  Читать далее

Существует несколько способов подключения к сети. Наиболее распространенные — это подключение через последовательный или USB порт и подключение через Ethernet.

1. Подключение через последовательный или usb порт.

     Для доступа к сети (или Интернет) используется модем, будь то простой dialup, подключенный к телефонной линии, либо gsm модем.

     Основной протокол для подключения — PPP. Соединение типа точка-точка (PPP) настраивается с помощью интерактивного скрипта: pppconfig, который при выполнении запрашивает необходимые данные (название подключения/имя провайдера, параметры DNS, метод аутентификации, имя пользователя,  пароль, скорость порта модема, импульсный или тональный набор номера, номер телефона, порт модема). Повторным запуском pppconfig можно внести изменения в существующие настройки подключения, выбрав в меню настроек расширенные параметры можно даже задать строку инициализации модема и прочие опции. Команда pppconfig доступна после установки пакета pppconfig, который зависит от пакета ppp. Включать и отключать ppp интерфейс можно командами «pon name_conn» и «poff name_conn» (name_conn — название подключения или имя провайдера, которое задали во время настройки через pppconfig).  При настройке ppp соединения через pppconfig используются следующие конфигурационные файлы:

«/etc/ppp/peers/<name_conn>»  — сгенерированный pppconfig-ом файл для демона pppd  
«/etc/chatscripts/<name_conn>» — сгенерированный pppconfig-ом файл, содержащий команды для диалога с модемом (AT команды, строку инициализации модема и прочее)
«/etc/ppp/options»  — опции для демона pppd
«/etc/ppp/pap-secret» — данные для аутентификации по протоколу PAP
«/etc/ppp/chap-secret» — данные для аутентификации по протоколу CHAP

Альтернативным пакетом для настройки ppp является: wvdial, он настраивается командой wvdialconf.

2. Подключение через Ethernet. 

     Используется сетевая (Ethernet) карта. Сетевая плата может быть как для подключения по проводу так и беспроводной (Wi-Fi)

     Основные протоколы: PPPoE, DHCP либо Static IP

Читать далее