что такое сетевые интерфейсы

Сетевой интерфейс

Материал из Xgu.ru

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

Примеры сетевых интерфейсов:

Каждый интерфейс в сети может быть однозначно идентифицирован по его адресу. Разные сетевые протоколы используют разные системы адресации, например MAC-адреса в Ethernet или IP-адреса в IP.

Настройка сетевых интерфейсов в UNIX/Linux-системах традиционно выполняется с помощью команды ifconfig, а в Linux ещё и при помощи команды ip.

Содержание

[править] Сетевой интерфейс в Linux

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

Интерфейс определён реализацией модели TCP/IP для того чтобы скрыть различия в сетевом обеспечении и свести сетевое взаимодействие к обмену данными с абстрактной сущностью.

Для каждого устройства, поддерживаемого ядром, существует сетевой интерфейс. Существует соглашение о наименовании интерфейсов, в соответствии с которым имя интерфейса состоит из префикса, характеризующего его тип, и числа, соответствующего номеру интерфейса данного типа в системе. Так, например, ppp0 соответствует первому интерфейсу PPP, а eth1 соответствует интерфейсу второго сетевого адаптера Ethernet. Обратите внимание на то, что нумерация интерфейсов начинается с 0.

[править] Наименования сетевых интерфейсов в Linux

Начиная с середины 2011 года (Fedora 15) в Linux используется новая схема наименования интерфейсов. Интерфейсы называются em[1234] (для интегрированных) или pci #

lo Интерфейс петли обратной связи. eth Сетевой интерфейс к карте Ethernet или картам WaveLan (Radio Ethernet). tr Сетевой интерфейс к карте Token Ring. ppp Сетевой интерфейс к каналу PPP (Point-to-Point Protocol). sl Сетевой интерфейс к каналу SLIP (Serial Line IP). plip Сетевой интерфейс к каналу PLIP (Parallel Line IP). Используется для организации сетевого взаимодействия с использованием параллельного порта. ax Сетевой интерфейс к устройствам любительского радио AX.25. fddi Сетевой интерфейс к карте FDDI arc0e, arc0s Сетевой интерфейс к карте ArcNet. Используется инкапсуляция пакетов в формате Ethernet или RFC 1051. wlan Сетевой интерфейс wi-fi адаптеров

Интерфейсы создаются автоматически для каждого обнаруженного сетевого устройства при загрузке ядра ОС.

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

[править] Параметры интерфейса

Кроме этих параметров интерфейс характеризуется ещё:

Debian. Долговременные настройки хранятся в файле /etc/network/interfaces.

[править] Программа ifconfig

Для управления интерфейсами в ОС Linux используется программа ifconfig. Команда позволяет как получать диагностическую информацию об интерфейсах системы, так и выполнять их настройку.

Формат вызова команды:

ifconfig ifconfig interface options

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

При вызове без параметров, программа выводит на экран информацию обо всех активных (up) интерфейсах. Если указано имя интерфейса, но отсутствуют options, выводится информация только о нем одном.

Формат вывода информации о интерфейсе программой ifconfig:

Характеристики канального уровня Канальный уровень Link encap. Аппаратный MAC-адрес устройства HWaddr Характеристики сетевого уровня IP-адрес интерфейса inet addr; широковещательный адрес интерфейса Bcast; маска подсети интерфейса Mask Флаги, метрика и MTU Список установленных флагов интерфейса: включён UP; принимает широковещательные пакеты BROADCAST; принимает групповые пакеты MULTICAST. Среди списка установленных флагов может присутствовать слово PROMISC, означающее, что интерфейс работает в неразборчивом режиме. Установленный размер максимального блока, передаваемого через интерфейс MTU и метрика интерфейса Metric. Информация о полученных пакетах RX Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться. Информация об отправленных пакетах Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns, потерь несущей carrier, коллизий collisions ; объем буфера передачи txqueuelen. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться. Объем переданных данных Количество байтов полученных RX bytes и отправленных TX bytes через интерфейс Аппаратные параметры Номер линии IRQ Interrupt и адрес памяти Base address

Если в командной строке ifconfig указаны options, выполняется настройка интерфейса. В процессе настройки можно изменить режим работы интерфейса, настройки IP-адреса и другие характеристики.

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

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

[править] Аргументы командой строки ifconfig

При изменении IP-адреса интерфейса автоматически изменяются значения его маски и широковещательного адреса. Если параметры netmask и broadcast не указаны явно, соответствующие значения вычисляются исходя из класса IP-адреса. Например, для IP-адреса 200.200.200.200, который относится к диапазону адресов класса C, значения сетевой маски и широковещательного адреса будут соответственно равны 255.255.255.0 и 200.200.200.255, а для адреса 1.2.3.4 (адрес класса A), равны соответственно 255.0.0.0 и 1.255.255.255.

Более тонкую настройку интерфейса можно произвести при помощи утилиты ip

[править] Пример использования ifconfig

Просмотр информации обо всех интерфейсах

Просмотр информации об интерфейсе eth0:

Назначить IP-адрес 10.0.0.1 первой Ethernet-карте:

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

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

Запретить использование ARP на интерфейсе eth0:

Перевести интерфейс в неразборчивый режим:

[править] Создание сетевого интерфейса

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

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

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

Не путайте интерфейсы и устройства системы. Интерфейсам не соответствуют никакие специальные файлы в каталоге /dev

Вновь созданный интерфейс является ненастроенным: он выключен и к нему не привязан никакой IP-адрес. Для того чтобы ввести интерфейс в работу, нужно провести его настройку и включить (поднять) его при помощи команды ifconfig.

При настройке интерфейса обычно настраиваются следующие параметры:

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

[править] Настройка интерфейсов при загрузке системы

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

Рассмотренная ниже процедура автоматической настройки сетевых интерфейсов при загрузке выглядит так только в RedHat-based системах. В Slackware и Debian сетевые интерфейсы настраиваются несколько иначе.

Настройка интерфейсов производится скриптом /etc/rc.d/init.d/network, который автоматически вызывается при переходе на 2, 3, 4 или 5 уровень выполнения. Скрипт network при вызове с параметром start поднимает интерфейсы, т.е. выполняет настройку и включение всех описанных интерфейсов, после чего настраивает статическую маршрутизацию.

Конфигурационные файлы интерфейсов могут быть созданы вручную или при помощи псевдографических и графических инструментов настройки, таких как netconfig или neat

Параметры интерфейса в файле ifcfg.

DEVICE Имя устройства ONBOOT Нужно ли инициализировать интерфейс при загрузке (yes | no) BOOTPROT При динамической настройке тип протокола, при помощи которого должен быть сконфигурирован интерфейс ( bootp | dhcp ) BOOTP Интерфейс необходимо настроить с использованием протокола удаленной загрузки BOOTP IPADDR IP-адрес, который должен быть присвоен интерфейсу NETMASK Маска подсети IP-адреса интерфейса NETWORK Адрес сети интерфейса BROADCAST Широковещательный адрес интерфейса

Значения NETMASK, NETWORK, BROADCAST могут быть вычислены скриптом ifup автоматически при помощи программы ipcalc, поэтому, если они соответствуют классу IP-адреса, указывать явно их не обязательно

Для настройки интерфейсов во время загрузки компьютера используется скрипт ifup, который принимает в качестве аргумента командной строки имя интерфейса interface.

Он читает конфигурационный файл interface или, если он отсутствует, файл из каталога /etc/sysconfig/networking/default. В крайнем случае, если не найден ни один из этих файлов читается конфигурация из ifcfg-interface. После этого скрипт производит настройку интерфейсов при помощи утилиты ip. Настраиваются не только интерфейсы сами по себе, но и необходимые маршруты для обращения к сетям, непосредственно доступным через интерфейс.

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

Перезапуск интерфейса eth0:

Файлы ifup и ifdown в каталоге /etc/sysconfig/network-scripts являются символическими ссылками на файлы ifup и ifdown в каталоге /sbin. Поэтому, при вызове вручную можно просто воспользоваться командами ifup и ifdown.

При вызове в ходе начальной загрузки, скрипту ifup передается дополнительный аргумент boot, который сообщает, что интерфейс нужно поднимать только в том случае, если в файле его конфигурации параметр ONBOOT не установлен в no.

[править] Файл конфигурации eth0

Вот пример наиболее распространённой конфигурации Ethernet-интерфейса:

В данном случае файл описывает интерфейс eth0, которому назначен IP-адрес из диапазона рекомендованного для локальных сетей 10.0.0.188. Поскольку адрес принадлежит классу A, а необходимо чтобы под сетевую часть было отведено 24 бита, явным образом задана сетевая маска NETMASK, адрес сети NETWORK и широковещательный адрес BROADCAST.

Источник

Сетевые интерфейсы

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

eth — сетевой интерфейс к карте Ethernet или картам WaveLan (Radio Ethernet).

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

Параметры интерфейса

Кроме этих параметров интерфейс характеризуется ещё:

Конфигурационные файлы и настройка IPv4

Debian/Ubuntu

Настройки сетевого интерфейса указываются в конфигурационном файле /etc/network/interfaces :

Ubuntu 16.04 LTS

Ubuntu 18.04 LTS

В этой версии ОС сеть может задаваться не с помощью networking, а с помощью утилиты netplan.

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

Redhat/Fedora/CentOS

/etc/sysconfig/network-scripts — каталог, содержащий конфигурационные файлы интерфейсов и скрипты, выполняющие их инициализацию.
/etc/sysconfig/network-scripts/ifup — скрипт, который выполняет настройку и активацию интерфейса.
/etc/sysconfig/network-scripts/ifdown — скрипт, который выполняет деактивацию интерфейса.
/etc/sysconfig/network-scripts/ifcfg-* — конфигурационные файлы, описывающие интерфейсы системы.
/etc/init.d/network — скрипт, выполняющий настройку сетевых интерфейсов и маршрутизации при загрузке.
/etc/sysconfig/network — конфигурационный файл, содержащий имя хоста, IP-адрес основного шлюза и IP-адреса основного и вспомогательного DNS-серверов:

Адрес можно добавить на тот же интерфейс, что и IPv4, новый создавать не нужно.

CentOS

Для работы с IPv6 необходимо добавить следующие директивы в конфигурационный файл /etc/sysconfig/network :

IP-адрес назначается в конфигурационном файле /etc/sysconfig/network-scripts/ifcfg-* :

Debian/Ubuntu

IP-адрес добавляется на интерфейс в файле /etc/network/interfaces :

Ubuntu 16.04 LTS

От других систем семейства отличается имя интерфейса, вместо eth0 – ens3.

Ubuntu 18.04 LTS

В файл /etc/netplan/50-cloud-init.yaml нужно добавить:

И применить изменения командой netplan apply.

Несколько IP-адресов

В остальном интерфейс настраивается аналогично физическому.

CentOS

Debian/Ubuntu

Ubuntu 16.04 LTS

Для данной ОС не требуется создавать виртуальный интерфейс, достаточно добавить второй IP-адрес на уже существующий, например:

Ubuntu 18.04 LTS с netplan

Несколько IPv6-адресов можно назначать на один интерфейс без создания виртуального. При этом gateway указывается только один раз. Например:

CentOS

Debian/Ubuntu

Ubuntu 16.04 LTS

Nameservers

Необходимые директивы для nameservers добавляются в конфигурационный файл. Указать можно столько DNS-серверов, сколько необходимо.

CentOS

Ubuntu/Debian

Настройка приватной сети

Для создания приватной сети между боксами необходимо настроить новый интерфейс — он уже добавлен, увидеть его можно в выводе утилиты ip

Ubuntu 18.04 LTS и старше

Добавить в файл /etc/netplan/50-cloud-init.yaml :

Важно соблюдать количество пробелов как в остальном файле.

Debian

Добавить в файл /etc/network/interfaces.d/50-cloud-init :

CentOS

Создать файл /etc/sysconfig/network-scripts/ifcfg-eth1 :

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

Проверить работу приватной сети можно с помощью ssh, ping или любых других подходящих утилит:

Настройка mtu на интерфейсе

Параметр mtu нужно менять, если вы пользуетесь индивидуальной защитой от DDoS. В стандарте Ethernet TCP-пакеты разбиты на кадры объемом 1500 байт, но при передаче через GRE-тоннель маршрутизаторы дописывают к кадрам свои 24 байта. Принимающая система оказывается не готова к кадру размером 1524 байт, поэтому мы изменим параметр mtu на интерфейсе, уменьшив его до 1476 байт, чтобы принимающая система спокойно восприняла итоговый кадр в 1500 байт.

Ubuntu 18.04+

Дописываем mtu в конфигурационный файл /etc/netpal/50-cloud-init.yaml сразу после имени интерфейса, например:

Важно соблюдать количество пробелов как в остальном файле.

После чего перезагружаем сетевую службу командой netplan apply.

Debian

Редактируем файл /etc/network/interfaces, добавляя параметр вслед за описанием интерфейса:

Перезагружаем сеть командой systemctl restart networking.

CentOS

Вносим в файл /etc/sysconfig/network строку:

И перезагружаем сетевую службу: systemctl restart network.

ifconfig

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

Формат вызова команды:

Без параметров программа выводит на экран информацию обо всех активных (находящих в состоянии up ) интерфейсах. Если указано имя интерфейса и отсутствуют опции, выводится информация только о нем.

Просмотр информации об интерфейсе eth0

Формат вывода информации о интерфейсе программой ifconfig:
Характеристики канального уровня
Канальный уровень Link encap. Аппаратный MAC-адрес устройства HWaddr.
Характеристики сетевого уровня
IP-адрес интерфейса inet addr; широковещательный адрес интерфейса Bcast; маска подсети интерфейса Mask.
Флаги, метрика и MTU
Список установленных флагов интерфейса: включён UP; принимает широковещательные пакеты BROADCAST; принимает групповые пакеты MULTICAST. Среди списка установленных флагов может присутствовать слово PROMISC, означающее, что интерфейс работает в неразборчивом режиме. Установленный размер максимального блока, передаваемого через интерфейс MTU и метрика интерфейса Metric.
Информация о полученных пакетах RX
Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться.
Информация об отправленных пакетах
Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns, потерь несущей carrier, коллизий collisions ; объем буфера передачи txqueuelen. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться.
Объем переданных данных
Количество байтов полученных RX bytes и отправленных TX bytes через интерфейс/
Аппаратные параметры
Номер линии IRQ Interrupt и адрес памяти Base address.

Назначение IP-адреса 10.0.0.1 первой Ethernet-карте

Назначение IP-адреса 10.0.0.1 первой Ethernet-карте выполняется командой:

Включение интерфейса

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

Маршрутизация (route)

route — утилита для настройки таблицы маршрутизации.

Просмотр таблицы маршрутизации

Добавление шлюза по умолчанию

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

Добавление маршрута в удаленную сеть

Удаление маршрута

Утилита ip

Утилита ip совмещает в себе другие сетевые утилиты и позволяет производить те же самые операции, что и ifconfig, route и arp вместе взятые.

Подробную информацию об утилите можно получить с помощью help :

Разберем вывод команды подробнее.

Блок «Usage» содержит синтаксис утилиты:

В блоке «OBJECT» указаны все доступные объекты:

Часто используемые объекты:

«OPTIONS» содержит список доступных опций:

Часто используемые опции:

Также при работе с утилитой ip используются различные команды и параметры.

Команды:

Параметры:

Не все команды и параметры доступны при работе с различными объектами. Подробную информацию также можно получить применив «help».

При выводе help для объекта address блок «Usage» содержит синтаксис различных комбинаций команд и параметров:

Примеры

Показать все соединения

Сокращенный вывод ifconfig без параметров:

Отображение информации об интерфейсе eth0

Включение интерфейса eth1

Вывод всех интерфейсов и IP-адресов

Установка/удаление IP-адреса для интерфейса eth1

Отображение маршрута к указанной сети

Отображение маршрута к указанной сети от указанного интерфейса

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

Создание маршрута по умолчанию

Создание маршрута к указанной сети

Перезапуск сетевых сервисов

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

Источник

Сетевые интерфейсы

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

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

Обзор

Сетевой интерфейс — это точка, в которой соединяются две части сетевого оборудования или уровней протоколов. Как правило, он представлен физической сетевой картой (NIC) для подключения между компьютером и частной или общедоступной сетью. Однако он также может принимать форму программного компонента, такого как интерфейс замыкания на себя ( 127.0.0.1 для IPv4 или ::1 IPv6).

Сетевые интерфейсы определяются с помощью IETF в RFC 2863 и не предназначены для определения с помощью Windows. Подробные вопросы о значении идентификаторов сетевых интерфейсов, таких как ifIndex, см. в их определениях IETF. в оставшейся части этого раздела обсуждаются сведения о реализации, связанные с Windows.

Идентификаторы и свойства сетевых интерфейсов

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

В коде сетевой интерфейс может быть идентифицирован различными способами. В следующей таблице описаны способы идентификации сетевого интерфейса вместе со связанными свойствами. Мы рекомендуем использовать идентификатор GUID интерфейса (ифгуид) для программирования, если для определенного API не требуется другой идентификатор сетевого интерфейса.

ИдентификаторРазмерЯвляется уникальным в системеЯвляется уникальным в миреЯвляется прогнозируемымБудет перезапущено, если сетевая карта удаленаСохраняется во всех перезагрузкахКонечные пользователи могут изменять в любое времяДрайверы могут измениться в любое времяОбщее знакомство с конечными пользователямиВсегда имеется
ifIndex4 байтаДаНетНетДаНет 1НетНетНекоторые 2Да
нетлуид8 байтДаНетНетДаДаНетНетНетДа
ифгуид16 байтДаОбычно 3НетНетДаНетНетНетДа
ифалиас514 байтДа для сетевых карт 4НетИногда 5ДаДаДаНетДаОбычно 4
ифдескр514 байтОбычно 6НетНетДаДаНетДаДаРасположена
Иффисаддресс (MAC-адрес)от 0 до 32 байтОбычно для сетевых адаптеровОбычно для сетевых адаптеровДаПривязано к оборудованиюДаНетНетДаОбычно 7
ИД экземпляра PnPДо 400 байтДаНетНетДаДаНетНетНетОбычно для сетевых адаптеров 8
Расположение PnP (номер гнезда PCI)До 400 байтДаНетДаДаДаНетНетПоройИногда 8, 9

Примечания для предыдущей таблицы:

Видимость для разработчиков

API вспомогательного приложения IP также доступен для настольных приложений в пользовательском режиме и драйверов режима ядра.

Поверхность API UWP предоставляет только свойство ифгуид напрямую. Однако разработчики приложений UWP могут импортировать функцию GetIfTable2 с помощью P/Invoke, если они необходимы для доступа к другим свойствам сетевого интерфейса.

Связанные темы

Определения информационной базы MIB для сетевых интерфейсов см. в RFC 2863.

Сетевые интерфейсы NDIS в сетевых драйверах см. в разделе NDIS Network Interfaces.

Справочник по API Нетиоапи. h см. в разделе нетиоапи. h Header.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *