Настройка сети
Общая информация о сетевых настройках системы
Имя компьютера
Имя хоста хранится в файле /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/
Вкратце. Ядро именует интерфейсы в виде 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
Для применения настроек необходимо перезапустить сеть:
# systemct 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:
- Внести изменения в файл /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
- Удалить файл /etc/net/ifaces/enp0s3/ipv4address:
# rm -rf /etc/net/ifaces/enp0s3/ipv4address
- Перезапустить службы network NetworkManager:
# systemctl restart network # systemctl restart NetworkManager
- Просмотреть статус интерфейсов:
$ nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN подключено полностью missing включено missing включено
- Создать новое подключение с именем native_enp0s3 с DHCP:
# 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).