Linux as ethernet switch

OpenVSwitch — использование виртуального коммутатора в Linux

OpenVSwitch это программный коммутатор, специально предназначенный для работы с системами виртуализации. OpenVSwitch предоставляет куда большие возможности, по сравнению со стандартной утилитой Linux bridge-utils. Например:

  • Учет трафика с помощью sFlow и Netflow
  • Возможность создания VLAN (IEEE 802.1q)
  • Поддержка Openflow для управления коммутацией
  • Привязка виртуальных интерфейсов к конкретным физическим интерфейсам.
  • Поддержка зеркалирования портов
  • ACL
  • Политики QoS

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

Установка и начало работы

Пакет OpenVSwitch поставляется из стандартного репозитория Ubuntu/Debian, поэтому установка простая. Выполняем команду:

sudo apt install openvswitch-switch

Для работы с сетевыми интерфейсами используется утилита ovs-vsctl. Проверим, какая версия OpenVSwitch установлена:

ovs-vsctl (Open vSwitch) 2.9.0 DB Schema 7.15.1

Создание виртуальных интерфейсов

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

sudo ovs-vsctl add-br bridgeswitch

Добавляем к мосту сетевой интерфейс:

sudo ovs-vsctl add-port bridgeswitch eth0

Теперь можно перейти к добавлению виртуальных портов:

sudo ovs-vsctl add-port bridgeswitch test-interface -- set interface test-interface type=internal

В команде выше мы обозначили создание виртуального интерфейса test-interface, привязанного к бриджу bridgeswitch. После двойной черты, обозначающей начало новой строки, указываем тип интерфейса.

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

На этом все. Теперь, выполнив команду:

можно увидеть список всех мостов и виртуальных интерфейсов:

ovs-vsctl show 8e5433c6-c82d-46b0-8378-543c40e4e9c0 Bridge bridgeswitch Port test-interface Interface test-interface type: internal Port "enp5s0" Interface "eth0" Port bridgeswitch Interface bridgeswitch type: internal ovs_version: "2.9.0"

С виртуальным интерфейсом test-interface можно работать как с обычным физическим, то есть появляется возможность конфигурировать его на локальной машине. Это бывает полезно, когда нужно обеспечить работу сервера в нескольких вланах, используя одну сетевую карту в качестве транка. Или, например, задать серверу несколько ip адресов. Для этого создается несколько виртуальных интерфейсов и для каждого прописывается конфигурация. Но я не рекомендую это делать. Если возникнет ситуация как в примере выше, то лучше использовать возможности systemd-networkd или ip.

Читайте также:  Linux packard bell easynote

Для удаления портов используйте следующую команду:

sudo ovs-vsctl del-port bridgeswitch test-interface
sudo ovs-vsctl del-br bridgeswitch

Добавление VLAN

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

Создадим новый виртуальный коммутатор:

sudo ovs-vsctl add-br vlanswitch

Добавляем реальную сетевую карту к виртуальному коммутатору:

sudo ovs-vsctl add-port vlanswitch eth0

Делаем порт коммутатора транковым и описываем теги, которые будут проходить через коммутатор:

sudo ovs-vsctl set port eth0 trunks=10,20,300,400,1000

Добавляем виртуальный сетевой интерфейс и присваиваем ему тег:

sudo ovs-vsctl add-port vlanswitch testvlan20 tag=20 -- set interface testvlan20 type=internal

Теперь можно посмотреть конфигурацию:

ovs-vsctl show 8e5433c6-c82d-46b0-8378-543c40e4e9c0 Bridge vlanswitch Port vlanswitch Interface vlanswitch type: internal Port "testvlan20" tag: 20 Interface "testvlan20" type: internal Port "enp5s0" trunks: [10, 20, 300, 400, 1000] Interface "enp5s0" ovs_version: "2.9.0"

Включение Netflow на виртуальном коммутаторе OpenVSwitch

Если возникает необходимость вести учет сетевого трафика, проходящего через интерфейсы, то заставить OpenVSwitch отправлять пакеты Netflow на адрес коллектора можно одной командой:

ovs-vsctl -- set Bridge vlanswitch netflow=@nf / -- --id=@nf create NetFlow targets="192.168.1.1:5566" / active-timeout=30

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

Чтобы обновить или изменить параметры, указанные в предыдущей команде, выполняем:

ovs-vsctl set Netflow vlanswitch active_timeout=60

Чтобы прекратить отправлять данные на Netflow коллектор, достаточно очистить настройки Netflow для виртуального коммутатора:

ovs-vsctl clear Bridge vlanswitch netflow

Кстати, о том, как поднять Netflow коллектор используя стек ELK есть материал вот в этой статье.

Заключение

Здесь описан необходимый минимум для начала работы с OpenVSwitch. О непосредственной же интеграции OpenVSwitch и KVM подробно будет написано в следующей статье.

If you liked my post, feel free to subscribe to my rss feeds

Читайте также:  Linux mint узнать характеристики компьютера

This entry was written by admin and posted on 16th Май 2019 at 1:35 пп and filed under Uncategorised. Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment(Latest is displayed first) or leave a trackback: Trackback URL.

  • Categories
    • Active Directory (58)
    • Bios (6)
    • Chronium (1)
    • CISCO (23)
    • Communigate (3)
    • DHCP (9)
    • DNS (21)
    • DPM (11)
    • Exchange 2010 (103)
    • Exchange 2013 (3)
    • FreeBSD (37)
    • Hyper-V (3)
    • IPSec (6)
    • IPv6 (7)
    • LDAP (12)
    • Linux (168)
      • Centos (13)
      • Ubuntu (31)
      • Windows to Linux (9)
      • Администрирование (41)
      • Экзамен LPI (33)

      © 2007 Для системного администратора. There are currently 134 posts extending over categories with loads upto 10 comments.

      Источник

      Configure linux machine as bridge/switch and end device

      At my home, I have two desktop PCs in two rooms. The router / DSL modem is in one of these rooms. Now I want to configure a home server (having 2 LAN ports, running 24/7) in the corridor between the two rooms, using only one LAN cable at each door. This gives me the following physical configuration:

       (door) (door) .----/-/----. .-----/-/----------._ FritzBox | | | .----´´ DSL Router PC1 Server | PC2 

      As just said, the server has 2 network interfaces and is running Ubuntu. What I need now is a network configuration which enables both the server and PC1 to connect to the router. I think the server needs to serve as a bridge or switch. Currently, all computers are configured having static IP addresses. If I’m understanding it correctly, a bridge / switch doesn’t have its own IP address, but as the server needs to be configured as an own end device, it needs to have one. My first question is, do I have to configure both interfaces separately, giving both the same static IP address? My next question is, how do I bridge the two physical networks into one? I have basic understanding (but am always confused again and again) of bridges and switches, but I don’t know how to configure it in software. I only know that it’s possible to do so 🙂 The third question is: Is it possible to configure this in a way that network packets from/to PC1 to/from the router only go through hardware or only consume low CPU in the server? Can you help me? Thanks in advance!

      Источник

      Программные мосты в Linux

      linux

      В терминологии Ethernet «коммутатор» (switch) и «мост» (bridge) — это синонимы. Термин switch придумали, чтобы отличать многопортовые коммутаторы от первых двухпортовых мостов. Программные реализации коммутатора Ethernet по традиции называют мостами, независимо от числа портов.

      Вот и в Linux программный коммутатор называется мостом. Производительность таких коммутаторов невысока — ни о каких десяти гигабитах речь не идет. Кроме того, встроенная функциональность ядра Linux для этой цели достаточно ограниченна по сравнению с новыми проектами вроде Open vSwitch. Тем не менее в ряде случаев она может оказаться полезной.

      Программные мосты Linux

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

      Осмысленно применять эту фичу стоит в других направлениях. Во-первых, сетевой интерфейс не обязан быть физическим — это может быть и туннель. Некоторые приложения требуют общего широковещательного сегмента. Если тебе нужно обеспечить работу таких приложений в удаленной сети через интернет, ты можешь соединить свои сети туннелем, который способен инкапсулировать кадры Ethernet. О настройке таких туннелей в Linux я уже писал в статье «Неизвестные туннели Linux»: это GRE, L2TPv3 и VXLAN (а также OpenVPN в режиме TAP и WireGuard).

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

      Но для начала вспомним, как делаются мосты.

      Возводим программные мосты Linux

      Вернее, не вспомним, а научимся это делать с помощью iproute2. Классическая утилита brctl уже давно объявлена устаревшей, вместе с ifconfig и прочими командами из net-tools, и дистрибутивы Linux начинают их удалять, так что лучше сразу действовать по-новому.

      Для примера объединим интерфейсы eth0 и eth1 в мост br0.

      Источник

Оцените статью
Adblock
detector