Настройка сети netplan в ubuntu

Ethernet Interfaces

Ethernet interfaces are identified by the system using predictable network interface names. These names can appear as eno1 or enp0s25. However, in some cases an interface may still use the kernel eth# style of naming.

Identify Ethernet Interfaces

To quickly identify all available Ethernet interfaces, you can use the ip command as shown below.

Another application that can help identify all network interfaces available to your system is the lshw command. This command provides greater details around the hardware capabilities of specific adapters. In the example below, lshw shows a single Ethernet interface with the logical name of eth0 along with bus information, driver details and all supported capabilities.

Ethernet Interface Logical Names

Interface logical names can also be configured via a netplan configuration. If you would like control which interface receives a particular logical name use the match and set-name keys. The match key is used to find an adapter based on some criteria like MAC address, driver, etc. Then the set-name key can be used to change the device to the desired logial name.

Ethernet Interface Settings

ethtool is a program that displays and changes Ethernet card settings such as auto-negotiation, port speed, duplex mode, and Wake-on-LAN. The following is an example of how to view supported features and configured settings of an Ethernet interface.

Статическое присвоение адресов

В этом случае IP-адреса на каждом компьютере
указываются вручную. Достоинства:

  • Сеть будет работать в любом из своих сегментов. То есть если из
    четырех сетевых компьютеров включены лишь два, то сеть между ними будет
    работать.
  • Не нужно роутера или DHCP сервера на
    каком-либо из компьютеров.

Недостаток в том, что нужно будет помнить какие адреса уже используются в
сети, чтобы при включении нового компьютера не дать ему уже используемый
адрес. Впрочем в небольшой сети не трудно посмотреть адрес на каждом
компьютере.

Лично я сторонник статических адресов в тех сетях где состав сети
небольшой (до 7-8 компьютеров) и при этом если в эту сеть не добавляются
постоянно новые компьютеры (например ноутбуки). Далее в этой статье будет
подразумеваться именно статический способ присвоения IP-адресов.

networkd-dispatcher for pre-up, post-up, etc. hook scripts

Users of the former may be familiar with using hook scripts (e.g pre-up, post-up, etc.) in their interfaces file. Netplan configuration does not currently support hook scripts in its configuration definition.

Instead to achieve this functionality with the , users can use networkd-dispatcher. The package provides users and packages hook points when specific network states are reached to aid in reacting to network state.

Note: If not on Ubuntu Server, but Desktop the network is driven by Network Manager — in that case you’d need NM Dispatcher scripts instead.

The that compares event timings between //

It is important to be aware that those hooks run asychronous; that is they will not block transition into another state.

The on converting an old hook to .

Самые распространенные параметры в файле /etc/netplan/*.yaml

Для начала разберемся какие самые распространенные параметры в этом файле могут быть.

network:

renderer: networkd — Выбор сетевого рендера. Выбран networkd

ethernets: — Блок с настройками сетевых интерфейсов.

ens160: — Имя первого сетевого интерфейса.

addresses: [192.168.3.13/24] — Статический IP-адрес сетевого интерфейса/Маска сети. На данный момент указан IPv4, можно также через запятую указать  IPv6(пишется в кавычках) — [192.168.3.13/24,“2001:1::1/64”] 

gateway4: 192.168.3.1 — Указание основного шлюза для IPv4.

gateway6: «2001:4::1»- Указание основного шлюза для IPv6.(пишется в кавычках)

dhcp4: yes/no — или true/false — включить/выключить получение сетевых настроек по DHCP для IPv4.

dhcp6: yes/no — или true/false — включить/выключить получение сетевых настроек по DHCP для IPv6.

macaddress: 52.54.00.6d.3c.59 — указание MAC-адреса.

nameservers:  — Блок с настройками DNS.

addresses: — IP-адреса DNS-серверов, можно несколько через запятую.

ens192: — Имя второго сетевого интерфейса.

addresses: [10.1.0.5/24]

version: 2

Объединение интерфейсов (bonds)

С помощью bonds мы можем объединить интерфейсы с целью обеспечения отказоустойчивости и/или повышения пропускной способности.

Пример настройки:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
        ens2f1: {}
    bonds:
        bond0:
            dhcp4: no
            interfaces:
            — ens2f0
            — ens2f1
            parameters:
                mode: active-backup
            addresses:
                — 192.168.122.195/24
            gateway4: 192.168.122.1
            mtu: 1500
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8

* в данном примере мы объединяем физические интерфейсы ens2f0 и ens2f1; настройка parameters mode указываем на тип объединения — доступны варианты:

  • balance-rr (задействуются оба интерфейса по очереди, распределение пакетов по принципу Round Robin).
  • active-backup (используется только один интерфейс, второй активируется в случае неработоспособности первого).
  • balance-xor (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy).
  • broadcast (задействуются оба интерфейса одновременно, пакеты передаются все интерфейсы).
  • 802.3ad (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy)
  • balance-tlb (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)

Синтаксис и опции nmcli

Утилита nmcli — многофункциональный и гибкий инструмент командной строки для настройки сети с помощью Network Mananger из консоли. Сначала рассмотрим ее синтаксис:

$ nncli опции объект команда

Чаще всего в nmcli мы будем использовать такие объекты:

  • device — управление сетевыми интерфейсами;
  • connection — управление соединениями;
  • networking — управление сетью в целом;
  • general — показывает состояние всех сетевых протоколов и NetworkManager в целом;
  • radio — управление сетевыми протоколами, wifi, ethernent и т д.

Команды для каждого объекта разные, а опции нам не будут интересны. Дальше рассмотрим примеры nmcli network manager.

Применение изменений в конфигурации сети и проверка

Я для себя выбрал конфигурацию — «Настройка статического IP-адреса «

Проверим конфигурацию на наличие ошибок и применим изменения.(Рис.6)

sudo netplan try

Если ошибок нет, то вы получите сообщение: «Вы хотите сохранить эти настройки?» Нажмите ENTER. 

Рис.6 — Проверяем конфигурацию на ошибки. Применяем конфигурацию.

Лично у меня настройки применились в 2/3 случаев сразу же после ввода «sudo netplan try» на всякий случай введём команду специально предназначенную для применения изменений сделанных в файле конфигурации(Рис.7):

sudo netplan apply

Проверим вступили ли изменения в силу:

ifconfig

Рис.7 — Применяем изменения и проверяем вступили ли они в силу.

Проверим доступен ли внешний ресурс.(Рис.8)

ping itdeer.ru

Рис.8 — Проверяем доступен ли внешний ресурс.

Всё отлично IP-адрес поменялся, сеть настроена, доступ в интернет есть!

Для более подробной настройки сети через Netplan читайте man.(Рис.9)

man netplan

Рис.9 — Команда для открытия man Netplana.

Ещё раз повторюсь!

ВНИМАНИЕ! Отступы слева в конфигурациях должны быть ОБЯЗАТЕЛЬНО и поставлены они должны быть ПРОБЕЛАМИ! В конфигурациях представленных в этой статье количество пробелов правильное, считайте или копируйте:)

Если вы поставите отступы клавишей «TAB», то на этапе проверки конфигурации на ошибки, вылезет ошибка — «Error while loading /etc/netplan/50-cloud-init.yaml, aborting./Ошибка при загрузке».

Если же вы решите написать всё в столбик без отступов, получите ошибку — «An error occured: the configuration could not be generated/Произошла ошибка: конфигурация не может быть сгенерирована».

Поделиться публикацией

Была ли вам полезна статья? Есть возможность

поддержать проект.

Вместо поскриптума

Если нужно выключить и включить сеть в операционной системе Linux, используем всё ту же известную нам команду ifconfig.

Например, следующей командой мы выключим сетевую карту eth0:

sudo ifconfig eth0 down

А вот команда, включающая сетевую плату в Linux:

sudo ifconfig eth0 up

Также мы можем полностью остановить работу сетевых интерфейсов:

service network stop

Либо так:

/etc/init.d/network stop

Теперь включаем всё обратно:

service network start

Либо так:

/etc/init.d/network restart

На этом всё. Если хотите получить более профессиональные навыки Linux-администрирования, добро пожаловать на специальный курс в OTUS:

По материалам статей:
— https://set-os.ru/network-linux-setup/;
— https://itshaman.ru/articles/54.

SSH

Чтобы подключиться к удалённой машине по SSH нужно, например, знать
IP машины, имя пользователя, пароль

Пример подключения:

ssh [email protected]

Если вы подключаетесь впервые, то получите предупреждение

The authenticity of host ‘192.168.0.2 (192.168.0.2)’ can’t be established.
ECDSA key fingerprint is SHA256:ABCDE/FGHIJKLMNOPQRSTUVWXYZ123456789ABCDEFG.
Are you sure you want to continue connecting (yes/no/)?

Это предупреждение отображается, потому что в файле

known_hosts

, отвечающем за
ивестные хосты нет записи о 192.168.0.2

Файл

known_hosts

находится в директории

Он содержит строки такого вида:

После того как вы выберете
yes вы увидите сообщение

Warning: Permanently added ‘192.168.0.2’ (ECDSA) to the list of known hosts.
ssh_dispatch_run_fatal: Connection to 192.168.0.2 port 22: Broken pipe

А в файле

known_hosts

появится новая запись

Если вы подключаетесь к хосту не в первый раз

ssh [email protected]

Нужно будет ввести пароль

[email protected]’s password:

После успешного ввода может появиться сообщение о последнем логине

Last login: Wed Nov 11 17:55:40 2020

Name Resolution

Name resolution as it relates to IP networking is the process of mapping IP addresses to hostnames, making it easier to identify resources on a network. The following section will explain how to properly configure your system for name resolution using DNS and static hostname records.

DNS Client Configuration

Traditionally, the file was a static configuration file that rarely needed to be changed or automatically changed via DCHP client hooks. Systemd-resolved handles name server configuration, and it should be interacted with through the command. Netplan configures systemd-resolved to generate a list of nameservers and domains to put in , which is a symlink:

To configure the resolver, add the IP addresses of the nameservers that are appropriate for your network to the netplan configuration file. You can also add an optional DNS suffix search-lists to match your network domain names. The resulting file might look like the following:

The search option can also be used with multiple domain names so that DNS queries will be appended in the order in which they are entered. For example, your network may have multiple sub-domains to search; a parent domain of , and two sub-domains, and .

If you have multiple domains you wish to search, your configuration might look like the following:

If you try to ping a host with the name of server1, your system will automatically query DNS for its Fully Qualified Domain Name (FQDN) in the following order:

If no matches are found, the DNS server will provide a result of notfound and the DNS query will fail.

Static Hostnames

Static hostnames are locally defined hostname-to-IP mappings located in the file . Entries in the file will have precedence over DNS by default. This means that if your system tries to resolve a hostname and it matches an entry in /etc/hosts, it will not attempt to look up the record in DNS. In some configurations, especially when Internet access is not required, servers that communicate with a limited number of resources can be conveniently set to use static hostnames instead of DNS.

The following is an example of a file where a number of local servers have been identified by simple hostnames, aliases and their equivalent Fully Qualified Domain Names (FQDN’s).

Name Service Switch Configuration

The order in which your system selects a method of resolving hostnames to IP addresses is controlled by the Name Service Switch (NSS) configuration file . As mentioned in the previous section, typically static hostnames defined in the systems file have precedence over names resolved from DNS. The following is an example of the line responsible for this order of hostname lookups in the file .

  • files first tries to resolve static hostnames located in .

  • mdns4_minimal attempts to resolve the name using Multicast DNS.

  • means that any response of notfound by the preceding mdns4_minimal process should be treated as authoritative and that the system should not try to continue hunting for an answer.

  • dns represents a legacy unicast DNS query.

  • mdns4 represents a Multicast DNS query.

To modify the order of the above mentioned name resolution methods, you can simply change the hosts: string to the value of your choosing. For example, if you prefer to use legacy Unicast DNS versus Multicast DNS, you can change the string in as shown below.

Как работает сеть?

Перед тем, как перейти к самим командам, давайте немного разберёмся в теории работы сети. Это нужно, чтобы вы не просто выполнили какие-то непонятные команды, а поняли всю суть того, что мы будем делать и как выполняется настройка локальной сети Ubuntu.

Компьютеры обмениваются между собой информацией с помощью пакетов. Все данные в сети интернет передаются с помощью пакетов небольшого размера. Если не углубляться в подробности, то каждый пакет содержит адрес отправителя, адрес получателя и сами данные. Эти адреса есть не что иное, как привычные нам IP-адреса. Кроме IP, у компьютера есть физический адрес, который используется для общения между компьютерами в локальной сети. Это MAC-адрес? и задается он производителем сетевой карты.

Как только компьютер подключился к сети, независимо от того проводное это соединение или беспроводное,  он может общаться только с компьютерами в локальной сети и только по физическим адресам. Для того, чтобы получить доступ в Глобальную сеть, машине в ней нужно получить IP-адрес. Для этого используется протокол DHCP. Если кратко: наш компьютер спрашивает все компьютеры в локальной сети, кто здесь DHCP-сервер, DHCP ему отвечает и выдаёт IP-адрес. Таким же образом компьютер узнаёт IP маршрутизатора, через который он может получить доступ к Сети, а затем пытается найти DNS-серверы или узнать стандартные у маршрутизатора. С теорией разобрались, перейдем к практике.

Настройка сети в Ubuntu Server 20.04

Есть два пути настройки сетевых интерфейсов:

  1. Получение IP адресов при помощи DHCP — автоматическая настройка
  2. Настройка статических IP адресов

Если вы используете какой либо маршрутизатор, то идем по первому пути. Но сначала давайте определимся с именами интерфейсов в нашей системе. Для этого воспользуемся командой ifconfig.

Да, на чистой системе данная утилита не установлена по умолчанию. Её необходимо будет установить. Ну или можно воспользоваться командой ip. Я же человек старых правил ))), мне все-таки по душе утилита ifconfig поэтому набираем:

Вывод команды покажет все имеющиеся в системе сетевые интерфейсы. В моей системе команда выдает следующий результат:

Как видим из вывода имеются три сетевых интерфейса: ; ; .

Интерфейс enp0s3 выступает в качестве WAN интерфейса для системы. Остальные два enp0s8 и enp0s9 подключены к двум локальным сетям. В дальнейшем мы их объединим в сетевой мост.

Настройка сети в Ubuntu Server используя networkd и DHCP.

И так с интерфейсами определились, давайте теперь настроим наш интерфейс, который смотрит в инет, на получение автоматических настроек сети по DHCP

Открываем файл настроек Netplan

Файл должен выглядеть следующим образом (если не так, то редактируем):

Далее применим изменения:

Если в синтаксисе нет ошибок, то изменения применятся через 120 секунд, ну или сразу если Вы нажмёте

Настройка сети в Ubuntu Server используя networkd и статические маршруты.

Если Вы пошли вторым путем и хотите настроить все IP адреса сами, то вот пример для настройки статических адресов:

  • addresses — это ip адрес который будет назначен вашей сетевой карте.
  • gateway4 — ip адрес вашего роутера
  • nameservers — тут перечисляются DNS сервера. Первый опять же наш роутер.
  • search — тут указываем домен в котором будет произведен поиск. Домен можно настроить при помощи DNS сервера

Далее сохраняем изменения:

Переходим к сетевым настройкам Linux

Узнав информацию о текущих подключениях, можно переходить к настройкам локальной сети в Linux. У нас есть 3 способа сделать это:
— через графическую оболочку;
— используя команду ifconfig либо инструмент Network Manager;
— используя конфигурационные файлы сетевого сервиса Network либо Networking.

В принципе, последний способ считается одним из самых удобных и надёжных.
Чтобы настроить сеть в Linux, нужно открыть файл, который содержит конфигурацию интерфейса. Здесь всё будет зависеть от того, какой именно Linux-дистрибутив используется.

Файл с параметрами сетевых подключений здесь:

/etc/network/interfaces

Чтобы поменять в Linux настройки сети, файл надо открыть с root-правами любым текстовым редактором. Например, используя nano:

sudo nano /etc/network/interfaces

Чтобы обеспечить автоматическое получение адресов от DHCP-сервера, нужно прописать:

allow-hotplug eth0
iface eth0 inet dhcp

Если же адрес нужно прописать статически, указываем:

allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2  
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

В этой конфигурации мы рассмотрели лишь пример обычной домашней сети, в которой адрес компьютера 192.168.1.2, а адрес DNS-сервера и шлюза (их функции обычно выполняет wifi-роутер) — 192.168.1.1.

Вариант № 2. RedHat-based дистрибутивы (OpenSuse, CentOS, Fedora)

Наш файл с настройками сети Linux находится здесь:

/etc/sysconfig/network-scripts/ifcfg-eth0

Мы открываем его с помощью nano или vim:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

Если нужно обеспечить автоматическое получение настроек от DHCP-сервера:

DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00-1C-1B-11-F6-07
ONBOOT=yes

А вот статический IP-адрес:

DEVICE=eth0
HWADDR=00-1C-1B-11-F6-07
IPADDR=192.168.1.2
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes

В этом случае IP-адреса DNS-серверов прописываются в файле:

/etc/resolv.conf

Вот, к примеру, для публичных DNS-серверов от Google:

nameserver 8.8.8.8
nameserver 8.8.4.4

В принципе, это всё, и настройка сети в Linux завершилась. Осталось лишь выполнить перезапуск сети:

service network restart

Можно и так:

/etc/init.d/network restart

Настройка TCP/IP в Linux для работы в сети Ethernet

Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных (, и др.), обычно поставляемые в . Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.

Параметры сети

Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:

IP-адрес — как уже говорилось в первой части статьи — это уникальный адрес машины, в формате четырех десятичных чисел, разделенных точками. Обычно, при работе в локальной сети, выбирается из частных диапазонов, например: 192.168.0.1

Маска подсети — так же, 4 десятичных числа, определяющие, какая часть адреса относиться к адресу сети/подсети, а какая к адресу хоста. Маска подсети является числом, которое складывается (в двоичной форме) при помощи логического И, с IP-адресом и в результате чего выясняется, к какой подсети принадлежит адрес. Например адрес 192.168.0.2 с  маской 255.255.255.0 принадлежит подсети 192.168.0.

Адрес подсети — определяется маской подсети. При этом, для петлевых интерфейсов не существует подсетей.

Широковещательный адрес — адрес, используемый для отправки широковещательных пакетов, которые получат все хосты подсети. Обычно, он равен адресу подсети со значением хоста 255, то есть для подсети 192.168.0 широковещательным будет 192.168.0.255, аналогично, для подсети 192.168 широковещательным будет 192.168.255.255. Для петлевых интерфейсов не существует широковещательного адреса.

IP адрес шлюза — это адрес машины, являющейся шлюзом по-умолчанию для связи с внешним миром. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети), потому что данным сетям некуда отправлять пакеты вне сети, то же самое относиться и к петлевым интерфейсам.

IP-адрес сервера имен (DNS — сервера) — адрес сервера преобразующего имена хостов в IP адреса. Обычно, предоставляется провайдером.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: