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

Материал из ALT Linux Wiki

Общая информация о сетевых настройках системы

Имя компьютера

Имя хоста хранится в файле /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: <access denied>
	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: <access denied>
	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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <NO-CARRIER,BROADCAST,MULTICAST,UP> 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

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

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

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

  • 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-интерфейсы можно выбрать, какой именно интерфейс какой подсистемой обслуживается.

Название интерфейсов Ethernet

Эссе на тему имён: https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
Частичное изложение статьи на русском: NetworkDevicesName.

Вкратце. Ядро именует интерфейсы в виде eth0, eth1 и так далее, но делает это случайным образом, если сетевых карт более одной (есть исключения, зависящие от драйвера сетевой карты, либо от последовательности загрузки драйверов, если сетевые карты разные). Поэтому udev переименовывает интерфейсы согласно правилу /lib/systemd/network/99-default.link. Как правило, имена будут постоянными, но периодически могут возникать проблемы. Например, была (есть?) зависимость от ядра altbug #28955#c32, была (есть?) зависимость от физического количества сетевых карт.

Для фиксации имён рекомендуется создавать свои собственные правила в /etc/systemd/network/10-<имя_интерфейса>.link [1]

Для генерации правил именования в зависимости от MAC-адреса также существует пакет udev-rule-generator-net, который создаёт файл /etc/udev/rules.d/70-persistent-net.rules. При этом использовать имена вида ethN не рекомендуется из-за того, что может получиться коллизия (altbug #32167, udev-rule-generator-net использует etherN начиная  с версии 1.5-alt1 ). После установки пакета будьте готовы к тому, что все сетевые настройки придётся делать заново, и вы можете остаться после перезагрузки без подключения к сети!

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

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

# systemctl restart network

IP-адрес, маску и шлюз можно изменить командами ip addr {add|change|replace|del } … и ip route {add|del|change|append|replace} …. Например:

# ip 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:

  1. Внести изменения в файл /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
    
  2. Удалить файл /etc/net/ifaces/enp0s3/ipv4address:
    # rm -rf /etc/net/ifaces/enp0s3/ipv4address
    
  3. Перезапустить службы network NetworkManager:
    # systemctl restart network
    # systemctl restart NetworkManager
    
  4. Просмотреть статус интерфейсов:
    $ nmcli general status
    STATE       CONNECTIVITY  WIFI-HW  WIFI      WWAN-HW  WWAN     
    подключено  полностью     missing  включено  missing  включено
    
  5. Создать новое подключение с именем native_enp0s3 с DHCP:
    # nmcli connection add con-name "native_enp0s3" type ethernet ifname enp0s3
    Подключение «native» (f3635967-1d55-47c9-8ed2-e68d737c572d) успешно добавлено.
    
  6. Активировать подключение:
    # nmcli connection up native_enp0s3
    Подключение успешно активировано (активный путь D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)
    
  7. Просмотреть состояние подключения:
    $ 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).