Перейти к содержимому

Как поднять интерфейс в linux

  • автор:

Ручная настройка сети в Linux

Для доступа к сетевым картам в Linux используются так называемые интерфейсы. Интерфейсы это не файлы устройств и их нет в каталоге /dev. Интерфейсы создаются динамически и не всегда связаны с сетевыми картами. Например интерфейс ppp0 — это интерфейс VPNа, организованного по протоколу PPTP, а интерфейс lo это виртуальная сетевая карта с адресом localhost (127.0.0.1). В Linux имена интерфейсов традиционно состоят из мнемонического типа интерфейса и его порядкового номера. Карты ethernet доступны через интерфейсы eth0, eth1 и т.д. В системах, использующих systemd способ именования другой — интерфейсы имеют имена вида enp2s0 (en -Ethernet, p — PCI, 2 — номер на шине) Список всех интерфейсов можно посмотреть командой ifconfig -a или ip link .

Привязка интерфейса к карте

При наличии нескольких сетевых карт возникает вопрос о порядке их нумерации. В CentOS 6 эта задача возложена на подсистему обнаружения и конфигурации устройств — udev. В системах с systemd правила именования встроены в udev, но могот быть переопределены, как написано ниже.

Конфигурационный файл переименования интерфейсов обновляется автоматически при первом обнаружении очередной сетевой карты и находится в файле /etc/udev/rules.d/70-persistent-net.rules. Файл состоит из строк такого содержания:

# PCI device 0x1af4:0x1000 (virtio-pci) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR=="52:54:00:29:24:1e", ATTR=="1", KERNEL=="eth*", NAME="eth0" 

Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка).

ifcfg

Классическая утилита конфигурации сетевых интерфейсов ifcfg

#просмотр списка активных интерфейсов ifcfg #просмотр конфигурации конкретного интерфейса ifcfg eth0 #просмотр списка доступных интерфейсов ifcfg -a #настройка ip адреса и активация интерфейса ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up #деактивация интерфейса ifconfig eth0 down 

route

Настройка таблицы маршрутизации route

#добавление шлюза по умолчанию 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 #просмотр таблицы маршрутизации route #или netstat -r 

ip

В современных дистрибутивах линукса на смену ifconfig и route приходит универсальная утилита ip

#просмотр списка доступных интерфейсов ip link #просмотр статистики по интерфейсам ip -s link #просмотр ip адресов ip addr #просмотр таблицы маршрутизации ip route 

DNS

Адреса серверов DNS и имя локального домена вписываются в файл /etc/resolv.conf

search example.com nameserver 8.8.8.8 

Ручная настройка сети в ArchLinux

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

ArchLinux использует для настройки сети systemd/netctl . Для конфигурации используются файлы профилей, которые хранятся в /etc/netctl/ . В данном каталоге есть подкаталог examples/ из которого можно копировать файлы с образцами профилей в /etc/netctl/ . Например:

cp /etc/netctl/examples/ethernet-static /etc/netctl/enp1s0-work 

Содержимое enp1s0-work после редактирования

Interface=enp1s0 Connection=ethernet IP=static Address=('10.1.10.2/24') Gateway='10.1.10.1' DNS=('10.1.10.1') 

Базовые команды netctl

#активация профиля netctl start enp1s0-work #включение автоматической активации с текущими настройками профиля при старте системы netctl enable enp1s0-work #обновление конфигурации автостарта после изменения настроек профиля netctl reenable enp1s0-work 

Ручная настройка сети в Ubuntu 20 и старше

В Ubuntu 20 система скриптов ifup / ifdown заменена программой netplan , со своими конфигурационными файлами на языке YAML — /etc/netplan/имяфайла.yaml

Пример конфигурации

Здесь только секция ethernets, но могут быть секции для vlan, bonding и т.д. Массивы имеют две альтернативные формы записи — в квадратных скобках и построчно, где каждая строка начинается с «- «. link-local: [] — запрет IPV6

network: version: 2 renderer: networkd ethernets: enp3s0f0: link-local: [] addresses: - 192.168.56.110/24 routes: - to: 172.16.0.0/24 via: 192.168.56.100 gateway4: 192.168.56.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] 

Команды

netplan generate — генерация из файлов YAML конфигураций для бэкендов NetworkManager или systemd-networkd в каталогах /run/каталог_бэкенда/. Здесь же проходит валидация синтаксиса.

netplan apply — применение конфигурации

Ручная настройка сети в Ubuntu

Просмотр доступных интерфейсов — ifcfg -a

Файл конфигурации интерфейсов — /etc/network/interfaces . auto — говорит о том, что интерфейс надо конфигурировать при старте системы.

iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.254 auto eth0 iface eth1 inet dhcp auto eth1 

После смены настроек в /etc/network/interfaces , необходимо отключить и снова включить интерфейс.

ifdown eth0 ifup eth0 

Ручная настройка сети в CentOS 6

Общие настройки сети

Файл /etc/sysconfig/network используется стартовыми скриптами и содержит ключевые параметры — нужна ли сеть, нужно ли конфигурировать IP v6, имя компьютера. Сюда можно вписать шлюз по умолчанию, но CentOS 6 ориентируется на динамическое подкючение к сетям через WiFi и вписывает его в конфигурацию подходящего интерфейса.

NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=wwww.example.com GATEWAY=10.10.10.1 

Конфигурация интерфейса

Файлы в каталоге /etc/sysconfig/network-scripts с именами вида ifcfg-eth0

Интерфейс, получающий адрес по DHCP

# динамическая конфигурация интерфейса ONBOOT="yes" DEVICE="eth0" BOOTPROTO="dhcp" 
# статическая конфигурация интерфейса ONBOOT="yes" DEVICE="eth1" BOOTPROTO="static" IPADDR=145.14.137.221 PREFIX=24 # конфигурация шлюза и DNS GATEWAY=192.168.1.1 DEFROUTE=yes DNS1=192.168.1.14 # NM - NetworkManager - графическая оболочка + автоматизация настроек NM_CONTROLLED="no" 

Дополнительный IP адрес на интерфейсе eth1

ONBOOT=no DEVICE=eth1:0 BOOTPROTO=static IPADDR=172.16.12.6 NETMASK=255.255.0.0 # следующие два параметра можно не писать # они вычисляются из IP и маски BROADCAST=172.16.255.255 NETWORK=172.16.0.0 

Инициализация VLAN на eth1

DEVICE=eth1.72 VLAN=yes VLAN_TRUNK_IF=eth1 BOOTPROTO=static IPADDR=10.10.0.1 NETMASK=255.255.255.192 ONBOOT=yes 

Настройка DNS

Файл /etc/resolv.conf

# мой домен, для подстановки в короткие имена search example.com # сервер DNS nameserver 8.8.8.8 

Ручная настройка имен хостов файл /etc/hosts

127.0.0.1 localhost.localdomain localhost ANY ::1 localhost6.localdomain6 localhost6 194.87.0.50 www.ru 

Настройка брандмауэра

Файл /etc/sysconfig/system-config-firewall правила для настройки программой system-config-firewall

Файл /etc/sysconfig/iptables текущие правила, сохраненные на случай перезагрузки.

После ручного изменения правил их можно сохранить командой service iptables save

Настройка сети

Имя хоста хранится в файле /etc/hostname . В файле также может храниться доменное имя системы, если таковое имеется.

Просмотреть имя компьютера можно, выполнив команду:

$ hostname pbs.test.alt
$ cat /etc/hostname pbs

Изменение имени компьютера:

# hostnamectl set-hostname new.test.alt 

Утилита hostname позволяет задать имя компьютера временно, до первой перезагрузки:

# hostname new.test.alt 

Сетевые карты

Список доступных сетевых карт:

$ lspci | grep -i 'net' 00:14.3 Network controller: Intel Corporation Alder Lake-P PCH CNVi WiFi (rev 01) 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (16) I219-V (rev 01) 

Более подробная информация о сетевых картах:

$ lspci -v | grep -i 'net' -A 6 00:14.3 Network controller: Intel Corporation Alder Lake-P PCH CNVi WiFi (rev 01) Subsystem: Intel Corporation Wi-Fi 6 AX201 160MHz Flags: bus master, fast devsel, latency 0, IRQ 16 Memory at 601d1cc000 (64-bit, non-prefetchable) [size=16K] Capabilities: Kernel driver in use: iwlwifi -- 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (16) I219-V (rev 01) Subsystem: Lenovo Device 50a0 Flags: bus master, fast devsel, latency 0, IRQ 166 Memory at ae400000 (32-bit, non-prefetchable) [size=128K] Capabilities: Kernel driver in use: e1000e

Обратите внимание, последняя строка это модуль ядра, который использует ваша сетевая карта.

Просмотреть модель сетевого адаптера и используемый драйвер также можно с помощью команды inxi (должен быть установлен пакет inxi ):

$ inxi -N Network: Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi Device-2: Intel Ethernet I219-V driver: e1000e

Чтобы проверить, был ли драйвер загружен, можно выполнить команду dmesg :

# dmesg | grep iwlwifi [ 6.400593] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002) [ 6.423137] iwlwifi 0000:00:14.3: loaded firmware version 72.daa05125.0 so-a0-hr-b0-72.ucode op_mode iwlmvm [ 6.492488] iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6 AX201 160MHz, REV=0x370 … [ 6.688421] iwlwifi 0000:00:14.3 wlp0s20f3: renamed from wlan0
# dmesg | grep e1000e [ 6.268828] e1000e: Intel(R) PRO/1000 Network Driver … [ 6.701757] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0 [ 10.215301] e1000e 0000:00:1f.6 enp0s31f6: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx Rx/Tx

Udev назначает имена сетевых интерфейсов в соответствии со схемой именования, в которой тип устройства обозначается двухбуквенным префиксом: en (проводной/Ethernet), wl (беспроводной/WLAN) или ww (WWAN).

Смена имени интерфейса описана в разделе Именование сетевых интерфейсов.

Имена как проводных, так и беспроводных интерфейсов можно узнать, выполнив команду ip link :

$ ip link 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s31f6: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 9c:2d:cd:6f:c4:a3 brd ff:ff:ff:ff:ff:ff 3: wlp0s20f3: mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000 link/ether 3c:21:9c:ae:56:d3 brd ff:ff:ff:ff:ff:ff

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

Включение и выключение интерфейса производится командой ip link set интерфейс up .

Получение информации о сетевых настройках

IP-адрес

Для получения информации о сетевом адресе компьютера, воспользуемся командой ip addr show либо кратким вариантом этой же команды ip a :

$ ip addr show 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:87:a2:24 brd ff:ff:ff:ff:ff:ff inet 192.168.0.123/24 brd 192.168.0.255 scope global noprefixroute enp0s3 valid_lft forever preferred_lft forever inet6 fd47:d11e:43c1:0:a00:27ff:fe87:a224/64 scope global dynamic mngtmpaddr valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe87:a224/64 scope link valid_lft forever preferred_lft forever
  • enp0s3 — имя сетевого интерфейса;
  • link/ether 08:00:27:87:a2:24 — MAC-адрес сетевой карты;
  • inet 192.168.0.123/24 — IP-адрес.

Если сетевой кабель не будет физически подключен к разъему сетевой карты, в выводе команды ip a появится слово NO-CARRIER:

$ ip a … 2: enp0s3: mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 08:00:27:87:a2:24 brd ff:ff:ff:ff:ff:ff inet 192.168.0.123/24 brd 192.168.0.255 scope global noprefixroute enp0s3

Команда ethtool имя_интерфейса покажет некоторые характеристики, с которыми работает сетевая карта:

# ethtool enp0s3 Settings for enp0s3: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Auto-negotiation: on Port: Twisted Pair PHYAD: 1 Transceiver: internal MDI-X: on (auto) Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: yes

Посредством команды ethtool также можно изменять эти характеристики.

Шлюз по умолчанию

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

Команда ip route show (или ее краткий вариант ip r ) покажет шлюз:

$ ip route show default via 192.168.0.1 dev enp0s3 proto static metric 100 192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.123 metric 100 

Ping

Для проверки достижимости узла используется утилита ping :

$ ping altlinux.org PING altlinux.org (194.107.17.137) 56(84) bytes of data. 64 bytes from jabber.altlinux.org (194.107.17.137): icmp_seq=1 ttl=58 time=31.6 ms 64 bytes from jabber.altlinux.org (194.107.17.137): icmp_seq=2 ttl=58 time=31.6 ms 64 bytes from jabber.altlinux.org (194.107.17.137): icmp_seq=3 ttl=58 time=31.6 ms 64 bytes from jabber.altlinux.org (194.107.17.137): icmp_seq=4 ttl=58 time=31.4 ms 64 bytes from jabber.altlinux.org (194.107.17.137): icmp_seq=5 ttl=58 time=31.4 ms 64 bytes from jabber.altlinux.org (194.107.17.137): icmp_seq=6 ttl=58 time=31.6 ms ^C --- altlinux.org ping statistics --- 6 packets transmitted, 6 received, +1 errors, 0% packet loss, time 5010ms rtt min/avg/max/mdev = 31.359/31.523/31.637/0.101 ms

Для остановки используйте +.

Конфигурирование интерфейса

Варианты управления сетевыми настройками интерфейсов в ОС «Альт»:

  • Etcnet — настройки берутся исключительно из файлов находящихся в каталоге настраиваемого интерфейса /etc/net/ifaces/ . Настройки сети могут изменяться либо в ЦУС (модуль Ethernet-интерфейсы), либо напрямую через редактирование файлов /etc/net/ifaces/ .
  • Network Manager — обеспечивает базовые операции с сетевыми интерфейсами. Управлять настройками можно через графический интерфейс (nm-applet) или консольный инструмент nmcli . Файлы с настройками находятся в каталоге /etc/NetworkManager/system-connections .
  • systemd-networkd — системная служба для управления сетевыми настройками. Её задачей является обнаружение и настройка сетевых устройств по мере их появления, а также создание виртуальных сетевых устройств. Настройки находятся в каталоге /etc/systemd/network/ . При стандартной установке ОС «Альт» эта служба (пакет systemd-networkd ) не устанавливается.

В модуле ЦУС Ethernet-интерфейсы можно выбрать, какой именно интерфейс какой подсистемой обслуживается.

Etcnet

Более подробно про настройку сети с помощью Etcnet можно почитать тут.

Настройки сети могут изменяться либо в ЦУС (модуль Ethernet-интерфейсы), либо напрямую через редактирование файлов /etc/net/ifaces/ .

Файлы настройки сети для интерфейса enp0s3:

# ls -1 /etc/net/ifaces/enp0s3 ipv4address ipv4route options resolv.conf
  • файл ipv4address — содержит IP-адрес с длиной маски;
  • файл ipv4route — содержит маршрут по умолчанию;
  • файл options — содержит настройки конфигурации;
  • файл resolv.conf — содержит DNS-сервер.

Пример содержимого файла /etc/net/ifaces/enp0s3/options :

BOOTPROTO=dhcp TYPE=eth NM_CONTROLLED=no DISABLED=no CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=dhcp4 CONFIG_IPV4=yes SYSTEMD_CONTROLLED=no ONBOOT=yes CONFIG_IPV6=no 

Параметр BOOTPROTO отвечает за способ получения сетевой картой сетевого адреса и может принимать значения:

  • static — адреса и маршруты будут взяты из файлов ipv4address и ipv4route ;
  • dhcp — интерфейс будет сконфигурирован по DHCP;
  • ipv4ll — интерфейс будет сконфигурирован с помощью IPv4LL (link-local). Это значит, что из сети 169.254.0.0/16 (169.254.0.1-169.254.255.254) будет подобран ещё не использованный адрес и назначен на интерфейс.

Для настройки статического IP-адреса для интерфейса enp0s3 необходимо изменить запись BOOTPROTO=dhcp на BOOTPROTO=static в файле /etc/net/ifaces/enp0s3/option .

Затем нужно задать IP-адрес и маску сети, например 192.168.0.48/255.255.255.0, для этого в файл /etc/net/ifaces/enp0s3/ipv4address запишем параметры соединения:

# echo 192.168.0.48/24 > /etc/net/ifaces/enp0s3/ipv4address 

Примечание: Если файл не существовал, он будет создан, иначе — его содержимое будет перезаписано.

Если сетевая карта предполагает наличие двух IP-адресов, то в файл ipv4address следует добавить ещё один адрес (обратите внимание на то, что используется «>>» вместо «>»; с «>» файл перезапишется, с «>>» вывод предыдущей команды будет дописан в конец файла):

# echo 192.168.0.148/24 >> /etc/net/ifaces/enp0s3/ipv4address 

Далее запишем в файл /etc/net/ifaces/enp0s3/ipv4route имя шлюза по умолчанию (например, 192.168.0.1):

# echo default via 192.168.0.1 > /etc/net/ifaces/enp0s3/ipv4route 

Если необходимо, можно создать файл с описанием dns-сервера /etc/net/ifaces/enp0s3/resolv.conf :

# echo nameserver 192.168.0.9 > /etc/net/ifaces/enp0s3/resolv.conf 

Если у вас два dns (второй, например, 192.168.1.9), то его описание также нужно добавить в этот файл:

# echo nameserver 192.168.1.9 >> /etc/net/ifaces/enp0s3/resolv.conf 

Для применения настроек необходимо перезапустить сеть:

# systemct restart network 

IP-адрес, маску и шлюз можно изменить командами ip addr и ip route . Например:

# addr add 192.168.0.140/24 dev enp0s3 # ip route add dev enp0s3 192.168.0.240 

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

Network Manager

Более подробно про настройку сети с помощью NetworkManager можно почитать тут.

Пример настройки сетевого интерфейса enp0s3 в Network Manager, если он раньше управлялся Etcnet:

    Внести изменения в файл /etc/net/ifaces/enp0s3/options :

BOOTPROTO=static TYPE=eth NM_CONTROLLED=yes DISABLED=yes CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=static CONFIG_IPV4=yes SYSTEMD_CONTROLLED=no ONBOOT=yes CONFIG_IPV6=no 
# rm -rf /etc/net/ifaces/enp0s3/ipv4address 
# systemctl restart network # systemctl restart NetworkManager 
$ nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN подключено полностью missing включено missing включено
# nmcli connection add con-name "native_enp0s3" type ethernet ifname enp0s3 Подключение «native» (f3635967-1d55-47c9-8ed2-e68d737c572d) успешно добавлено.
# nmcli connection up native_enp0s3 Подключение успешно активировано (активный путь D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4) 
$ nmcli connection show native_enp0s3

Если необходимо, изменить подключение native_enp0s3 с DHCP на Static:

# nmcli connection modify native_enp0s3 connection.autoconnect yes ipv4.method manual ipv4.address 192.168.0.40/24 ipv4.gateway 192.168.0.1 ipv4.dns 192.168.0.4 ipv4.dns-search test.alt # nmcli connection up native_enp0s3 
  • connection.autoconnect yes — поднимать соединение при загрузке системы;
  • ipv4.method manual — соединение статическое;
  • ipv4.addresses — IP-адрес и маска;
  • ipv4.gateway — IP-адрес шлюза;
  • ipv4.dns — IP-адрес DNS-сервера;
  • ipv4.dns-search — домен поиска.

Содержимое конфигурационного файла /etc/NetworkManager/system-connections/native_enp0s3.nmconnection :

[connection] id=native_enp0s3 uuid=bfafb5ea-6915-4f89-844c-d53b19477d80 type=ethernet interface-name=enp0s3 timestamp=1697205960 [ethernet] [ipv4] address1=192.168.0.41/24,192.168.0.1 dns=192.168.0.4; dns-search=test.alt; method=manual [ipv6] addr-gen-mode=default method=auto [proxy] 

Systemd-networkd

Более подробно про настройку сети можно почитать тут.

Для использования службы systemd-networkd следует остановить все остальные службы управления сетевыми интерфейсами:

# systemctl disable --now network NetworkManager && systemctl enable --now systemd-networkd 

Проверка подключения

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

  1. Сетевой интерфейс обнаружен и включён.
  2. Есть подключение к сети: подключён сетевой кабель или есть подключение к беспроводной сети.
  3. Сетевому интерфейсу присвоен IP-адрес.
  4. Правильно настроена таблица маршрутизации.
  5. Доступен локальный IP-адрес (пропинговать, например, шлюз по умолчанию).
  6. Доступен публичный IP-адрес (пропинговать, например, 8.8.8.8 — DNS-сервер Google Public DNS).
  7. Работает разрешение доменных имён (пропинговать, например, altinux.org).

Как поднять сетевой интерфейс в Linux без IP адреса

Чтобы поднять сетевой интерфейс в Linux без IP адреса, достаточно выполнить команду:

ip link set eth1 up

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

auto eth1 iface eth1 inet manual up ifconfig eth1 0.0.0.0 up down ifcofnig eth1 down
  • Нажмите, чтобы открыть на Facebook (Открывается в новом окне)
  • Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Pinterest (Открывается в новом окне)
  • Нажмите, чтобы поделиться на LinkedIn (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Tumblr (Открывается в новом окне)
  • Нажмите, чтобы поделиться в Telegram (Открывается в новом окне)
  • Ещё
  • Нажмите, чтобы поделиться записями на Pocket (Открывается в новом окне)
  • Нажмите, чтобы поделиться на Reddit (Открывается в новом окне)
  • Нажмите, чтобы поделиться в WhatsApp (Открывается в новом окне)
  • Нажмите для печати (Открывается в новом окне)

Настройка сетевого интерфейса Linux

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

Мы разберемся как установить утилиту в популярных дистрибутивах, как её использовать и какие опции она поддерживает, а потом рассмотрим примеры работы.

Table of Contents

  • Настройка сетевого интерфейса Linux
    • 1. Синтаксис и опции ethtool
    • 2. Установка ethtool
    • 3. Информация про сетевые интерфейсы
    • 4. Изменение настроек интерфейса
    • 5. Просмотр драйвера
    • 6. Статистика интерфейса
    • 7. Управление светодиодом
    • 8. Сохранение настроек

    Настройка сетевого интерфейса Linux

    1. Синтаксис и опции ethtool

    Синтаксис ethtool довольно простой, утилите достаточно передать опции и имя сетевого интерфейса, с которым вы хотите работать:

    $ ethtool опции интерфейс параметры

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

    • —version — выводит версию утилиты;
    • -g, —show-ring — позволяет посмотреть информацию о буфере RX и TX пакетов;
    • -G, —set-ring — позволяет установить размер буфера RX и TX пакетов, работает только для беспроводного интерфейса;
    • -i, —driver — выводит имя используемого драйвера;
    • -P, —show-permaddr — выводит постоянный MAC адрес устройства;
    • -r, —negotiate — выполняет повторное согласование скорости передачи данных, если включено автоматическое согласование;
    • -S, —statistics — выводит статистику;
    • -s, —change — позволяет менять настройки сетевого интерфейса;
    • -k, —show-offload — позволяет посмотреть какие технологии offload включены;
    • —reset — позволяет сбросить настройки различных компонентов сетевой карты, для сброса всех настроек используйте значение параметра all;

    Это далеко не все опции программы, все вы можете посмотреть выполнив такую команду в терминале, если программа установлена:

    2. Установка ethtool

    Обычно, утилита не поставляется по умолчанию вместе с дистрибутивом, но она есть в официальных репозиториях. Для установки утилиты в Ubuntu или Debian выполните:

    sudo apt install ethtool

    Для установки ethtool linux в Fedora, CentOS или REHL выполните:

    sudo yum install ethtool

    А для OpenSUSE команда будет выглядеть вот так:

    sudo zypper install ethtool

    3. Информация про сетевые интерфейсы

    Сначала надо посмотреть список сетевых интерфейсов в системе. Для этого выполните такую команду:

    В данном примере, я использовал фильтр egrep чтобы отсеять все интерфейсы, созданные контейнерами Docker, вам этого делать не обязательно. Здесь enp24s0 — это сетевой интерфейс Ethernet, который мы и будем использовать дальше. Выполнив утилиту ethtool без опций можно посмотреть текущие настройки сетевого интерфейса:

    sudo ethtool enp24s0

    Обратите внимание на пункт Supported link modes, здесь перечислены поддерживаемые скорости передачи данных и режимы дуплекса для них. Скорость измеряется в мегабитах и обычно доступны значения 10, 100 и 1000.

    Режим дуплекса, выводимый в параметре Duplex отвечает за приём и передачу данных. При значении full сетевая карта может одновременно принимать и отправлять данные, а режиме half только принимать или отправлять данные. Текущая скорость передачи данных выводится немного ниже параметра Duplex.

    Ещё есть параметр Advertised auto negotiation. Он отвечает за то будет ли скорость передачи данных и режим дуплекса настраиваться автоматически в зависимости от возможностей обоих соединённых устройств. По умолчанию этот параметр включён и рекомендуется его таким и оставить.

    4. Изменение настроек интерфейса

    Менять все эти настройки и многие другие можно с помощью опции -s. Например чтобы отключить автоматическое согласование параметров работы выполните:

    sudo ethtool -s enp24s0 autoneg off

    Затем можно вручную установить скорость передачи данных:

    sudo ethtool -s enp24s0 speed 10

    А режим дуплекса в half:

    sudo ethtool -s enp24s0 duplex half

    Всё это можно объединить в одну команду:

    sudo ethtool -s enp24s0 speed 10 duplex half autoneg off

    После изменения скорости передачи данных надо снова поднять сетевой интерфейс:

    sudo ip link set dev enp24s0 up

    Теперь при просмотре настроек сетевой карты вы увидите новые значения:

    5. Просмотр драйвера

    Чтобы посмотреть используемый драйвер используйте опцию -i:

    sudo ethtool -i enp24s0

    6. Статистика интерфейса

    Посмотреть статистику по переданных и полученных данных можно с помощью опции -S:

    sudo ethtool -S enp24s0

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

    sudo ip link set dev enp24s0 down

    Затем выгрузите модуль ядра с драйвером:

    sudo modprobe -r r8169

    Верните драйвер обратно и запустите устройство:

    sudo modprobe r8169

    sudo ip link set dev enp24s0 up

    После этого статистика будет сброшена:

    7. Управление светодиодом

    Если в вашем компьютере установлено несколько сетевых карт и вам надо определить какой их них принадлежит то или иное имя в системе, можно использовать опцию -p. Ей надо передать количество секунд на протяжении которых светодиод на разъёме должен гореть:

    sudo ethtool enp24s0 -p 100

    Таким образом вы можете подсветить интерфейс ethtool.

    8. Сохранение настроек

    Все выполненные с помощью ethtool настройки актуальны только до перезагрузки. Чтобы их сохранить после перезагрузки надо создать скрипт, выполняющий нужные команды после старта системы или же использовать возможности network-scripts. Например в Ubuntu или Debian можно добавить команду, которая выполняет нужные настройки в файл /etc/network/if-pre-up.d/ethtool. Например:

    sudo vi /etc/network/if-pre-up.d/ethtool

    /sbin/ethtool -s enp24s0 speed 10 duplex half

    Для CentOS следует добавить параметр ETHTOOL_OPTS в файл настройки сетевого интерфейса, Например:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-enp24s0

    ETHTOOL_OPTS=»speed 10 duplex half autoneg off»

    Выводы

    В этой небольшой статье мы рассмотрели как выполняется настройка сетевого интерфейса Linux с помощью утилиты ethtool. Если вы знаете другие полезные способы настройки, пишите в комментариях!

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

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