Настройка сети: различия между версиями

Материал из ALT Linux Wiki
(→‎Конфигурирование интерфейса: Добавлено про название интерфейсов)
м (Исправлена ошибка в команде)
 
(не показаны 2 промежуточные версии 2 участников)
Строка 180: Строка 180:
В модуле [[ЦУС]] [[Alterator-net-eth|Ethernet-интерфейсы]] можно выбрать, какой именно интерфейс какой подсистемой обслуживается.
В модуле [[ЦУС]] [[Alterator-net-eth|Ethernet-интерфейсы]] можно выбрать, какой именно интерфейс какой подсистемой обслуживается.
=== Название интерфейсов Ethernet ===
=== Название интерфейсов Ethernet ===
Эссе на тему имён: https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
Эссе на тему имён: https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/<br>
Частичное изложение статьи на русском: [[NetworkDevicesName]].


Вкратце. Ядро именует интервейсы в виде eth0, eth1 и так далее, но делает это случайным образом, если сетевых карт более одной (есть исключения, зависящие от дравера сетевой карты, либо от последовательности загрузки драйверов, если сетевые карты разные). С некоторых пор разработчики systemd, которые подмяли под себя в том числе и udev, решили именовать интерфейсы иначе, надеясь на то, что имена будут постоянными (они ошиблись: есть зависимость от ядра {{altbug|28955#c32}}, есть зависимость от физического количества сетевых карт).
Вкратце. Ядро именует интерфейсы в виде eth0, eth1 и так далее, но делает это случайным образом, если сетевых карт более одной (есть исключения, зависящие от драйвера сетевой карты, либо от последовательности загрузки драйверов, если сетевые карты разные). С некоторых пор разработчики systemd, которые подмяли под себя в том числе и [[udev]], решили именовать интерфейсы иначе, надеясь на то, что имена будут постоянными (они ошиблись: есть зависимость от ядра {{altbug|28955#c32}}, есть зависимость от физического количества сетевых карт).
 
Если не хочется использовать псевдопостоянные имена интерфейсов вида enp*, можно настроить переименование интерфейсов посредством [[udev]]. Это или механизм link-файлов, или обычные правила [[udev]]. Для генерации правил именования в зависимости от MAC-адреса существует пакет {{pkgL|udev-rule-generator-net}}, который создаёт файл {{path|/etc/udev/rules.d/70-persistent-net.rules}}. При этом использовать имена вида ethN не рекомендуется из-за того, что может получиться коллизия ({{altbug|32167}}, {{pkgL|udev-rule-generator-net}} использует etherN начиная {{since|1.5-alt1}}).


Если не хочется использовать псевдопостоянные имена интерфейсов вида enp*, можно настроить переименование интерфейсов посредсвом udev. Это или механизм link-файлов, или обычные правила udev. Для генерации правил именования в зависимости от 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 ===
Более подробно про настройку сети с помощью [[Etcnet]] можно [[Etcnet|почитать тут]].  
Более подробно про настройку сети с помощью [[Etcnet]] можно [[Etcnet|почитать тут]].  
Строка 241: Строка 243:


Для применения настроек необходимо перезапустить сеть:
Для применения настроек необходимо перезапустить сеть:
<syntaxhighlight lang="bash"># systemct restart network</syntaxhighlight>
<syntaxhighlight lang="bash"># systemctl restart network</syntaxhighlight>


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

Текущая версия от 18:30, 7 июля 2024

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

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

Имя хоста хранится в файле /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 и так далее, но делает это случайным образом, если сетевых карт более одной (есть исключения, зависящие от драйвера сетевой карты, либо от последовательности загрузки драйверов, если сетевые карты разные). С некоторых пор разработчики systemd, которые подмяли под себя в том числе и udev, решили именовать интерфейсы иначе, надеясь на то, что имена будут постоянными (они ошиблись: есть зависимость от ядра altbug #28955#c32, есть зависимость от физического количества сетевых карт).

Если не хочется использовать псевдопостоянные имена интерфейсов вида enp*, можно настроить переименование интерфейсов посредством udev. Это или механизм link-файлов, или обычные правила udev. Для генерации правил именования в зависимости от 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} …. Например:

# 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).