Настройка сети
Общая информация о сетевых настройках системы
Имя компьютера
Имя хоста хранится в файле /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:
- Внести изменения в файл /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).