- Sysadminium
- Получение информации о сетевых интерфейсах
- Настройка IP адреса
- Добавление статических маршрутов
- Итог
- Где NetworkManager хранит настройки (РЕШЕНО)
- Где NetworkManager хранит настройки сетевых подключений
- Все конфигурационные файлы NetworkManager
- Связанные статьи:
- Где в системах с systemd лежат файлы конфигурации сети и прочих сервисов?
Sysadminium
Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Ubuntu 22.04.
Получение информации о сетевых интерфейсах
В прошлой статье мы разобрали настройку сети в системе Debian 11, а в этой разберём всё тоже самое но для Ubuntu 22.04.
Посмотреть на доступные сетевые интерфейсы мы точно также можем с помощью утилиты lshw. И на сервере Ubuntu эта утилита предустановлена.
$ sudo lshw -C network *-network:0 description: Ethernet controller product: Virtio network device vendor: Red Hat, Inc. physical id: 12 bus info: pci@0000:00:12.0 version: 00 width: 64 bits clock: 33MHz capabilities: msix bus_master cap_list rom configuration: driver=virtio-pci latency=0 resources: irq:11 ioport:e0e0(size=32) memory:fea93000-fea93fff memory:fe40c000-fe40ffff memory:fea00000-fea3ffff *-virtio3 description: Ethernet interface physical id: 0 bus info: virtio@3 logical name: ens18 serial: 02:6e:f0:fb:d4:71 capabilities: ethernet physical configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.28.90.34 link=yes multicast=yes *-network:1 description: Ethernet controller product: Virtio network device vendor: Red Hat, Inc. physical id: 13 bus info: pci@0000:00:13.0 version: 00 width: 64 bits clock: 33MHz capabilities: msix bus_master cap_list rom configuration: driver=virtio-pci latency=0 resources: irq:10 ioport:e100(size=32) memory:fea94000-fea94fff memory:fe410000-fe413fff memory:fea40000-fea7ffff *-virtio4 description: Ethernet interface physical id: 0 bus info: virtio@4 logical name: ens19 serial: 82:dd:88:27:00:a5 capabilities: ethernet physical configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 link=yes multicast=yes
В этом примере у меня два сетевых интерфейса: ens18 (02:6e:f0:fb:d4:71) и ens19 (82:dd:88:27:00:a5). При этом ip адрес назначен только на ens18 (172.28.90.34).
Мы уже знаем что утилита lshw в основном используется, чтобы узнать имя и возможности сетевой карты, то есть информацию о железе. А для получения настроек сетевых интерфейсов нужно использовать команду – ip. Работает эта команда точно также как в Debian, поэтому заострять на ней внимание не буду.
$ ip addr show ens18 2: ens18: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 02:6e:f0:fb:d4:71 brd ff:ff:ff:ff:ff:ff inet 172.28.90.34/20 brd 172.28.95.255 scope global dynamic ens18 valid_lft 258376sec preferred_lft 258376sec inet6 fe80::6e:f0ff:fefb:d471/64 scope link valid_lft forever preferred_lft forever $ ip addr show ens19 3: ens19: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 82:dd:88:27:00:a5 brd ff:ff:ff:ff:ff:ff inet6 fe80::80dd:88ff:fe27:a5/64 scope link valid_lft forever preferred_lft forever
В примере выше видно, что ens18 имеет назначенный ip адрес, а ens19 нет. Но оба интерфейса активны (state UP).
Настройка IP адреса
Вот настройка сетевых интерфейсов при помощи конфигурационных файлов в Ubuntu значительно отличается от Debian. Это потому-что в Ubuntu используется система для управления сетью — Netplan. И нужно будет изучить конфигурационные файлы и команды этой системы.
Конфигурационные файлы Netplan находятся в каталоге «/etc/netplan«, а конфигурационный файл созданный при установки системы — «/etc/netplan/00-installer-config.yaml«.
Посмотрим на этот конфиг с помощью утилиты cat:
$ cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens18: dhcp4: true ens19: dhcp4: true version: 2
Такой формат конфигурационных файлов называется — YAML (произносится как «ямл»).
Разберём этот файл построчно:
- network: — говорит о том, что сейчас будем настраивать сеть;
- ethernets: — начинается настройка сетевых интерфейсов;
- ens18: — настраиваем интерфейс ens18;
- dhcp4: true — ip адрес будет получен по dhcp;
- dhcp4: true — ip адрес будет получен по dhcp;
Разбирать формат YAML не буду, просто покажу как назначить статичные ip адреса и отключить dhcp.
Число в имени файла — означает приоритет, и чем оно выше, тем выше приоритет у файла. Создадим новый конфиг, имя можно придумать любое, но чтобы этот файл стал главнее текущего, установим приоритет 02-:
$ sudo nano /etc/netplan/02-network.yaml network: ethernets: ens18: dhcp4: no addresses: [ 172.28.90.75/20 ] routes: - to: default via: 172.28.80.10 nameservers: addresses: [ 77.88.8.8, 77.88.8.1 ] ens19: dhcp4: no addresses: [ 192.168.0.10/24 ] version: 2
После создания конфигурационного файла проверим его на синтаксис:
Если в выводе пусто, значит конфигурация верна.
Теперь можно применить настройки:
После этого, вам придётся заново подключится к серверу по ssh, по другому ip адресу.
Итак, мы указали ip адреса для обоих интерфейсов, а также назначили на одном из низ шлюз по умолчанию (routes: — to default) и dns сервера (nameservers).
И запомните, на сервере Ubuntu 22.04, не нужно использовать утилиты ifdown и ifup. Здесь работает netplan, и применять настройки нужно с помощью этой утилиты, предварительно проверив конфигурацию.
Добавление статических маршрутов
Добавлять статические маршруты нужно также в уже знакомом файле «/etc/netplan/02-network.yaml«:
$ sudo nano /etc/netplan/02-network.yaml network: ethernets: ens18: dhcp4: no addresses: [ 172.28.90.75/20 ] routes: - to: default via: 172.28.80.10 - to: 192.168.5.0/24 via: 172.28.80.5 on-link: true nameservers: addresses: [ 77.88.8.8, 77.88.8.1 ] ens19: dhcp4: no addresses: [ 192.168.0.10/24 ] version: 2
При добавлении маршрута нужно указать:
- — to: 192.168.5.0/24 — префикс (сеть назначения);
- via: 172.28.80.5 — через какой шлюз нужно добираться до сети назначения;
- on-link: true — активировать маршрут при поднятии интерфейса.
Применим настройки и проверим маршрут с помощью команды ip:
$ sudo netplan apply $ ip route show default via 172.28.80.10 dev ens18 proto static 172.28.80.0/20 dev ens18 proto kernel scope link src 172.28.90.75 192.168.0.0/24 dev ens19 proto kernel scope link src 192.168.0.10 192.168.5.0/24 via 172.28.80.5 dev ens18 proto static onlink
В примере выше — 192.168.5.0/24 via 172.28.80.5 dev ens18 proto static onlink — и есть наш дополнительный статический маршрут.
Итог
Вот мы и прошли тему “Настройка сети на Ubuntu“.
Мы познакомились с системой Netplan. Научились настраивать сеть с помощью конфигурационных файлов /etc/netplan/**-имя.yaml. Узнали как проверить и применить настройки с помощью команды netplan.
Теперь можем указать ip адрес, адрес шлюза, адрес dns сервера, а также можем создать отдельные маршруты в системе Ubuntu 22.04
Где NetworkManager хранит настройки (РЕШЕНО)
NetworkManager поддерживает различные подключаемые модули, которые могут определять новые места хранения информации о конфигурации.
Основным конфигурационным файлом NetworkManager в который обычно вносят изменения, является /etc/NetworkManager/NetworkManager.conf. Вы можете посмотреть его содержимоео следующей командой:
cat /etc/NetworkManager/NetworkManager.conf
Кроме этого файла, настройки NetworkManager могут быть сохранены в директориях /etc/NetworkManager/conf.d и /usr/lib/NetworkManager/conf.d.
Для получения списка всех настроек NetworkManager, учитывающих все конфигурационные файлы, выполните команду:
NetworkManager --print-config
Где NetworkManager хранит настройки сетевых подключений
NetworkManager хранит настройки каждого подключения в отдельных текстовых файлах с расширением .nmconnection. Типичным местом хранения файлов настроек является директория /etc/NetworkManager/system-connections/. Кроме неё, файлы с подключениями могут располагаться в других местах, определяемых плагинами NetworkManager, например, настройки сетевых подключений по Bluetooth могут храниться в папке /var/run/NetworkManager/system-connections. Конфигурационным файлом NetworkManager является /etc/NetworkManager/NetworkManager.conf. Кроме этих основных мест, могут быть и другие пути, специфичные для дистрибутивов Linux.
Чтобы вывести список всех сетевых подключений и расположение их файлов конфигураций выполните команду:
nmcli -f NAME,DEVICE,FILENAME connection show
Все конфигурационные файлы NetworkManager
Итак, конфигурационными файлами NetworkManager являются следующие:
- /etc/NetworkManager/NetworkManager.conf — главный конфигурационный файл
- /etc/NetworkManager/conf.d — директория с конфигурационными файлами
- /usr/lib/NetworkManager/conf.d — системная директория с конфигурационными файлами (например, файл /usr/lib/NetworkManager/conf.d/20-connectivity.conf)
- /var/lib/NetworkManager/NetworkManager-intern.conf — внутренний файл конфигурации. Этот файл записывается и читается NetworkManager, и его значения конфигурации объединяются с конфигурацией из NetworkManager.conf. Изменения, вносимые в этот файл, будут перезаписаны
- /var/lib/NetworkManager/NetworkManager.state — файл с набором состояний
- /etc/NetworkManager/system-connections/ — директория, в которой хранятся проводные и беспроводные соединения
- /var/run/NetworkManager/system-connections/ — директория с некоторыми видами соединений, например, Интернет по Bluetooth модему
- /var/lib/NetworkManager/
- /etc/NetworkManager/dispatcher.d/
- /etc/NetworkManager/dnsmasq.d/
- /etc/NetworkManager/dnsmasq-shared.d/
Связанные статьи:
Где в системах с systemd лежат файлы конфигурации сети и прочих сервисов?
В дистрибутиве который у меня стоял раньше, сеть настраивалась в файле /etc/network/interfaces, всё понятно и красиво, как во всех гайдах в интернете. Но вот сейчас я поставил минт, и смотрю что в этом файле кроме локальной петли ничего нету. Я сразу подумал, как же тогда интерфейс при запуске сам поднялся то, если там не прописано чтобы он поднимался, там вообще ничего нет. Потом ещё заметил ненормальные названия интерфейсов и пошел гуглить. Из нагугленного понял, что виновник всей этой вакханалии и хаоса некий systemd, который кроме своей задачи запуска системы позволяет себе ещё что-то делать. Ну полез я в папку /etc/systemd/network, а там пусто. Ну и где мне теперь искать куда настройки сети прописаны? Гугл выдет только стандартный путь как в нормальных дистрибутивах.
mint на базе убунты а там netplan.io запилили вроде
cast intelfx
И как уже им пользоваться? Зачем они вообще всё это делают? Всё же прекрасно работало.
Ну и что это? Это же управление нетворк менеджером из терминала. Я и так в нетворк менеджере могу всё прописать. Мне надо знать где сами конфиги лежат в минте этом, и зачем оно так работает.
как во всех гайдах в интернете
Потом ещё заметил ненормальные названия интерфейсов
некий systemdНу и где мне теперь искать куда настройки сети прописаны?
Читай в документации к своему дистрибутиву. В линуксе есть несколько способов настройки сети — interfaces, network manager, networkd etc. Настраиваются они все по разному.
0 Имеем подсказку nmcli c s
1 Читаем man nmcli , в секции SEE ALSO находим nm-settings(5)
2 Внимательно читаем nm-settings(5)
3 Обращаем внимание в секции FILES на
/etc/NetworkManager/system-connections or distro plugin-specific location
Так зачем мне нетворк менеджер? Я и так могу в нетворк менеджере натыкать. Мне нужен сам файл где эти все настройки прописаны.
Ну так в минте этом только и в графической оболочке через нетворк менеджер и настраивается. Понаделали мусора какого-то, что теперь ничего не работает, ну за-то стильно, модно, молодёжно.
Имена интерфейсов можно назначать через правила udev привязав конкретное имя к конкретному MAC.
при этом само имя может быть любым.torvn77 ★★★★★ ( 17.08.19 17:18:54 MSK )
Последнее исправление: torvn77 17.08.19 17:19:38 MSK (всего исправлений: 1)Покажи вывод ls -l /etc/NetworkManager/system-connections/
А можно сделать чтобы всё по человечески было как раньше?
Ну так в минте этом только и в графической оболочке через нетворк менеджер и настраивается
Графические оболочки есть не только у NM. Но, если в минте действительно по умолчанию используется NM (что может быть не так, так как в первом же коммите сказали про убунтовский netplan), то и смотри в его файлы настройки, в чём проблема.
$ nmcli c s NAME UUID TYPE DEVICE Проводное соединение 1 2c02c64d-be77-36c5-af64-03aeec35aa65 ethernet ens5f5 Автоматически настроить TOTOLINK_N301RT f8091326-4f64-44c7-b513-94dcfbaf5576 wifi --
ls -l /etc/NetworkManager/system-connections/ итого 8 -rw------- 1 root root 402 авг 11 11:16 'Автоматически настроить TOTOLINK_N301RT' -rw------- 1 root root 369 авг 11 15:23 'Проводное соединение 1'
# cat /etc/NetworkManager/system-connections/Проводное\ соединение\ 1 [connection] id=Проводное соединение 1 uuid=2c02c64d-be77-36c5-af64-03aeec35aa65 type=ethernet autoconnect-priority=-999 permissions= timestamp=1565526199 [ethernet] cloned-mac-address=F4:6D:04:89:02:25 mac-address=F4:6D:04:89:02:25 mac-address-blacklist= [ipv4] dns-search= method=auto [ipv6] addr-gen-mode=stable-privacy dns-search= method=auto
Ну и что это такое? Файл с настройками интерфейса не так должен выглядеть.
- ens18: — настраиваем интерфейс ens18;
- ethernets: — начинается настройка сетевых интерфейсов;