Линукс интерфейс: Интерфейсы | Администрирование Linux

Интерфейсы | Администрирование Linux

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Сетевое взаимодействие в Linux работает через понятие «сетевой интерфейс». Сетевой интерфейс – это программный способ обращаться к сетевой карте в том случае, когда он связан с физическим устройством. Но сетевой интерфейс может быть «виртуальным», то есть он не связан с железом, а существует лишь на уровне самой операционной системы. Нужно это для взаимодействия программ, которые изначально сетевые, но запускаются на одном компьютере. Посмотреть сетевые интерфейсы внутри операционной системы можно командой ifconfig:

ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:31:65:b5
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::3db9:eaaa:e0ae:6e09/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1089467 errors:0 dropped:0 overruns:0 frame:0
          TX packets:508121 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:903808796 (903. 8 MB)  TX bytes:31099448 (31.0 MB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:9643 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9643 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:719527 (719.5 KB)  TX bytes:719527 (719.5 KB)

eth0 – интерфейс, связанный с сетевой картой, работающей через Ethernet (по кабелю). В выводе выше можно увидеть множество полезной информации, например, ip-адрес, привязанный к этому интерфейсу. Если бы сетевых карт было несколько, то кроме eth0, мы бы увидели eth2 и так далее.

lo (loopback device) – виртуальный интерфейс, присутствующий по умолчанию в любом Linux. Он используется для отладки сетевых программ и запуска серверных приложений на локальной машине. С этим интерфейсом всегда связан адрес 127. 0.0.1. У него есть dns-имя – localhost. Посмотреть привязку можно в файле /etc/hosts.

Понимание принципов работы интерфейсов (и в целом tcp/ip) крайне важно для запуска любых сетевых сервисов, будь то веб-сервер или база данных. От этого зависит как доступность сервиса, так и безопасность всего процесса. Мы уже знаем, что запуск сервиса – это запуск процесса операционной системы, который внутри себя должен начать слушать порт на определенном ip-адресе, то есть интерфейсе. По умолчанию большинство сервисов стартует на localhost либо в документации предлагают стартовать на нём.

# Встроенный сервер на PHP. Для старта нужно указать host:port
php -S localhost:8000
[Tue Jul  6 15:39:42 2021] PHP 8.0.7 Development Server (http://localhost:8000) started

На это есть 2 причины. По умолчанию это безопасно. Сервис, запущенный на одном интерфейсе, недоступен с другого. То есть при таком запуске сервис занимает 8000 порт на 127.0.0.1 адресе, но 8000 порт на интерфейсе eth0 остается свободным, а значит снаружи до него не достучаться. Как правило, сервисы не выставляют напрямую во внешний мир, часто для этого служат специальные прокси, которые прокидывают запросы внутрь и обеспечивают дополнительные функции связанные с производительностью или безопасностью.

С другой стороны часть сервисов всё же нужно выставлять наружу. И здесь появляется сложность: нам нужно знать точный ip-адрес интерфейса, на который мы хотим завязаться. Подобное не всегда возможно, адреса имеют свойство меняться. Более того, если сервис запущен на разных машинах, то адреса вообще не совпадут. Как выкручиваться из этой ситуации? Через специальный псевдо-адрес 0.0.0.0. В Linux это не конкретный адрес, а скорее указатель, который говорит о необходимости связать запуск сервиса со всеми доступными интерфейсами в системе. То есть привязавшись к 0.0.0.0, сервис автоматически станет доступным через все сетевые интерфейсы системы.

# Теперь запросы можно выполнять как изнутри компьютера так и снаружи

Обзор графических оболочек Linux / Хабр


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

Если вы уже используете Linux или только начинаете знакомство с ним, вам наверняка не захочется сидеть и перебирать все существующие оболочки, чтобы понять, подойдёт одна из них именно вам или нет. Потому мы сделали краткий обзор самых популярных рабочих сред вместе с ответами на часто задаваемые вопросы.

Здесь и далее будет субъективное мнение автора. Как по поводу выбора расширений, так и по поводу внешнего вида рабочих сред.

Краткое содержание:

  • GNOME
  • GNOME Flashback
  • KDE Plasma
  • XFCE
  • LXDE
  • Cinnamon
  • Pantheon
  • MATE
  • Budgie
  • Qtile
  • Enlightenment
  • i3wm
  • Частые вопросы


GNOME и KDE положили историческое начало для обширного мира графических сред ОС Linux. KDE стала одной из первых расширенных оболочек рабочего стола и впервые вышла в свет 12 июля 1998 года. Следом за ней была разработана и альтернатива — GNOME, дата выхода 3 марта 1999 года.

Конечно, сразу стоит отметить, что эти оболочки совершенно разные по своей изначально заложенной сути. GNOME — символ аскетизма, KDE же — более простая, однако очень красивая и функциональная. В последнее время им ещё и наступает на пятки — XFCE. Но давайте обо всех по порядку.

1. GNOME

GNOME (GNU Network Object Model Environment) — одна из популярных сред рабочего стола в мире Linux. Она постоянно поддерживается и довольно легко интегрируется с аппаратным и программным обеспечением. Стоит отметить тот факт, что Canonical даже приняла GNOME для ОС Ubuntu в качестве среды рабочего стола по умолчанию. Однако надо помнить, что GNOME — не самый простой инструмент. Дизайн довольно сильно отличается от привычного виндового интерфейса, и для начального взаимодействия и простоты использования, вам придётся поколдовать с существующими расширениями. Например, если вам необходима панель задач, как в винде, для приложений или переключения окон, то вы можете попробовать для себя Dash to Panel. Нет смысла дублировать тут туториал по установке, лучше воспользоваться инструкцией разработчика. Но помните, что с большим набором расширений оболочка начинает заметно подъедать системные ресурсы слабомощных машинок.

Как нам говорит сайт www.gnome.org:

Ubuntu 20.04 LTS уже включает в себя GNOME 3.36 с небольшими изменениями, а Ubuntu 21.10 включает и GNOME 40, также с некоторыми изменениями. Если вы устанавливаете gnome-session, то можете запустить чистый GNOME с экрана входа в систему.

2. GNOME Flashback (Ubuntu Classic/панель GNOME)

GNOME Flashback — это базовая и классическая среда рабочего стола, которая даёт возможность ностальгировать о чистом виде системы Ubuntu. Быстрая и лёгкая, основана на ранней версии Ubuntu. Для меня это был самый первый графический интерфейс Ubuntu, который я знаю ещё с её девичества, Ubuntu 8. 04. Поэтому, когда я увидел этот интерфейс, то пустил скупую слезу ностальгии.

Краткая инструкция по установке:

Команда установки для последней версии Ubuntu:

sudo apt-get install gnome-session-flashback


Для Ubuntu 12.04-13.10:

sudo apt-get install gnome-panel


или

sudo apt-get install gnome-session-fallback

3. KDE Plasma


После GNOME — оболочка KDE (K Desktop Environment) Plasma является наиболее используемой и настраиваемой средой рабочего стола для ОС Linux. Эта оболочка предлагает о-о-очень широкий спектр опций. Например, если вы захотите сделать что-то windows- или macos-подобное, то при должных усилиях — у вас всё получится :).

Если вам нравится возиться в настройках системы и вы готовы приложить некоторые усилия, то Plasma это то, что вам нужно. Её можно назвать «швейцарским ножом» в мире рабочих столов Linux.

В отличие от Ubuntu Unity 3D, для бесперебойной работы требуется аппаратное 3d ускорение.

Краткая инструкция по установке:

Перед тем как переходить непосредственно к установке, необходимо выполнить обновление списков пакетов и системы, чтобы установить самую новую версию KDE и избежать возможных ошибок. Для обновления выполните:

sudo apt full-upgrade


Этот процесс может пойти быстро, а может, и долго, в зависимости от того, как давно вы обновляли свою систему, и от скорости интернета. После завершения обновления надо установить утилиту tasksel:

sudo apt install tasksel


Теперь можно установить KDE:

sudo tasksel install kubuntu-desktop
sudo tasksel install kubuntu-full


Во время установки системе нужно будет настроить менеджер входа в систему. Нажмите ОК, а в следующем окне выберите Gdm, чтобы использовать стандартный менеджер входа Ubuntu.

Пакетный менеджер может выдать ещё несколько окон с предупреждениями, в них можно нажимать Ок. Остаётся только перезагрузить компьютер и наслаждаться только что установленной KDE Plasma. После перезагрузки вы сможете выбрать оболочку входа. Для этого нажмите на шестерёнку внизу экрана и вуаля, наслаждайтесь.

4. XFCE


Если у вас есть старая или не очень мощная машина, например, старый нетбук, то XFCE станет отличным выбором. Он довольно лёгкий и обеспечивает баланс между лёгкими рабочими столами, такими как LXDE или LXQt, и полноценными, такими как KDE и GNOME, про которые написано выше. Оболочка малотребовательна к ресурсам компьютера и при этом на борту имеет много вариантов настройки. Всё это делает XFCE одной из самых чистых и простых в использовании, особенно когда требуется нересурсоёмкая среда без аппаратного ускорения.

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

Краткая инструкция по установке:

Для установки введите:

sudo apt-get install xubuntu-desktop


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

sudo apt-get install xfce4-goodies


Чтобы установить Xfce 4.12 на Ubuntu 14.04 и 15.04:

sudo add-apt-repository ppa:xubuntu-dev/xfce-4.12
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install xfce4

5. LXDE (облегчённая среда рабочего стола X11)


Раз я уже упомянул вариант оболочки для установки на маломощные машинки, то обязательно стоит сказать и об LXDE. Это невероятно лёгкая среда рабочего стола Linux, которая ориентирована на высокую производительность, при этом требует ещё меньше ресурсов, чем XFCE. Для её работы не требуется никакого аппаратного ускорения. Очень быстрая, гибко настраиваемая и не занимает много места в оперативной памяти.

Я использовал эту оболочку на старом железе, и всё прекрасно работало без каких-либо тормозов. Исключительно порадовала простота и лёгкость настройки.

Краткая инструкция по установке:

sudo apt-get update
sudo apt-get install lxde

6. Cinnamon

Cinnamon — это, конечно, одна из самых популярных сред рабочего стола. По умолчанию поставляется только в Linux Mint.

Эта среда рабочего стола является ответвлением оболочки GNOME, так что тут стоит вспомнить требование про аппаратное 3D-ускорение. Хотя она и может работать с программным рендерингом, но будет сильно тормозить. Cinnamon хорошо подойдёт для тех, кто только что перешёл с ОС Windows, поскольку эта оболочка наиболее близка к ней по внешнему виду. Среда бережно относится к пожиранию ресурсов, что делает её идеальным кандидатом для чуть более устаревшей машины, которая уже не тянет винду.

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

Краткая инструкция по установке:

Выполните следующую команду, чтобы установить последнюю версию Cinnamon Desktop в Ubuntu.

sudo add-apt-repository ppa:embrosyn/cinnamon
sudo apt-get update
sudo apt-get install cinnamon

7. Pantheon

Pantheon — это лёгкая и модульная среда рабочего стола, которая используется в elementary OS в качестве рабочего стола по умолчанию. Графический интерфейс этой оболочки идентичен Apple Mac OS. Его можно установить на любую машину с Ubuntu. Работа с этой средой почти такая же, как в macOS. В ней есть даже больше жестов и имеются функции сенсорной панели.

Pantheon также является одним из самых доступных интерфейсов, которые подходят для дисплеев со сверхвысоким разрешением (HiDPI/Retina), поэтому её стоит рассматривать в качестве рабочего решения для замены macOS. Эта среда автоматически определит разрешение вашего экрана и сделает изображение подходящим для вашего монитора.

Краткая инструкция по установке:

Чтобы установить Pantheon на последнюю версию Ubuntu.

sudo add-apt-repository ppa:elementary-os/daily
sudo add-apt-repository ppa:elementary-os/os-patches
sudo add-apt-repository ppa:elementary-os/testing
sudo add-apt-repository ppa:mpstark/elementary-tweaks-daily
sudo apt update
sudo apt dist-upgrade
sudo apt install elementary-theme elementary-icon-theme elementary-default-settings elementary-desktop


Ubuntu — 12.04 и выше

sudo add-apt-repository ppa:elementary-os/daily
sudo apt-get update
sudo apt-get install elementary-desktop

8.

MATE

Ubuntu MATE — это ещё одна версия GNOME 2. Хорошо помню тот момент, когда вышел GNOME 3, и это вызвало много негодования у меня, а также у других пользователей. И мы начали искать возможные решения, которые были бы такими же удобными и доступными, как старый добрый GNOME 2.

На тот момент это была отличная альтернатива привычному «Гному», и могу сказать, что она оставила у меня хорошие впечатления скоростью работы и удобством использования. Эту оболочку оценят те, кто привык к классическому интерфейсу старых систем.

Краткая инструкция по установке:

Установите рабочий стол MATE на последнюю версию Ubuntu. Выполните следующие команды:

sudo add-apt-repository ppa:ubuntu-mate-dev/xenial-mate
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mate-dock-applet

Установите рабочий стол MATE на Ubuntu 15. 10. Выполните следующие команды:

sudo add-apt-repository ppa:ubuntu-mate-dev/wily-mate
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mate-dock-applet

9. Budgie

Budgie вполне подойдёт для тех, кому нужен такой же настраиваемый рабочий стол, как в KDE Plasma, но без мороки. Budgie — это обычная рабочая среда, созданная для ОС Solus. Она предоставляет множество настроек, таких как виджеты рабочего стола, красивые темы и значки, режим тёмной темы и расширенные функции панели.

Краткая инструкция по установке:

Чтобы установить эту среду рабочего стола, введите следующие команды в терминале:

sudo add-apt-repository ppa:budgie-remix/ppa
sudo apt-get update
sudo apt-get install budgie-desktop

10. Qtile

Qtile — это тайловый оконный менеджер, который написан только на языке Python. Qtile — это очень простая, маленькая и легко расширяемая среда. Она позволяет легко писать свои собственные раскладки, виджеты, встраиваемые команды. По сути, это оконный менеджер, который написан программистами и исключительно для программистов.

Краткая инструкция по установке:

sudo apt-add-repository ppa:tycho-s/ppa
sudo apt-get update
sudo apt-get install qtile

11. Оболочка рабочего стола Enlightenment

Enlightenment Desktop Shell предоставляет потрясающий и эффективный оконный менеджер, основанный на библиотеках Enlightenment Foundation. Он поставляется с полным набором компонентов рабочего стола, таких как файловый менеджер, значки рабочего стола, виджеты и т. д. Enlightenment Desktop Shell охватывает все современные устройства, от небольших мобильных устройств и смартфонов до многоядерных настольных компьютеров и т.д. Вы можете легко установить Enlightenment E22 Desktop в Ubuntu, Linux Mint или любых других дистрибутивах на основе Ubuntu.

Краткая инструкция по установке:

sudo add-apt-repository ppa:niko2040/e19
sudo apt-get update
sudo apt-get install enlightenment terminology

12. i3wm


Напоследок хочется рассказать про i3wm — фреймовый оконный менеджер. Компактный, лёгкий и простой в использовании. Его нельзя назвать полноценной средой рабочего стола. Скорее, он необходим для управления окнами экрана и предназначен в первую очередь для настоящих гиков Linux. Простому пользователю он вряд ли может быть интересен.

Краткая инструкция по установке:

sudo apt update
sudo apt install i3

Несколько часто задаваемых вопросов:

Какая, на ваш взгляд, самая лучшая среда для начинающих линукс-пользователей?

Этот вопрос я, пожалуй, слышу чаще всего. Тут всё достаточно просто. Если вы переходите с Windows, смело выбирайте Cinnamon. Для пользователей, которые решили пересесть с MacOS — рекомендую Pantheon. Остальное уже дело вкуса и желания ковыряться в настройках.


Можно ли установить несколько сред рабочих столов?

Да, но одновременно использовать можно только что-то одно. Пожалуйста, помните, что некоторые среды могут не совсем корректно работать на вашем компьютере или даже банально глючить. Например, при установке Budgie поверх Cinnamon в Linux Mint, в связи с тем, что они используют одни и те же файлы для визуальных элементов.

Если вы не очень разбираетесь в установке или не уверены, что всё пройдет хорошо, то лучше сделайте резервную копию вашей системы с помощью, например, rsync.


Надо ли выбирать дистрибутив в зависимости от среды, в которой он поставляется?

Конечно, если вы не хотите мороки, то стоит сразу установить систему, на которой уже имеется приглянувшийся рабочий стол. Например, установка KDE на ванильную Ubuntu будет менее приятной, чем установка Kubuntu (Ubuntu с предварительно интегрированной Plasma). С другой стороны, это совсем не означает, что вы должны ограничиваться конкретным дистрибутивом.


Чем KDE Plasma отличается от Cinnamon?

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

Разработчики KDE отделили свой рабочий стол от GNOME и с тех пор работают над обеспечением унифицированного опыта на одной платформе.

Cinnamon же вместо того, чтобы полностью отказаться от пакета GNOME, адаптировался к использованию некоторых из них (Gedit, терминал GNOME, системный монитор GNOME и т. д.), обеспечивая при этом совершенно другой визуальный интерфейс. Из-за этого Cinnamon может быть не совсем стилистически единым, так как некоторые из используемых им приложений GNOME не полностью соответствуют общей теме визуализации.


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


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Знакомство с интерфейсами Linux для виртуальных сетей

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

В этом сообщении рассматриваются следующие часто используемые интерфейсы и некоторые интерфейсы, которые легко спутать друг с другом:

  • Мост
  • Связанный интерфейс
  • Командное устройство
  • VLAN (виртуальная локальная сеть)
  • VXLAN (виртуальная расширяемая локальная сеть)
  • МАКВЛАН
  • ИПВЛАН
  • MACVTAP/IPVTAP
  • MACsec (безопасность управления доступом к среде)
  • VETH (виртуальный Ethernet)
  • VCAN (виртуальная CAN)
  • VXCAN (виртуальный туннель CAN)
  • IPOIB (IP-поверх-InfiniBand)
  • NLMON (монитор NetLink)
  • Фиктивный интерфейс
  • IFB (промежуточный функциональный блок)
  • нетдевсим

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

Мост

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

Используйте мост, если вы хотите установить каналы связи между виртуальными машинами, контейнерами и вашими хостами.

Вот как создать мост:

# ip ссылка добавить мост типа br0
# ip link set eth0 master br0
# ip link set tap1 master br0
# ip link set tap2 master br0
# ip link set veth2 master br0
 

Это создает мостовое устройство с именем br0 и устанавливает два устройства TAP ( tap1 , tap2 ), устройство VETH ( veth2 ) и физическое устройство ( eth0 ) в качестве подчиненных, как показано на рисунке. на схеме выше.

Связанный интерфейс

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

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

Вот как создать связанный интерфейс:

ip link add bond1 type bond miimon 100 mode active-backup
ip link set eth0 master bond1
ip link set eth2 master bond1
 

Это создает связанный интерфейс с именем bond1 с режимом активного резервного копирования. Информацию о других режимах см. в документации ядра.

Групповое устройство

Как и связанный интерфейс, целью группового устройства является предоставление механизма для группировки нескольких сетевых адаптеров (портов) в один логический (teamdev) на уровне L2.

Главное, что нужно понимать, это то, что групповое устройство не пытается воспроизвести или имитировать связанный интерфейс. Что он делает, так это решает ту же проблему, используя другой подход, используя, например, путь TX/RX без блокировки (RCU) и модульную конструкцию.

Но есть и некоторые функциональные различия между связанным интерфейсом и командой. Например, команда поддерживает балансировку нагрузки LACP, мониторинг линков NS/NA (IPV6), интерфейс D-Bus и т. д., которые отсутствуют в бондинге. Дополнительные сведения о различиях между сплоченностью и командой см. в разделе Функции сплочения и команды.

Используйте команду, если вы хотите использовать некоторые функции, которые не предоставляет объединение.

Вот как создать команду:

# teamd -o -n -U -d -t team0 -c '{"бегун": {"name": "activebackup"},"link_watch": {"name": "ethtool"}}'
# ip link set eth0 down
# ip link set eth2 down
# teamdctl team0 порт добавить eth0
# teamdctl team0 порт добавить eth2
 

Это создает командный интерфейс с именем team0 с режимом active-backup и добавляет eth0  и  eth2 как субинтерфейсы team0 .

Недавно в Linux был добавлен новый драйвер net_failover. Это еще одно ведущее сетевое устройство аварийного переключения для виртуализации, которое управляет основным (сквозное/VF [Virtual Function] устройство) подчиненным сетевым устройством и резервным (исходный паравиртуальный интерфейс) подчиненным сетевым устройством.

VLAN

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

Заголовок VLAN выглядит так:

Используйте VLAN, если вы хотите разделить подсеть в виртуальных машинах, пространствах имен или хостах.

Вот как создать VLAN:

# ip link add link eth0 name eth0.2 type vlan id 2
# ip link add link eth0 name eth0.3 type vlan id 3
 

Это добавляет VLAN 2 с именем eth0.2 и VLAN 3 с именем eth0. 3 . Топология выглядит следующим образом:

Примечание : При настройке VLAN необходимо убедиться, что коммутатор, подключенный к хосту, способен обрабатывать теги VLAN, например, установив порт коммутатора в режим транка. . 924 (16 777 216) виртуальных локальных сетей, что в 4 096 раз превышает емкость VLAN.

VXLAN инкапсулирует кадры уровня 2 с заголовком VXLAN в пакет UDP-IP, который выглядит следующим образом:

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

Вот как использовать VXLAN:

# ip link add vx0 type vxlan id 100 local 1.1.1.1 remote 2.2.2.2 dev eth0 dstport 4789
 

Для справки вы можете прочитать документацию по ядру VXLAN или это введение в VXLAN.

MACVLAN

С помощью VLAN вы можете создавать несколько интерфейсов поверх одного и фильтровать пакеты на основе тега VLAN. С помощью MACVLAN вы можете создать несколько интерфейсов с разными адресами уровня 2 (то есть Ethernet MAC) поверх одного.

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

Теперь с помощью MACVLAN вы можете напрямую привязать физический интерфейс, связанный с MACVLAN, к пространствам имен без использования моста.

Существует пять типов MACVLAN:

1. Частный: не разрешает связь между экземплярами MACVLAN на одном и том же физическом интерфейсе, даже если внешний коммутатор поддерживает режим шпильки.

2. VEPA: данные от одного экземпляра MACVLAN к другому на том же физическом интерфейсе передаются через физический интерфейс. Либо подключенный коммутатор должен поддерживать режим шпильки, либо должен быть маршрутизатор TCP/IP, пересылающий пакеты для обеспечения связи.

3. Мост: все конечные точки напрямую связаны друг с другом с помощью простого моста через физический интерфейс.

4. Passthru: позволяет подключить одну виртуальную машину напрямую к физическому интерфейсу.

5. Источник: режим источника используется для фильтрации трафика на основе списка разрешенных исходных MAC-адресов для создания ассоциаций VLAN на основе MAC-адресов. Пожалуйста, смотрите сообщение коммита.

Тип выбирается в соответствии с различными потребностями. Режим моста является наиболее часто используемым.

Используйте MACVLAN, если вы хотите напрямую подключиться к физической сети из контейнеров.

Вот как настроить MACVLAN:

# ip link add macvlan1 link eth0 type macvlan mode bridge
# ip link add macvlan2 link eth0 type macvlan mode bridge
# ip netns добавить net1
# ip netns добавить net2
# ip link set macvlan1 netns net1
# ip link set macvlan2 netns net2
 

Это создает два новых устройства MACVLAN в режиме моста и назначает эти два устройства двум разным пространствам имен.

IPVLAN

IPVLAN похож на MACVLAN с той разницей, что конечные точки имеют одинаковый MAC-адрес.

IPVLAN поддерживает режимы L2 и L3. Режим IPVLAN L2 действует как MACVLAN в режиме моста. Родительский интерфейс выглядит как мост или коммутатор.

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

Что касается того, когда использовать IPVLAN, в документации ядра IPVLAN говорится, что MACVLAN и IPVLAN «очень похожи во многих отношениях, и конкретный вариант использования может очень хорошо определить, какое устройство выбрать. если одна из следующих ситуаций определяет ваше использование случае, тогда вы можете использовать ipvlan —
(a) Хост Linux, подключенный к внешнему коммутатору/маршрутизатору, имеет настроенную политику, разрешающую только один Mac на порт.
(b) Ни одно из виртуальных устройств, созданных на главном устройстве, не превышает емкость Mac, что переводит сетевую карту в неразборчивый режим, а снижение производительности вызывает беспокойство.
(c) Если ведомое устройство должно быть помещено во враждебное/ненадежное сетевое пространство имен, где L2 на ведомом устройстве может быть изменен/неправомерно использован.»

Вот как настроить экземпляр IPVLAN:

# ip netns добавить ns0
# ip link add name ipvl0 link eth0 type ipvlan mode l2
# ip link set dev ipvl0 netns ns0
 

Это создает устройство IPVLAN с именем ipvl0 с режимом L2, назначенным пространству имен ns0 .

MACVTAP/IPVTAP

MACVTAP/IPVTAP — это новый драйвер устройства, предназначенный для упрощения виртуализированных мостовых сетей. Когда экземпляр MACVTAP/IPVTAP создается поверх физического интерфейса, ядро ​​также создает символьное устройство/dev/tapX, которое будет использоваться точно так же, как устройство TUN/TAP, которое может напрямую использоваться KVM/QEMU.

С помощью MACVTAP/IPVTAP вы можете заменить комбинацию драйверов TUN/TAP и моста одним модулем:

Обычно MACVLAN/IPVLAN используется для того, чтобы и гость, и хост отображались непосредственно на коммутаторе, к которому подключен хост. Разница между MACVTAP и IPVTAP такая же, как и между MACVLAN/IPVLAN.

Вот как создать экземпляр MACVTAP:

# ip link добавить ссылку eth0 name macvtap0 type macvtap
 

MACsec

MACsec (Media Access Control Security) — это стандарт IEEE для безопасности проводных локальных сетей Ethernet. Подобно IPsec, как спецификация уровня 2, MACsec может защищать не только IP-трафик, но и ARP, обнаружение соседей и DHCP. Заголовки MACsec выглядят следующим образом:

Основным вариантом использования MACsec является защита всех сообщений в стандартной локальной сети, включая сообщения ARP, NS и DHCP.

Вот как настроить конфигурацию MACsec:

# ip link add macsec0 link eth2 type macsec
 

Примечание : добавляется только устройство MACsec с именем macsec0 на интерфейсе eth2 . Более подробные сведения о конфигурациях см. в разделе «Пример конфигурации» в этом вводном руководстве по MACsec, написанном Сабриной Дуброка.

VETH

Устройство VETH (виртуальный Ethernet) представляет собой локальный туннель Ethernet. Устройства создаются парами, как показано на схеме ниже.

Пакеты, передаваемые на одном устройстве в паре, немедленно принимаются на другом устройстве. Когда какое-либо устройство не работает, состояние соединения пары не работает.

Используйте конфигурацию VETH, когда пространствам имен необходимо взаимодействовать с пространством имен основного хоста или между собой.

Вот как настроить конфигурацию VETH:

# ip netns добавить net1
# ip netns добавить net2
# ip link add veth2 netns net1 type veth peer name veth3 netns net2
 

Это создает два пространства имен, net1 и net2 , и пару устройств VETH, и назначает veth2 пространству имен net1 и veth3 пространству имен 3 net2. Эти два пространства имен связаны с этой парой VETH. Назначьте пару IP-адресов, и вы сможете пинговать и обмениваться данными между двумя пространствами имен.

VCAN

Подобно сетевым петлевым устройствам, драйвер VCAN (виртуальный CAN) предлагает виртуальный локальный интерфейс CAN (локальная сеть контроллеров), поэтому пользователи могут отправлять/получать сообщения CAN через интерфейс VCAN. В настоящее время CAN в основном используется в автомобильной сфере.

Дополнительные сведения о протоколе CAN см. в документации ядра CAN.

Используйте VCAN, если вы хотите протестировать реализацию протокола CAN на локальном хосте.

Вот как создать VCAN:

# ip link add dev vcan1 type vcan
 

VXCAN

Подобно драйверу VETH, VXCAN (виртуальный туннель CAN) реализует локальный туннель трафика CAN между двумя сетевыми устройствами VCAN. Когда вы создаете экземпляр VXCAN, два устройства VXCAN создаются как пара. Когда один конец получает пакет, пакет появляется на паре устройств и наоборот. VXCAN можно использовать для обмена данными между пространствами имен.

Используйте конфигурацию VXCAN, если вы хотите отправить сообщение CAN через пространства имен.

Вот как настроить экземпляр VXCAN:

# ip netns добавить net1
# ip netns добавить net2
# ip link add vxcan1 netns net1 type vxcan peer name vxcan2 netns net2
 

Примечание : VXCAN еще не поддерживается в Red Hat Enterprise Linux.

IPOIB

Устройство IPOIB поддерживает протокол IP-over-InfiniBand. Это транспортирует IP-пакеты через InfiniBand (IB), поэтому вы можете использовать свое устройство IB в качестве быстрой сетевой карты.

Драйвер IPoIB поддерживает два режима работы: дейтаграммный и подключенный. В режиме дейтаграммы используется транспорт IB UD (ненадежная дейтаграмма). В подключенном режиме используется транспорт IB RC (Reliable Connected). Подключенный режим использует преимущества подключенного характера транспорта IB и позволяет использовать MTU до максимального размера IP-пакета 64 КБ.

Дополнительные сведения см. в документации по ядру IPOIB.

Используйте устройство IPOIB, если у вас есть устройство IB и вы хотите общаться с удаленным хостом через IP.

Вот как создать устройство IPOIB:

# ip link add ib0 name ipoib0 type ipoib pkey IB_PKEY режим подключен
 

NLMON

NLMON — это устройство мониторинга Netlink.

Используйте устройство NLMON, если вы хотите отслеживать системные сообщения Netlink.

Вот как создать устройство NLMON:

# ip link add nlmon0 type nlmon
# ip link set nlmon0 up
# tcpdump -i nlmon0 -w nlmsg.pcap
 

Это создает устройство NLMON с именем nlmon0 и настраивает его. Используйте анализатор пакетов (например, tcpdump ) для захвата сообщений Netlink. Последние версии Wireshark поддерживают декодирование сообщений Netlink.

Фиктивный интерфейс

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

Используйте фиктивный интерфейс, чтобы неактивный адрес SLIP (Serial Line Internet Protocol) выглядел как настоящий адрес для локальных программ. В настоящее время фиктивный интерфейс в основном используется для тестирования и отладки.

Вот как создать фиктивный интерфейс:

# ip link add dummy1 type dummy
# ip addr add 1.1.1.1/24 dev dummy1
# ip link set dummy1 up
 

IFB

Драйвер IFB (промежуточный функциональный блок) предоставляет устройство, которое позволяет концентрировать трафик из нескольких источников и формировать входящий трафик, а не отбрасывать его.

Используйте интерфейс IFB, если вы хотите ставить в очередь и формировать входящий трафик.

Вот как создать интерфейс IFB:

# ip ссылка добавить ifb0 тип ifb
# ip link set ifb0 up
# tc qdisc добавить dev ifb0 root sfq
# tc qdisc add dev дескриптор eth0 ffff: ingress
# tc filter add dev eth0 parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0
 

Это создает устройство IFB с именем ifb0 и заменяет планировщик корневого qdisc на SFQ (Stochastic Fairness Queueing), который является бесклассовым планировщиком очередей. Затем он добавляет входящий планировщик qdisc на eth0 и перенаправляет весь входящий трафик на ifb0 .

Дополнительные примеры использования qdisc IFB см. на этой вики Linux Foundation на IFB.

Дополнительные ресурсы

  • Статьи о виртуальных сетях в блоге разработчиков Red Hat
  • Динамическое управление IP-адресами в открытой виртуальной сети (OVN)
  • Open vSwitch без полномочий root в Red Hat Enterprise Linux
  • Открытие статей vSwitch в блоге разработчиков Red Hat

интерфейс netdevsim

netdevsim — это смоделированное сетевое устройство, которое используется для тестирования различных сетевых API. В настоящее время основное внимание уделяется тестированию аппаратной разгрузки
, tc/XDP BPF и SR-IOV.

Устройство netdevsim можно создать следующим образом

# ip link add dev sim0 type netdevsim
# ip link set dev sim0 up
 

Чтобы включить разгрузку tc:

# ethtool -K sim0 hw-tc-offload on
 

Для загрузки программ XDP BPF или tc BPF:

# ip link set dev sim0 xdpoffload obj prog. o
 

Чтобы добавить VF для тестирования SR-IOV:

# echo 3 > /sys/class/net/sim0/device/sriov_numvfs
# ip link set sim0 vf 0 mac
 

Чтобы изменить номера vf, сначала нужно их полностью отключить:

# echo 0 > /sys/class/net/sim0/device/sriov_numvfs
# echo 5 > /sys/class/net/sim0/device/sriov_numvfs
 

Примечание : netdevsim не компилируется в RHEL по умолчанию

Последнее обновление:
12 октября 2022 г.

Конфигурация интерфейса для IP — Руководство сетевого администратора Linux, второе издание [книга]

После настройки вашего оборудования, как описано в Главе 4, вы должны сделать эти устройства известными для
ядро сетевого программного обеспечения. Пара команд используется для настройки
сетевые интерфейсы и инициализировать таблицу маршрутизации. Эти задачи
обычно выполняются из сценария инициализации сети каждый раз
вы загружаете систему. Основные инструменты для этого процесса называются
ifconfig (где «если» означает
интерфейс) и маршрут .

ifconfig используется, чтобы сделать интерфейс доступным для
сетевой уровень ядра. Это связано с назначением IP
адрес и другие параметры, а также активация интерфейса, а также
известное как «поднятие» интерфейса. Быть активным здесь
означает, что ядро ​​будет отправлять и получать IP-датаграммы через
интерфейс. Самый простой способ вызвать его:

 ифконфиг   интерфейс  
                  IP-адрес   

Эта команда назначает IP-адрес для
интерфейс и активирует его. Все остальные
параметры устанавливаются в значения по умолчанию. Например, по умолчанию
сетевая маска выводится из сетевого класса IP-адреса, например
как 255.255.0.0 для класса B
адрес. ifconfig подробно описан в
раздел Раздел 5. 8».

маршрут позволяет добавлять или удалять маршруты из ядра
таблица маршрутизации. Его можно вызвать как:

 route [add|del] [-net|-host]   target   [   if   ] 

Аргументы add и del определяют
добавить или удалить маршрут к
цель . -net и
Аргументы -host сообщают команде маршрута,
цель — это сеть или хост (хост предполагается, если вы не
указать). , если аргумент снова является необязательным, и
позволяет указать, к какому сетевому интерфейсу должен быть направлен маршрут
направлено — ядро ​​Linux сделает разумное предположение, если вы не
предоставить эту информацию. Эта тема будет раскрыта более подробно
в последующих разделах.

Петлевой интерфейс

Самым первым активируемым интерфейсом является loopback интерфейс:

 #   ifconfig lo 127. 0.0.1   

Иногда вы будете видеть фиктивное имя хоста
localhost используется вместо
Айпи адрес. ifconfig будет искать имя в
содержит файл , где запись должна объявлять
это как имя хоста для 127.0.0.1 :

 # Пример записи /etc/hosts для локального хоста
локальный 127.0.0.1 

Чтобы просмотреть конфигурацию интерфейса, вы вызываете
ifconfig , указав в качестве аргумента только имя интерфейса:

 $   ifconfig lo  
lo Link encap: Локальная петля
          инет-адрес: 127.0.0.1 Маска: 255.0.0.0
          UP LOOPBACK РАБОТАЕТ MTU:3924 Метрика: 1
          Пакеты RX: 0 ошибки: 0 отброшены: 0 переполнение: 0 кадр: 0
          Пакеты TX: 0 ошибки: 0 отброшены: 0 переполнения: 0 оператор: 0
          Collisions:0 

Как видите, петлевому интерфейсу была назначена сетевая маска.
255. 0.0.0 , т.к.
127.0.0.1 — это адрес класса А.

Теперь вы почти можете начать играть со своей мини-сетью. Что еще
отсутствует запись в таблице маршрутизации, которая сообщает IP, что он может использовать
этот интерфейс как маршрут к пункту назначения 127.0.0.1 . Это достигается с помощью:

 # route add 127.0.0.1 

Опять же, вместо этого вы можете использовать localhost .
IP-адреса, при условии, что вы ввели его в свой
/etc/хост .

Далее следует проверить, что все работает нормально, например с помощью
пинг . ping — сетевой эквивалент
гидроакустического устройства. [31] Команда используется для проверки того, что заданный адрес
реально достижимым, и измерить задержку, возникающую при отправке
дейтаграмму туда и обратно. Время, необходимое для этого процесса, равно
часто упоминается как «время приема-передачи»:

 #   ping localhost  
PING localhost (127.  С
--- статистика пинга локального хоста ---
3 пакета передано, 3 пакета получено, 0% потери пакетов
туда-обратно мин./средн./макс. = 0,4/0,4/0,4 мс
№ 9C  отмечает место, где мы нажали Ctrl-C. 

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

Если вывод, который вы получаете от ping , не похож на что показано в предыдущем примере, у вас проблемы. Проверьте любой ошибки, если они указывают на то, что какой-то файл не был установлен правильно. Убедитесь, что ifconfig и route двоичные файлы, которые вы используете, совместимы с версии ядра, которую вы запускаете, и, прежде всего, что ядро ​​было скомпилирован с поддержкой сети (это видно по наличию каталог /proc/net ). Если вы получили сообщение об ошибке сообщение «Сеть недоступна», вы, вероятно, получили route неправильная команда. Убедитесь, что вы используете тот же адрес, который вы дали ifconfig .

Описанных ранее шагов достаточно для использования сети. приложения на отдельном хосте. После добавления упомянутых строк ранее к вашему сетевому сценарию инициализации и убедившись, что он будет выполняться во время загрузки, вы можете перезагрузить компьютер и попробовать различные приложения. Например, телнет localhost должен установить телнет подключение к вашему хосту, что дает вам логин : быстрый.

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

Интерфейсы Ethernet

Настройка интерфейса Ethernet почти такая же, как петлевой интерфейс; просто требуется еще несколько параметров, когда вы используя подсети.

В Virtual Brewery мы разделили IP-сеть на подсети, которая была первоначально сеть класса B, в подсети класса C. Чтобы сделать интерфейс распознает это, заклинание ifconfig будет выглядеть так:

 #   ifconfig eth0 vstout сетевая маска 255.255.255.0   

Эта команда назначает интерфейсу eth0 IP-адрес.
адрес vstout
( 172.16.1.2 ). Если бы мы опустили
сетевая маска, ifconfig выведет сетевую маску из
класс IP-сети, что приведет к неправильной сетевой маске
255.255.0.0 . Теперь быстро
проверка показывает:

 #   ifconfig eth0  
eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42
          инет адрес 172.16.1.2 Bcast 172.16.1.255 Маска 255.255.255.0
          ЗАПУСК ВЕЩАНИЯ MTU 1500 Метрика 1
          Пакеты RX 0 ошибок 0 отброшено 0 превышено 0
          Пакеты TX 0 ошибок 0 отброшено 0 превышено 0 

Вы можете видеть, что ifconfig автоматически устанавливает широковещательную рассылку
адрес (поле Bcast ) на
обычное значение, которое является сетевым номером хоста со всеми установленными битами хоста.
Кроме того, максимальная единица передачи (максимальный размер IP-дейтаграмм,
ядро будет генерировать для этого интерфейса) установлен максимальный размер
Пакеты Ethernet: 1500 байт. Обычно используются значения по умолчанию, но
все эти значения при необходимости можно переопределить с помощью специальных опций, которые
быть описаны в разделе 5.8.

Так же, как и для петлевого интерфейса, теперь вам нужно установить маршрутизацию.
запись, информирующая ядро ​​о доступной сети
через eth0 . Для виртуальной пивоварни вы можете вызвать
маршрут как:

 #   route add -net 172.16.1.0   

Сначала это немного похоже на магию, потому что на самом деле это не так.
ясно, как маршрут определяет, через какой интерфейс маршрутизировать.
Однако трюк довольно прост: ядро ​​проверяет все интерфейсы.
которые были настроены до сих пор, и сравнивает адрес назначения
( 172.16. 1.0 в данном случае)
сетевая часть адреса интерфейса (то есть побитовое И
адрес интерфейса и сетевую маску). Единственный интерфейс, который соответствует
эт0 .

Итак, для чего нужна эта опция -net ? Это используется
потому что маршрут может обрабатывать оба маршрута к сетям
и маршруты к отдельным хостам (как вы видели ранее с localhost ). Когда дали адрес в
четырехъядерная нотация с точками, маршрут попытки угадать
будь то сеть или имя хоста, глядя на часть хоста
биты. Если хост-часть адреса равна нулю, маршрут
предполагает, что это обозначает сеть; иначе маршрут
принимает его как адрес хоста. Следовательно, маршрут будет
думаю, что 172.16.1.0 является
адрес хоста, а не номер сети, потому что он не может знать, что
мы используем подсети. Мы должны указать маршрут явно
что он обозначает сеть, поэтому мы даем ему
-нетто флаг.

Конечно, команда route немного утомительна для понимания.
тип, и он подвержен орфографическим ошибкам. Более удобный подход
заключается в использовании сетевых имен, которые мы определили в
/etc/сети . Такой подход делает команду
намного читабельнее; даже флаг -net может быть
опущен, потому что маршрут знает, что 172.16.1.0 обозначает сеть:

 #   route add brew-net   

Теперь, когда вы завершили основные этапы настройки, мы хотим
убедитесь, что ваш интерфейс Ethernet действительно работает
счастливо. Выберите хост из вашего Ethernet, например 9С
----vstout.vbrew.com Статистика PING----
4 пакета передано, 4 пакета получено, 0
туда и обратно (мс) мин./средн./макс. = 3/8/12

Если вы не видите похожего вывода, что-то сломано. Если вы столкнетесь
необычные показатели потери пакетов, это намекает на аппаратную проблему, например, плохую
или отсутствие терминаторов. Если вы вообще не получили ответов, вы
следует проверить конфигурацию интерфейса с помощью
netstat , описанный ниже в разделе 5.9. Статистика пакетов, отображаемая
ifconfig должен сообщить вам, есть ли какие-либо пакеты
были отправлены на интерфейс вообще. Если у вас есть доступ к
удаленный хост, вы должны перейти на этот компьютер и проверить
статистика интерфейса. Таким образом, вы можете точно определить, где
пакеты сбрасывались. Кроме того, вы должны отобразить маршрутизацию
информацию с маршрутом , чтобы узнать, есть ли у обоих хостов
правильная запись маршрутизации. маршрут распечатывает
полная таблица маршрутизации ядра при вызове без каких-либо аргументов
( -n просто заставляет печатать адреса как пунктирные
quad вместо использования имени хоста):

 #   маршрут -n  
Таблица маршрутизации ядра
Шлюз назначения Флаги Генмаски Метрика Ссылка Использование Iface
127. 0.0.1 * 255.255.255.255 UH 1 0 112 ло
172.16.1.0 * 255.255.255.0 U 1 0 10 eth0 

Подробное значение этих полей поясняется далее в Разделе 5.9.». Столбец Flags содержит список установленных флагов.
для каждого интерфейса. У есть
всегда устанавливается для активных интерфейсов, а H говорит, что адрес назначения обозначает
хозяин. Если флаг H установлен для
маршрут, который вы считали сетевым маршрутом, вы должны перевыпустить
команда route с -net
вариант. Чтобы проверить, используется ли введенный вами маршрут,
проверьте, не отображается ли поле Use
в предпоследнем столбце увеличивается между двумя вызовами
пинг .

Маршрутизация через шлюз

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

Ethernet виртуальной пивоварни и виртуальной винодельни соединены
через такой шлюз, а именно хост vlager . Предполагая, что vlager уже настроен, мы
просто нужно добавить еще одну запись в таблицу маршрутизации vstout , которая сообщает
ядра, он может связаться со всеми хостами в сети Winery через
влагер . Соответствующий
заклинание маршрута показано ниже; в
ключевое слово gw сообщает, что
следующий аргумент обозначает шлюз:

 #   route add wine-net gw vlager   

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

В этом примере описывается только шлюз, который переключает пакеты между
два изолированных Ethernet. Теперь предположим, что vlager также имеет подключение к
Интернет (скажем, по дополнительному SLIP-линку). Тогда мы хотели бы
дейтаграмм до любая сеть назначения , кроме
Пивоварня сдается влагерю . Это действие может быть выполнено
сделав его шлюзом по умолчанию для vstout :

 #   маршрут добавить по умолчанию gw vlager   

Имя сети по умолчанию является сокращенным
для 0.0.0.0 , что означает значение по умолчанию
маршрут. Маршрут по умолчанию соответствует каждому пункту назначения и будет использоваться, если
больше нет конкретного маршрута, который соответствует. Вам не нужно добавлять это имя в
/etc/networks , потому что он встроен в
маршрут .

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

Настройка шлюза

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

Весьма полезно добавить информацию о двух интерфейсах в
содержит файл , как показано в следующем примере, поэтому
у нас есть удобные имена для них тоже:

 172.16.1.1 vlager.vbrew.com vlager vlager-if1
172.16.2.1 vlager-if2 

Последовательность команд для настройки двух интерфейсов следующая:

 #   ifconfig eth0 vlager-if1  
#   route add brew-net  
#   ifconfig eth2 vlager-if2  
#   route add wine-net   

Если эта последовательность не работает, убедитесь, что ваше ядро ​​скомпилировано
с включенной поддержкой переадресации IP. Один из хороших способов сделать это —
убедитесь, что первое число во второй строке
/proc/net/snmp имеет значение 1 .

Интерфейс PLIP

Ссылка PLIP, используемая для соединения двух машин, немного отличается от
Ethernet. Ссылки PLIP являются примером того, что называется
двухточечных ссылок, что означает наличие одного
host на каждом конце ссылки. Такие сети, как Ethernet, называются
вещают сети. Конфигурация двухточечных ссылок
отличается тем, что, в отличие от широковещательных сетей, двухточечные каналы не
поддерживать собственную сеть.

PLIP обеспечивает очень дешевую и портативную связь между компьютерами. Как
В качестве примера рассмотрим портативный компьютер сотрудника Виртуального
Пивоварня, подключенная к vlager
через ПЛИП. Сам ноутбук называется
vlite и имеет только один параллельный порт.
Во время загрузки этот порт будет зарегистрирован как plip1 . К
активируйте ссылку, вы должны настроить plip1
интерфейса с помощью следующих команд: [33]

 #   ifconfig plip1 vlite pointopoint vlager  
#   route add default gw vlager   

Первая команда настраивает интерфейс, сообщая ядру, что это
представляет собой соединение точка-точка, при этом удаленная сторона имеет адрес
влагер . Второй устанавливает по умолчанию
route, используя vlager в качестве шлюза. На
влагер , аналог
команда ifconfig необходима для активации ссылки
(вызов route не требуется):

 #   ifconfig plip1 vlager pointopoint vlite   

Обратите внимание, что интерфейс plip1 на vlager не требует отдельного IP
адрес, но также может быть указан адрес 172.16.1.1 . Сети точка-точка не
поддерживать сеть напрямую, поэтому интерфейсы не требуют адреса
в любой поддерживаемой сети. Ядро использует информацию об интерфейсе в
таблицу маршрутизации, чтобы избежать возможной путаницы. [34]

Теперь мы настроили маршрутизацию с ноутбука на пивоварню.
сеть; чего все еще не хватает, так это способа маршрутизации из любого
Хозяева пивоварни vlite . Один
особенно громоздким способом является добавление определенного маршрута к маршрутизации каждого хоста.
таблица с именами vlager в качестве шлюза
к vlite :

 #   маршрут добавить vlite gw vlager   

Динамическая маршрутизация предлагает гораздо лучший вариант для временных маршрутов. Ты
мог бы использовать gated , демон маршрутизации, который вы
должны быть установлены на каждом хосте в сети, чтобы распространять
маршрутизация информации динамически. Однако самый простой вариант —
используйте прокси-сервер ARP (протокол разрешения адресов).
С прокси-ARP vlager будет
ответить на любой запрос ARP для vlite , отправив свой собственный Ethernet
адрес. Все пакеты для vlite завершатся на vlager , который затем перенаправит их на
ноутбук. Мы вернемся к прокси-ARP в разделе Раздел 5.10».

Текущие выпуски net-tools содержат инструмент под названием
plipconfig , который позволяет установить определенные PLIP
временные параметры. IRQ, который будет использоваться для порта принтера, может быть установлен с помощью
команда ifconfig .

Интерфейсы SLIP и PPP

Хотя каналы SLIP и PPP представляют собой только простые каналы типа «точка-точка», такие как
Соединения PLIP, о них можно сказать гораздо больше. Обычно,
установка SLIP-соединения включает в себя дозвон до удаленного сайта
через модем и установив последовательную линию в режим SLIP. ГЧП это
используется аналогичным образом. Мы подробно обсуждаем SLIP и PPP в
Глава 7 и Глава 8.

Интерфейс-пустышка

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

Проблема с автономными хостами заключается в том, что они имеют только один
активное сетевое устройство, петлевое устройство, которое обычно назначается
адрес 127.0.0.1 . На
однако в некоторых случаях необходимо отправлять данные в
«официальный» IP-адрес локального хоста. Например,
рассмотреть ноутбук влите ,
который был отключен от сети на время этого
пример. Приложение на vlite теперь может захотеть отправить данные на
другое приложение на том же хосте. Поиск vlite в /etc/hosts
дает IP-адрес 172. 16.1.65 , поэтому приложение пытается
отправить по этому адресу. Поскольку петлевой интерфейс в настоящее время является единственным
активный интерфейс на машине, ядро ​​не знает, что
172.16.1.65 на самом деле относится
себе! Следовательно, ядро ​​отбрасывает дейтаграмму и возвращает
ошибка в приложении.

Здесь в дело вступает фиктивное устройство. Оно решает дилемму,
просто выступая в качестве альтер-эго петлевого интерфейса. в
случай vlite , вы просто
дайте ему адрес 172.16.1.65 и добавьте хост-маршрут, указывающий
к этому. Затем доставляется каждая дейтаграмма для 172.16.1.65 .
локально. Правильный вызов: [35]

 #   ifconfig dummy vlite  
#   маршрут добавить vlite   

Псевдоним IP

Новые ядра поддерживают функцию, которая может полностью заменить пустышку.
интерфейс и выполнять другие полезные функции. ИП
Псевдоним
позволяет настроить несколько IP-адресов на
физическое устройство. В простейшем случае вы можете воспроизвести функцию
фиктивного интерфейса, настроив адрес хоста как псевдоним
на петлевой интерфейс и полностью избегайте использования фиктивного
интерфейс. В более сложных случаях вы можете настроить хост так, чтобы он выглядел
как множество разных хостов, каждый со своим IP-адресом. Этот
конфигурация иногда называется «Виртуальный хостинг»,
хотя технически он также используется для множества других
методы. [36]

Чтобы настроить псевдоним для интерфейса, вы должны сначала убедиться, что
ваше ядро ​​было скомпилировано с поддержкой псевдонима IP (проверьте,
у вас есть файл /proc/net/ip_alias ; если бы не ты
придется перекомпилировать ваше ядро). Конфигурация псевдонима IP
практически идентично настройке реального сетевого устройства; вы используете
специальное имя, чтобы указать, что это псевдоним, который вам нужен. Например:

 #   ifconfig lo:0 172. 16.1.1   

Эта команда создаст псевдоним для петлевого интерфейса с
адрес 172.16.1.1 . IP-псевдонимы относятся к
добавив: n к фактическому
сетевое устройство, где «n» — целое число. В нашем примере
сетевое устройство, на котором мы создаем псевдоним,
lo , и мы создаем псевдоним с нулевым номером для
это. Таким образом, одно физическое устройство может поддерживать несколько
псевдонимы.

Каждый псевдоним может рассматриваться как отдельное устройство и как
что касается программного обеспечения ядра IP, так и будет; однако это
будет делиться своим оборудованием с другим интерфейсом.


[31] Кто-нибудь помнит «Echoes» Pink Floyd?

[32] Например, все приложения на основе RPC
использовать петлевой интерфейс, чтобы зарегистрироваться в
демон portmapper при запуске. Эти приложения
включая NIS и NFS.

[33] Обратите внимание, что не является опечаткой. Это действительно так пишется
этот.

[34] Из соображений осторожности следует
настраивайте PLIP или SLIP ссылку только после того, как вы полностью настроите
записи таблицы маршрутизации для ваших сетей Ethernet. С некоторыми старыми ядрами
в противном случае ваш сетевой маршрут мог бы в конечном итоге указать на
связь точка-точка.

[35] Устройство-пустышка называется dummy0 , если у вас есть
загрузил его как модуль, а не выбрал как встроенное ядро
вариант. Это потому, что вы можете загружать несколько модулей и иметь
более одного фиктивного устройства.

[36] Вернее, используя
Псевдоним IP известен как виртуальный хостинг сетевого уровня. Это больше
распространено в мирах WWW и STMP для использования виртуального уровня приложения.
хостинг, в котором для каждого виртуального хоста используется один и тот же IP-адрес,
но с каждым прикладным уровнем передается другое имя хоста
запрос. Такие службы, как FTP, не могут работать таким образом.