Ручная настройка сети в 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
# 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
Проверка подключения
Если у вас возникли проблемы с подключением к сети, необходимо убедиться, что:
- Сетевой интерфейс обнаружен и включён.
- Есть подключение к сети: подключён сетевой кабель или есть подключение к беспроводной сети.
- Сетевому интерфейсу присвоен IP-адрес.
- Правильно настроена таблица маршрутизации.
- Доступен локальный IP-адрес (пропинговать, например, шлюз по умолчанию).
- Доступен публичный IP-адрес (пропинговать, например, 8.8.8.8 — DNS-сервер Google Public DNS).
- Работает разрешение доменных имён (пропинговать, например, 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. Если вы знаете другие полезные способы настройки, пишите в комментариях!