Сетевые интерфейсы создаются автоматически для каждого обнаруженного сетевого устройства при загрузке ядра ОС.
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.254CentOS / 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::1Debian 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.1Debian 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::1Debian 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.4Debian 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 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