Искать в Базе знаний

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

Сетевые интерфейсы создаются автоматически для каждого обнаруженного сетевого устройства при загрузке ядра ОС.
eth — сетевой интерфейс к карте Ethernet или картам WaveLan (Radio Ethernet).
Каждый интерфейс характеризуется определёнными параметрами, необходимыми для обеспечения его функционирования и для сетевого обмена данными по протоколу IP.
Параметры интерфейса
  • DEVICE: Имя интерфейса.
  • IPADDR: IP-адрес, соответствующий данному сетевому интерфейсу. Пакеты, отправленные по этому адресу, поступят на соответствующий интерфейс.
  • NETMASK: Битовая маска, необходимая для вычисления маршрута передачи IP-пакета.
  • BROADCAST: Адрес, используемый при широковещательной рассылке пакетов через интерфейс.
  • Метрика: Условная характеристика интерфейса соответствующая уровню затрат при передаче информации через него. Используется при маршрутизации пакетов, для выбора оптимального маршрута.
  • MTU: Maximum Transfer Unit. Максимальный размер блока данных обрабатываемого интерфейсом. Наибольшее значение MTU определяется типом интерфейса (например, для Ethernet MTU=1500), но может быть искусственно снижено.
  • MAC-адрес: Аппаратный адрес сетевого устройства, соответствующего интерфейсу (для которых это имеет смысл).
Кроме этих параметров интерфейс характеризуется ещё:
  • Флагами, которые определяют состояния устройства, например такие как: включен ли интерфейс (Up/Down), находится ли он в неразборчивом режиме (promiscuous/nonpromiscuous).
  • Аппаратными характеристиками, такими как адрес памяти, номер IRQ, DMA, порт ввода/вывода.
  • Статистической информацией, характеризующей различные аспекты работы интерфейса. Например, количество переданных/полученных байтов/пакетов, число переполнений, коллизий и др. с момента создания интерфейса.

Конфигурационные файлы

Система
Конфигурационный файл
Применение изменений
Система
Ubuntu 18.04+, Debian 12+
Конфигурационный файл
/etc/netplan/50-cloud-init.yaml
Применение изменений
netplan apply
Система
Debian 9–11
Конфигурационный файл
/etc/network/interfaces
Применение изменений
systemctl restart networking
Система
CentOS / RHEL
Конфигурационный файл
/etc/sysconfig/network-scripts/ifcfg-*
Применение изменений
systemctl restart network

IPv4

Ubuntu / Debian 12+

network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 123.123.123.123/24
      nameservers:
        addresses:
          - 141.8.194.254
          - 141.8.197.254
      routes:
        - to: default
          via: 123.123.123.1
Важно: директива gateway4 устарела. Маршрут по умолчанию задаётся через блок routes с параметром to: default.

Debian 9–11

auto ens3
iface ens3 inet static
    address 123.123.123.123
    netmask 255.255.255.0
    gateway 123.123.123.0
    dns-nameservers 141.8.194.254 141.8.197.254

CentOS / RHEL

В CentOS / RHEL директория, отвечающая за присвоение постоянных IP-адресов — это /etc/sysconfig/network-scripts. В данной директории необходимо создать файл, соответствующий вашему новому виртуальному интерфейсу. Например, на наших боксах подобный файл будет называться ifcfg-eth0:0.
  • /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-серверов:
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
DNS1=141.8.194.254
DNS2=141.8.197.254
NETMASK=255.255.255.0
BOOTPROTO=static
IPADDR=123.123.123.123
GATEWAY=123.123.123.1

IPv6

Адрес можно добавить на тот же интерфейс, что и IPv4, новый создавать не нужно.
На нашей площадке используется универсальный шлюз fe80::1.

Ubuntu / Debian 12+

network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 123.123.123.123/24
        - 2a0a:2b40::4:16d1/64
      nameservers:
        addresses:
          - 141.8.194.254
          - 141.8.197.254
      routes:
        - to: default
          via: 123.123.123.1
        - to: default
          via: fe80::1

Debian 9–11

iface ens3 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway fe80::1

CentOS / RHEL

Для работы с IPv6 необходимо добавить следующие директивы в конфигурационный файл /etc/sysconfig/network:
NETWORKING_IPV6=yes
IPV6_DEFAULTDEV=eth0
IPV6_DEFAULTGW=fe80::1
  • NETWORKING_IPV6 — включаем поддержку IPV6.
  • IPV6_DEFAULTDEV — интерфейс по умолчанию.
  • IPV6_DEFAULTGW — gateway по умолчанию.
IPV6INIT=yes
IPV6ADDR=2a0a:2b40::4:1701/64

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

IPv4

Чтобы назначить дополнительные IPv4-адреса на тот же самый интерфейс, необходимо создать виртуальный интерфейс в виде имя_интерфейса:номер, например eth0:0.
В остальном интерфейс настраивается аналогично физическому.
Ubuntu / Debian 12+
В интерфейсе описываются необходимые адреса, роутинг происходит через директиву routes.
network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 185.185.68.210/22
        - 141.8.198.107/22
      nameservers:
        addresses:
          - 141.8.194.254
          - 141.8.197.254
      routes:
        - to: 185.185.68.210/22
          via: 185.185.68.1
        - to: 141.8.198.107/22
          via: 141.8.198.1
Debian 9–11
Для данной ОС не требуется создавать виртуальный интерфейс, достаточно добавить второй IP-адрес на уже существующий, например:
auto eth0
iface ens6 inet static
address 192.168.0.1
netmask 255.255.255.0

iface ens6 inet static
address 192.168.1.1
CentOS / RHEL
DEVICE=eth1:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0

IPv6

Несколько IPv6-адресов можно назначать на один интерфейс без создания виртуального. При этом gateway указывается только один раз. Например:
Ubuntu / Debian 12+
network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 2a0a:2b40::4:16d1/64
        - 2a0a:2b40::4:16d2/64
      routes:
        - to: default
          via: fe80::1
Debian 9–11
iface ens3 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway 2a0a:2b40::1

iface ens3 inet6 static
address 2a0a:2b40::4:16d2
netmask 64
CentOS / RHEL
IPV6INIT=yes
IPV6ADDR=2a0a:2b40::4:1701/64
IPV6ADDR_SECONDARIES="2a0a:2b40::4:1702/64 2a0a:2b40::4:1703/64"

Nameservers

DNS-серверы указываются в конфигурационном файле сети. Можно задать несколько адресов.
Ubuntu / Debian 12+
Задаётся в блоке nameservers внутри описания интерфейса:
nameservers:
  addresses:
    - 8.8.8.8
    - 8.8.4.4
Debian 9–11
dns-nameservers 8.8.8.8 8.8.4.4
CentOS / RHEL
DNS1=8.8.8.8
DNS2=8.8.4.4

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

Организовать приватную сеть можно только для боксов в одной локации.
Вы можете использовать любые IP-адреса из диапазона приватных.
После добавления бокса в приватную сеть, необходимо настроить новый интерфейс — он уже добавлен, увидеть его можно в выводе команды ip a.
У боксов без приватной сети только два интерфейса: lo и eth/ens. У боксов с приватной сетью есть ещё один интерфейс eth/ens, изначально он выключен. Чтобы его включить, надо:
Ubuntu / Debian 12+
Добавить в конфигурационный файл:
ens8:
  addresses:
  - 10.0.0.1/8
Важно соблюдать количество пробелов как в остальном файле.
Debian 9–11
Добавить в конфигурационный файл:
auto ens8
iface ens8 inet static
address 10.0.0.1
netmask 255.0.0.0
CentOS / RHEL
Создать конфигурационный файл интерфейса:
TYPE=Ethernet
NAME=eth1
DEVICE=eth1
ONBOOT=yes
NETMASK=255.0.0.0
BOOTPROTO=static
IPADDR=10.0.0.1
Проверить работу приватной сети можно с помощью ssh, ping или любых других подходящих утилит:
ssh login@10.0.0.2
ping 10.0.0.2

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

Параметр mtu нужно менять, если вы пользуетесь индивидуальной защитой от DDoS. В стандарте Ethernet TCP-пакеты разбиты на кадры объемом 1500 байт, но при передаче через GRE-тоннель маршрутизаторы дописывают к кадрам свои 24 байта. Принимающая система оказывается не готова к кадру размером 1524 байт, поэтому мы изменим параметр mtu на интерфейсе, уменьшив его до 1476 байт, чтобы принимающая система спокойно восприняла итоговый кадр в 1500 байт.
Ubuntu / Debian 12+
Дописываем параметр сразу после имени интерфейса:
ens3:
  mtu: 1476
  addresses:
  - 185.185.68.210/22
Важно соблюдать количество пробелов как в остальном файле.
Debian 9–11
Добавляем параметр вслед за описанием интерфейса:
auto ens3
iface ens3 inet static
mtu 1476
address 123.123.123.123
CentOS / RHEL
Добавляем параметр:
MTU=1476

Утилита ip

Утилита ip совмещает в себе другие сетевые утилиты и позволяет производить те же самые операции, что и ifconfig, route и arp вместе взятые.
Подробную информацию об утилите можно получить с помощью help:
ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where  OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
	   tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
	   netns | l2tp | tcp_metrics | token | netconf }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
		-f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
		-4 | -6 | -I | -D | -B | -0 |
		-l[oops] { maximum-addr-flush-attempts } |
		-o[neline] | -t[imestamp] | -b[atch] [filename] |
		-rc[vbuf] [size]}
Разберем вывод команды подробнее.
Блок «Usage» содержит синтаксис утилиты:
ip [ OPTIONS ] OBJECT { COMMAND | help } - общий синтаксис.
ip [ -force ] -batch filename - синтаксис при работе со скриптами.
В блоке «OBJECT» указаны все доступные объекты:
OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns | l2tp | tcp_metrics | token | netconf }
Часто используемые объекты:
  • address — сетевой адрес на устройстве
  • link— физическое сетевое устройство
  • monitor — мониторинг состояния устройств
  • neigh — ARP
  • route — управление маршрутизацией
  • rule — правила маршрутизации
  • tunnel — настройка туннелирования
«OPTIONS» содержит список доступных опций:
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
 -f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
 -4 | -6 | -I | -D | -B | -0 |
 -l[oops] { maximum-addr-flush-attempts } |
 -o[neline] | -t[imestamp] | -b[atch] [filename] |
 -rc[vbuf] [size]}
Часто используемые опции:
  • -v — вывод информации об утилите и ее версии
  • -s — включает вывод статистической информации
  • -f — указывает протокол для работы:
    • bridge
    • inet
    • inet6
    • ipx
    • link
  • -o — выводить каждую запись с новой строки
  • -r — выполнять резолвинг
Команды:
add, change, delete, flush, get, list, show, monitor, replace, restore, save, set, и update.
Если команда не указана, выполняется show.
Примеры
Показать все соединения
ip link show
Создание маршрута по умолчанию
ip route add default via 192.168.50.100

Утилита ifconfig

Команда ifconfig позволяет получать диагностическую информацию об интерфейсах системы и выполнять их настройку.
Формат вызова команды:
ifconfig interface options
Для получения информации, программа ifconfig может вызываться простым пользователем. Файл ifconfig находится в каталоге /sbin, чаще всего при вызове нужно указывать абсолютное путевое имя.
Без параметров программа выводит на экран информацию обо всех активных (находящихся в состоянии up) интерфейсах. Если указано имя интерфейса и отсутствуют опции, выводится информация только о нем.
Просмотр информации об интерфейсе eth0
ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:01:02:B4:61:10  
inet addr:10.0.0.188  Bcast:10.255.255.255  Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1347443 errors:0 dropped:0 overruns:0 frame:0
TX packets:865328 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100 
RX bytes:830641609 (792.1 Mb)  TX bytes:72315353 (68.9 Mb)
Interrupt:10 Base address:0xcc00
Формат вывода информации о интерфейсе программой ifconfig:
  • Характеристики канального уровня: Канальный уровень Link encap. Аппаратный MAC-адрес устройства HWaddr.
  • Характеристики сетевого уровня: IP-адрес интерфейса inet addr; широковещательный адрес интерфейса Bcast; маска подсети интерфейса Mask.
  • Флаги, метрика и MTU: Список установленных флагов интерфейса: включён UP; принимает широковещательные пакеты BROADCAST; принимает групповые пакеты MULTICAST. Установленный размер MTU и метрика Metric.
  • Информация о полученных пакетах RX: Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns.
  • Информация об отправленных пакетах: Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns, потерь несущей carrier, коллизий collisions; объем буфера передачи txqueuelen.
  • Объем переданных данных: Количество байтов полученных RX bytes и отправленных TX bytes через интерфейс.
  • Аппаратные параметры: Номер линии IRQ Interrupt и адрес памяти Base address.
Назначение IP-адреса 10.0.0.1 первой Ethernet-карте
ifconfig eth0 10.0.0.1
Включение интерфейса
ifconfig eth0 10.0.0.1 up

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

route — утилита для настройки таблицы маршрутизации.
Просмотр таблицы маршрутизации
Вывод совпадает с выводом netstat -r:
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         185.185.68.1    0.0.0.0         UG    0      0        0 eth0
185.185.68.0    *               255.255.252.0   U     0      0        0 eth0
netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         185.185.68.1    0.0.0.0         UG    0      0        0 eth0
185.185.68.0    *               255.255.252.0   U     0      0        0 eth0
Добавление шлюза по умолчанию
route add default gw 192.168.0.1
Добавление маршрута в локальную сеть
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
Добавление маршрута в удаленную сеть
route add -net 192.57.66.0 netmask 255.255.255.0 gw 192.168.0.2
Удаление маршрута
route del -net 192.57.66.0 netmask 255.255.255.0 gw 192.168.0.2