Настройка сетевого моста astra linux

Обновлено: 03.07.2024

Делюсь опытом в описанных технологиях. Блог в первую очередь выполняет роль памяток для меня самого.

12.16.2016

Настройка сети в Astra Linux

Все выполняемые операции требуют привилегий пользователя root.

Astra Linux использует для конфигурирования сетей собственную утилиту wicd. В общем, она довольно удобна, но у неё есть фатальный недостаток - её писали не мы сеть не будет работать до авторизации пользователя в системе. Для обычных компьютеров в этом нет ничего страшного, однако, для сервера это большая проблема, так как иногда его приходится перезагружать по SSH.

Пусть компьютеры будут находиться в сети с адресами 192.168.0.XXX , где вместо XXX - число от 1 до 254.

Настройка осуществляется путем правки файла /etc/network/interfaces . Каждый сетевой интерфейс (сетевая карта, хотя это не совсем точное название) настраивается отдельно. Настройки для сервера выглядят так:

Первая строчка auto lo eth0 указывает, какие интерфейсы должны быть запущены при загрузке ОС. Отмечу, что локальная петля lo должна присутствовать там в любом случае.

Пропустим описание локальной петли и сразу перейдем к сетевому интерфейсу.

iface Ключевое слово, говорящее о том, что дальше будет описание сетевого интерфейса
eth0 Указываем, что данный сетевой интерфейс должен быть привязан к сетевой карте eth0. Посмотреть список карт можно командой: lshw -class network
inet Указываем, что это будет настройка сети.
static При этом все настройки будут указаны вручную.
address IPv4-адрес компьютера
netmask Маска подсети.
gateway Шлюз, т. е. IP-адрес, через который идёт подключение к интернету. Обычно на сервере указывают адрес, выданный провайдером, но в нашем случае (закрытый от мира сегмент) пусть будет 192.168.150.1, т. е. компьютер обращается сам к себе.
dns-nameservers Список разделенных пробелами IP-адресов DNS-серверов. Полезно при разворачивании ЕПП под управлением Astra Linux и настройке приложения bind.

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

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

Если на одной сетевой карте по каким-то причинам нужно иметь 2 или более IP-адресов, настройки делаются следующим образом:

Посмотреть настройку сети в Debian более подробно можно на официальной Wiki-странице или её несколько устаревшей русской версии

Сборник небольших "how to" для разных задач администрирования ПК СВ "Брест".

Общее

Изменение или добавление пути хранения образов дисковых устройств

По-умолчанию образы виртуальных жестких дисков хранятся по пути /var/lib/libvirt/images.

При инициализации ОС на данный путь накладываются метки безопасности, категории и флаг CCNRA:

узнать которые мы можем введя команду:

Часто возникает необходимость разместить образы дисков по другому пути, например, на дополнительном жестком диске или примонтированном удаленном хранилище.

Запуск ВМ с образом из такого хранилища приведет к следующей ошибке:

Для решения этой проблемы необходимо внести изменения в скрипт /usr/sbin/pdp-init-libvirt, добавив конечный путь хранения образов, а также все вышестоящие каталоги.

В данном примере файл образа диска размещался по пути /tmp/tmp/

Поэтому скрипт после изменения должен выглядеть так (нажать для раскрытия):

После внесения изменений необходимо перезагрузить машину.

Локальная виртуализация

подключение ВМ к физической сети хоста

на хосте создать сетевой мост, включить в него необходимый сетевой порт хоста (в примере - eth0):

через файл /etc/network/interfaces (на хосте, до инициализации сетевого соединения (. ), должен быть установлен пакет bridge-utils):

или через Network Manager, если установлен он (не рекомендуется для серверной виртуализации):

добавить соединение типа "Мост", нажать "Создать"

указать в поле "Interface name" значение "bridge0"

нажать "добавить", выбрать "Ethernet", нажать "Создать"

выбрать в поле "device" нужный физический сетевой адаптер, нажать "сохранить":

если необходимо - установить IP адрес для моста во вкладке "Параметры IPv4" (будет виден из внешних сетей):

Запустить "Менеджер виртуальных машин", открыть существующую ВМ, или создать новую.

Нажать в меню "Вид" - "Подробности", перейти к настройке сетевого адаптера.

Переключить режим на "Общее устройство", и поле "Имя моста" вписать "bridge0":

Сетевой трафик ВМ будет доступен с хостовой ОС для адаптера eth0, а также для внешних сетей, к которым подключен eth0

Серверная виртуализация

Удаленный проброс USB-устройств в виртуальную машину

Для удаленной работы пользователя с ВМ возможно подключение USB-устройства пользователя к ВМ.

Для этого необходимо использовать протокол SPICE и утилиту virt-viewer в качестве интерфейса взаимодействия с ВМ:

  1. На сервере виртуализации запустить Менеджер виртуальных машин (virt-manager);
  2. В свойствах ВМ перейти во вкладку "Дисплей" и выбрать тип сервера SPICE;
  3. Во вкладке "Контроллер USB" выбрать необходимое поколение контроллера.

При подключении с рабочего места командной:

возможен проброс USB устройств через меню "Файл" - "USB device selection"

Облачная виртуализация

Клонирование ВМ

Схема клонирования ВМ в OpenNebula предполагает следующую последовательность действий:

  1. создание шаблона на основе существующей ВМ
  2. развертывание новой или нескольких ВМ на основе этого шаблона
  1. В свойствах ВМ, находящейся в выключенном состоянии, нажать значок дискеты ("Save as template");
  2. ВМ перейдет в статус "HOTPLUG", затем, через некоторое время) в "POWEROFF".
  3. После этого в списке шаблонов появится новый шаблон, а в списке дисковых образов - новый диск.
  4. На основе нового шаблона необходимо создать новую (новые) ВМ.
  5. В свойствах новых ВМ необходимо отключить старый (оригинальный) образ диска и подключить новый.

Шейпинг сетевого и дискового ввода-вывода ВМ

В OpenNebula на уровне шаблона ВМ возможно ограничение полосы пропускания дисковой и/или сетевой подсистемы ВМ. Для этого:

  1. Перейти в Tamplates - VMs, создать шаблон ВМ
  2. Настроив основные параметры на вкладке "General", перейти во вкладку "Storage", выбрать диск и раскрыть "Advanced options":


3. Ограничить полосу дискового ввода-вывода, выставив в "IO throttling (bytes/s)" значение

4. перейти во вкладку "Network". Выбрать сеть и раскрыть "Advanced options":

5. выставить в полях "Override Network Inbound Traffic QoS" и "Override Network Outbound Traffic QoS" значения

6. Закончить создание шаблона, нажав "Create". Созданные далее на основе шаблона виртуальные машины получают одинаковые настройки ограничения дискового и сетевого ввода-вывода. Для индивидуальной настройки ограничения сетевого и/или дискового ввода-вывода для отдельных ВМ необходимо приготовить индивидуальный шаблон ВМ.

настройка VLAN

OpenNebula имеет возможность помечать сетевые пакеты виртуальных машин VLAN-тэгами перед передачей их в сетевую карту хостовой системы. Для этого необходимо создать новую виртуальную сеть:

  1. перейти во вкладку Virtual Networks
  2. создать новую сеть, дать ей имя
  3. далее во вкладке"Conf":
    в поле "Network mode" выбрать 802.1Q;
    в поле "Physical device" указать мост хоста, в который будут передаваться пакеты виртуальной сети;
    в поле "VLAN ID" выбрать "Manual VLAN ID";
    в появившемся ниже поле указать номер VLAN.
  4. во вкладке "Addresses" создать необходимые диапазоны IP или MAC
  5. нажать Create

Виртуальные машины, присоединенные к этой сети будут доступны друг другу без необходимости настройки VLAN в них (как будто им предоставлены Access-порты коммутатора). Но трафик этой сети будет передаваться в хостовую ОС уже с указанной меткой VLAN.

поддержка Open vSwitch

OpenNebula поддерживает работу с программным коммутатором Open vSwitch. Для подготовки на узлах виртуализации нужно установить Open vSwitch и создать виртуальные коммутаторы с одинаковым именем (например ovs-sw0):

  1. далее войти в OpenNebula, перейти во вкладку Virtual Networks
  2. создать новую сеть, дать ей имя
  3. перейти во вкладку "Conf":
    в поле "Bridge" указать "ovs-sw0"
    в поле "Network mode" выбрать "Open vSwitch";
    в поле "VLAN ID" указать "No VLAN network";
  4. во вкладке "Addresses" создать необходимые диапазоны IP или MAC
  5. нажать Create

Подключенные к данной сети виртуальные машины при запуске будут автоматически подключаться к виртуальному коммутатору ovs-sw0, что можно проверить командой на узле виртуализации:


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

Шаг 1. Создание мостовой сети с помощью диспетчера виртуальных машин.

Выполните следующие действия, чтобы создать мост Linux из диспетчера виртуальных машин (GUI). В вашей системе должен быть установлен KVM.

Откройте диспетчер виртуальных машин и перейдите в меню «Правка»> «Сведения о подключении»> «Виртуальные сети».

Настройте новый сетевой интерфейс, щелкнув + в нижней части окна. Дайте виртуальной сети имя.

Выберите тип сети и политику пересылки.

Завершите настройку и сохраните свои конфигурации. Новая виртуальная сеть должна отображаться на странице обзора.

Для сети автоматически создается мост в хост-системе.

Шаг 2: Создайте мост KVM с помощью команды virsh.

Создайте новый XML-файл моста.

Добавьте в файл детали моста.

Чтобы определить сеть из файла XML без его запуска, используйте:

Чтобы запустить (ранее определенную) неактивную сеть, используйте:

Чтобы настроить автоматический запуск сети при запуске службы:

Подтвердите создание моста и IP-адрес.

Шаг 3: Создайте мост, отредактировав сетевые скрипты (CentOS / RHEL / Fedora):

Ниже скрипт создаст мост под названием br10.

Конфигурация интерфейса eth0, к которому я подключаюсь, будет следующей:

Перезагрузите сетевой демон.

Шаг 4: Создайте мост, отредактировав сетевые сценарии (Debian / Ubuntu):

Настроить интерфейс Bridging:

Отключите все строки в разделе интерфейса eth0, чтобы они выглядели примерно так:

Перезапустите сетевую службу.

Шаг 5: Использование инструмента Nmcli

Используйте nmcli инструмент командной строки управления сетью, чтобы создать мост Linux на желаемом интерфейсе. Давайте сначала перечислим все доступные подключения.

Поскольку мой мост будет создан на втором устройстве enp7s0 , я удалю существующее соединение, а затем создам мост с этим устройством.

1. Сохраните информацию, связанную с мостом, в переменных.

  • BR_NAME: имя создаваемого моста.
  • BR_INT: физическое сетевое устройство, которое будет использоваться в качестве ведомого моста.
  • SUBNET_IP: IP-адрес и подсеть, назначенные созданному мосту.
  • GW: IP-адрес шлюза по умолчанию.
  • DNS1 и DNS2: IP-адреса DNS-серверов, которые будут использоваться.

2. Определите новое мостовое соединение.

3. Измените мост, чтобы добавить IP-адрес, шлюз и DNS

4. Добавьте сетевое устройство как подчиненное устройство моста.

Шаг 6. Подключите сетевой мост

После того, как соединение с сетевым мостом будет создано, активируйте его.

Просмотрите детали моста, запустив его.

Команда ip addr должна выдать результат, аналогичный приведенному ниже.

Поздравляю . Вы успешно создали и настроили мостовую сеть для KVM в системе Linux.

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

Код bridge в Linux является частичной реализацией стандарта ANSI/IEEE 802.1d. Впервые бриджинг в Linux появился в 2.2, затем код был переписан Леннертом Буйтенхеком (Lennert Buytenhek). Код bridge интегрирован в ядра серий 2.4 и 2.6.

Коммутация и фильтрация

Linux-мосты более мощные чем простые аппаратные мосты и коммутаторы, поскольку они могут ещё фильтровать и регулировать трафик. Комбинация коммутатора и брандмауэра выполняется с помощью родственного проекта ebtables.

Состояние

Возможные будущие усовершенствования:

  • Описать фильтрацию STP
  • Использовать Netlink interface для управление бриджами (прототип в 2.6.18)
  • Добавить поддержку в user space
  • Сделать поддержку RSTP и других расширений 802.1d STP

Скачивание

Поддержка бриджинга есть в текущих ядрах 2.4 и 2.6 всех основных дистрибутивов Linux. Требуемый комплект утилит для администрирования bridge-utils есть практически во всех дистрибутивах.

Инсталляция утилит выполняется стандартным для дистрибутива способом. Например, в Debian GNU/Linux:

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

Команда ifconfig должна показывать обе (или больше, если их больше) сетевые карты, и они должны быть выключены, т.е. находиться в состоянии DOWN.

В большинстве случаев код коммутатора оформляется в виде модуля. Если модуль сконфигурирован и установлен корректно, он автоматически загружается при первом вызове команды brctl.

Если ваши утилиты bridge-utilities корректно установлены, и ядро и его модуль bridge в порядке, вызовом команды brctl можно будет просмотреть маленькую сводку о синтаксисе команды:

Создание и удаление коммутатора

brctl addbr "bridgename"

создаёт экземпляр логического коммутатора с именем bridgename. Для того чтобы выполнять коммутацию пакетов, нужно создать хотя бы один коммутатор . Можно воспринимать логический бридж как контейнер интерфейсов, принимающих участие в коммутации. Каждый экземпляр коммутатора представлен новым сетевым интерфейсом.

Соответствующая команда для удаления коммутатора:

brctl delbr bridgename

Включение устройства в коммутатор

brctl addif bridgename device

Соответствующая команда для выключения устройства из коммутатора:

brctl delif bridgename device

Просмотр устройств

Команда brctl show показывает состояние всех работающих коммутаторов:

Если установить время в ноль, запись становится постоянной.

Spanning Tree Protocol

Если используется несколько коммутаторов, для того чтобы избежать петель коммутации, нужно включить поддержку протокола Spanning Tree Protocol (Протокол остовного дерева).

Посмотреть параметры STP можно так:

Настройка STP

Конфигурироваться может несколько параметров, имеющих отношение к Spanning Tree Protocol. Код автоматически определяет скорость соединения и другие параметры, поэтому, как правило, вручную их менять не нужно.

Приоритет коммутатора

У каждого коммутатора есть относительный приоритет (priority) и стоимость (cost). Каждый интерфейс коммутатора ассоциируется с номером порта в коде STP. У каждого есть приоритет и стоимость, на основе которых принимается решение о том, какой путь для передчи пакета является кратчайшим. Всегда используется путь с наимеьшей стоимостью (за исключением случая, когда этот путь разорван). Если у вас несколько коммутаторов и интерфейсов, может понадобиться отрегулировать приоритеты, чтобы достичь максимальной производительности.

Бридж с наименьшим приоритетом избирается как корневой. Корневой бридж является центром остовного дерева (spanning tree) коммутационных связей.

Приоритет и стоимость

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

Для разных портов, имеющих одинаковую стоимость существует ещё приоритет.

Задержка передачи (Forwarding delay)

Задержка передачи (forwarding delay) это время в течение которого порт находится в состояниях Listening и Learning, прежде чем перейти в состояние Forwarding. Это время нужно для того чтобы мост, когда он включается в сеть, сначала должен ознакомиться с трафиком, прежде чем включаться в работу.

Время Hello

Время от времени корневой мост (Root Bridge) и выделенные мосты (Designated Bridges) отправляют пакет hello. Пакеты hello нужны для обмена информацией о топологии все коммутироемой локальной сети.

Если другой коммутатор в дереве spanning tree не отправляет пакет hello в течение долгого времени, считается, что он не в порядке (dead). Таймаут устанавливается командой:

Пример настройки

Базовая настройка моста выполняется так:

Если вы хотите чтобы мост автоматически получал IP-адрес у ADSL-модема по DHCP (или в другой похожей ситуации), сделайте так:

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

Конфигурирование через /etc/net

После этого описывается мост:

После этого можно поднять бридж командой ifup mybridge. Устройства port0 и port1 поднимутся автоматически.

FAQ

Что делает мост/коммутатор?
Мост прозрачно пересылает трафик между несколькими сетевыми интерфейсами. На простом языке это означает, что коммутатор соединяет два или более интерфейсов Ethernet между собой, для того чтобы получилась большая Ethernet-сеть.

Это как-то зависит от используемых протоколов?
Нет. Коммутатор ничего не знает о протоколах высокого уровня, он только видит кадры Ethernet. Поэтому функциональность моста является протоколонезависимой и проблем с передачей протоколов таких как IPX, NetBEUI, IP, IPv6 и других быть не должно.

Чем этот код лучше чем аппаратный коммутатор?
Пожалуйста, имейте в виду, что этот код не писался с целью заменить Linux-боксами выделенное сетевое оборудование. Не надо воспринимать Linux с этим кодом как замену аппаратным коммутаторам. Это скорее расширение сетевых возможностей Linux. Как бывает, что Linux-маршрутизатор лучше чем аппаратный маршрутизатор (и наоборот), есть ситуации, когда Linux-мост лучше чем выделенный мост (и наоборот).

Работает ли бриджинг на ядре 2.2?
Изначально разработка велась на 2.2, есть патчи для этого ядра. Но сейчас эти патчи уже не поддерживаются и не развиваются.

Есть ли в планах поддержка RSTP (802.1w)?
Да. Ведётся работа по включению поддержки RSTP в будущий релиз для ядра 2.6. Код делался для ядра 2.4 и нуждается в доработке, тестировании и обновлении.

Что можно соединять с помощью моста?

Ограничения, которые накладываются на соединяемые устройства:

  • У всех должен быть одинаковый максимальный размер пакета (MTU). Мост не выполняет фрагментирование пакетов.
  • Устройства должны выглядеть как Ethernet, т.е. у них должны быть 6-байтные адреса отправителя и получателя.
  • Должен поддерживаться неразборчивый (promiscuous) режим. Мост должен получать не только трафик, адресованный ему, но и весь сетевой трафик.
  • Должен быть разрешён спуфинг адресов. У моста должна быть возможность отправлять данные по сети, как если бы они пришли от другого хоста.

Можно ли выполнять коммутацию в сочетании с netfilter/iptables?
Да. Соответствующий код включен в большинство ядер. Смотрите проект ebtables.

Работает ли он с Token Ring, FDDI и Firewire?
Нет. У этих протоколов отличается адресация и размер кадра.

Список вещей, которые можно сделать:

Оно не работает с моей обычной ethernet-карточкой!
К сожалению, у некоторых сетевых карт глючные драйверы, которые сбоят во время загрузки. Ситуация улучшается, поэтому может помочь установка текущего ядра и сетевых драйверов. Ещё можно попробовать устройства другого производителя.

Оно не работает с моей wireless-карточкой!
Это известная проблема, и она не связана с кодом моста. Большое количество wireless-карт не позволяет делать подмену (spoofing) адреса источника. В некоторых чипсетах это ограничение на уровне прошивки (firmware). Дополнительная информация может быть найдена в архивах списков рассылки.

Удалось ли кому-нибудь обойти проблему связанную с тем, что Wavelan не позволяет использовать никакие MAC-адреса за исключением своего собственного?

(Отвечает Michael Renzmann, mrenzmann at compulan.de)

И всё же я не понимаю!!
Полноценный мост для беспроводных сетей (802.11) требует поддержки WDS. В текущей реализации её нет.
Можно сделать ограниченную функциональность с некоторыми драйверами. Для этого обязательно чтобы устройство поддерживало разные адреса отправителя и получателя. Что и обеспечивает WDS. Есть способы добиться чтобы оно заработало, но они достаточно запутанные, и их сложно понять без досконального знания 802.11, режимов его работы и формата загловка кадра.

Работает ли DHCP через/поверх моста?

Мост передаёт DHCP-трафик (широковещательный) и ответы на него. Также можно использовать DHCP для установки локального IP-адреса на псевдо-интерфейс моста. Одна из распространённых ошибок при использовании DHCP является установка задержки передачи (forwarding delay) на порту коммутатора равной 30 секунд. При такой задержке интерфейс когда он подключился к мосту не может посылать через него данные в течении первых 30 секунд. Причина в том, что при использовании моста в сложной топологии он должен сначала обнаружить остальные мосты дабы не создавать петель. Проблема была одной из причин создания протокола Rapid Spanning Tree Protocol (RSTP).

Этот пост November 9, 2007 at 8:14 pm опубликовал molse в категории Linux. Желающие могут оформить RSS подписку на комменты. Оставьте комментарий(последний комментарий отображается первым) или оставьте трэкбэк. Ccылка на трэкбэк.

Читайте также: