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

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

Сетевые интерфейсы создаются автоматически для каждого обнаруженного сетевого устройства при загрузке ядра ОС.
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, порт ввода/вывода.
  • Статистической информацией, характеризующей различные аспекты работы интерфейса. Например, количество переданных/полученных байтов/пакетов, число переполнений, коллизий и др. с момента создания интерфейса.

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

Debian/Ubuntu

Настройки сетевого интерфейса указываются в конфигурационном файле /etc/network/interfaces:
auto eth0
iface eth0 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

Ubuntu 16.04 LTS

Директивы сетевого интерфейса записываются в файл /etc/network/interfaces. В отличие от Debian и Ubuntu более ранних версий, интерфейсы именуются с префиксом ens, например — ens3:
auto ens3
iface ens3 inet static
    address 123.123.123.123
    netmask 255.255.255.0
    gateway 123.123.123.1
    dns-nameservers 141.8.194.254 141.8.197.254

Ubuntu 18.04 LTS

В этой версии ОС сеть может задаваться не с помощью networking, а с помощью утилиты netplan.
Конфигурационный файл сетевого интерфейса расположен в каталоге: /etc/netplan/50-cloud-init.yaml. Описание интерфейса выглядит следующим образом:
network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 185.185.68.210/22
      gateway4: 185.185.68.1
      nameservers:
        addresses:
          - 141.8.194.254
          - 141.8.197.254
Для применения изменений необходимо выполнить команду netplan apply. Она проверяет конфигурационный файл на наличие ошибок, применяет изменения и автоматически перезагружает интерфейс.

Redhat/Fedora/CentOS

В Redhat, Fedora или CentOS директория, отвечающая за присвоение постоянных 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.

CentOS

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

Debian/Ubuntu

IP-адрес добавляется на интерфейс в файле /etc/network/interfaces:
iface eth0 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway fe80::1

Ubuntu 16.04 LTS

От других систем семейства отличается имя интерфейса, вместо eth0 – ens3.
iface ens3 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway fe80::1

Ubuntu 18.04 LTS

В файл /etc/netplan/50-cloud-init.yaml нужно добавить:
addresses:
    - 2a0a:2b40:fa:a31::/64
gateway6: fe80::1
И применить изменения командой netplan apply.

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

IPv4

Чтобы назначить дополнительные IPv4-адреса на тот же самый интерфейс, необходимо создать виртуальный интерфейс в виде имя_интерфейса:номер, например eth0:0.
В остальном интерфейс настраивается аналогично физическому.
CentOS
$ cat /etc/sysconfig/network-scripts/ifcfg-eth1:0

DEVICE=eth1:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0
Debian/Ubuntu
$ cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto eth0
iface ens6 inet static
address 192.168.0.1
netmask 255.255.255.0

auto eth0:0
iface ens6:0 inet static
address 192.168.1.1
netmask 255.255.255.0
Ubuntu 16.04 LTS
Для данной ОС не требуется создавать виртуальный интерфейс, достаточно добавить второй IP-адрес на уже существующий, например:
$ cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto ens6
iface ens6 inet static
address 192.168.0.1
netmask 255.255.255.0

iface ens6 inet static
address 192.168.1.1
Ubuntu 18.04 LTS с netplan
В интерфейсе описываются необходимые адреса, роутинг происходит через директиву routes.
$cat /etc/netplan/50-cloud-init.yaml

network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 185.185.68.210/22
        - 141.8.198.107/22
      gateway4: 185.185.68.1
      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

IPv6

Несколько IPv6-адресов можно назначать на один интерфейс без создания виртуального. При этом gateway указывается только один раз. Например:
CentOS
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=yes
IPV6ADDR=2a0a:2b40::4:1701/64
IPV6ADDR_SECONDARIES="2a0a:2b40::4:1702/64 2a0a:2b40::4:1703/64"
Debian/Ubuntu
$ cat /etc/network/interfaces

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

iface eth0 inet6 static
address 2a0a:2b40::4:16d2
netmask 64
Ubuntu 16.04 LTS
$ cat /etc/network/interfaces

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

Nameservers

Необходимые директивы для nameservers добавляются в конфигурационный файл. Указать можно столько DNS-серверов, сколько необходимо.
CentOS
DNS1=8.8.8.8
DNS2=8.8.4.4
Ubuntu/Debian
dns-nameservers 8.8.8.8 8.8.4.4

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

Обратите внимание вы не сможете использовать любые IP-адреса из диапазона приватных. IP-адрес для каждого бокса задаётся при подключении бокса в сеть. Узнать нужный адрес для приватной сети можно обратившись в службу поддержки.
Узнав нужный IP-адрес для приватной сети можно приступать к самой настройке.
Для создания приватной сети между боксами необходимо настроить новый интерфейс — он уже добавлен, увидеть его можно в выводе утилиты ip
$ ip a
У боксов без приватной сети только два интерфейса: lo и eth/ens. У боксов с приватной сетью есть ещё один интерфейс eth/ens, изначально он выключен. Чтобы его включить, надо:
Ubuntu 18.04 LTS и старше
Добавить в файл /etc/netplan/50-cloud-init.yaml:
ens6:
  addresses:
  - 10.0.0.1/8
Важно соблюдать количество пробелов как в остальном файле.
Debian
Добавить в файл /etc/network/interfaces.d/50-cloud-init:
auto eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.0.0.0
CentOS
Создать файл /etc/sysconfig/network-scripts/ifcfg-eth1:
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 18.04+

Дописываем mtu в конфигурационный файл /etc/netplan/50-cloud-init.yaml сразу после имени интерфейса, например:
ens3:
  mtu: 1476
  addresses:
  - 185.185.68.210/22
Важно соблюдать количество пробелов как в остальном файле.
После чего перезагружаем сетевую службу командой netplan apply.

Debian

Редактируем файл /etc/network/interfaces, добавляя параметр вслед за описанием интерфейса:
auto ens3
iface ens3 inet static
mtu 1476
address 123.123.123.123
Перезагружаем сеть командой systemctl restart networking.

CentOS

Вносим в файл /etc/sysconfig/network строку:
MTU=1476
И перезагружаем сетевую службу: systemctl restart network.

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-карте

Назначение 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

Утилита 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

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

Чтобы применить изменения, необходимо перезапустить сервис.

Debian/Ubuntu

service networking restart
/etc/init.d/networking restart
systemctl restart networking

CentOS

/etc/init.d/network restart
systemctl restart network
2005–2025 ООО «СПРИНТХОСТ.РУ»
Входит в Реестр аккредитованных ИТ-компаний
и Реестр провайдеров хостинга
Лицензия №162552