Netplan ошибка expected mapping

no way to make the network works on the new ubuntu server.
This is the netplan yaml file:

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:
       addresses: [192.168.0.183/24]
       gateway4: 192.168.0.250
       dhcp4: false
       nameservers: 
         addresses: [8.8.8.8,8.8.4.4]
       optional: true

running netplan —debug apply I get:

Error in network definition //etc/netplan/50-cloud-init.yaml line 1 column 1: expected mapping

I’m going crazy, it was so simple before! Why doesn’t work? what does it mean this error?

asked Oct 31, 2018 at 9:59

Giox's user avatar

1

removing dhcp4 setting fixed the issue…who knows!

maybe because if you enable the dhcp you have to set it to «true» and if you disable you have to set to «no»? I really hope not!!

debug info completely useless

answered Oct 31, 2018 at 10:07

Giox's user avatar

GioxGiox

2432 gold badges5 silver badges11 bronze badges

1

a netplan configuration is base on yaml, when looking your configuration. i think the indentation is error because its have 3 space. maybe you can try this

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:expected mapping
      addresses: [192.168.0.183/24]
      gateway4: 192.168.0.250
      dhcp4: false
      nameservers: 
        addresses: [8.8.8.8,8.8.4.4]
      optional: true

answered Oct 31, 2018 at 17:41

Zufar Dhiyaulhaq's user avatar

2

I always configure for a static ip the «dhcp» with the value of «no» like this
dhcp4: no

See an example below

network:
    ethernets:
        enp0s3:
            dhcp4: no
            dhcp6: no
            addresses: [10.4.1.174/21]
            gateway4: 10.5.1.6
            nameservers:
                addresses: [8.8.4.4,8.8.8.8]
            routes:
                - to: 192.168.0/24
                  via: 10.5.0.1
                  metric: 100
    version: 2

answered May 20, 2019 at 13:25

Luis Lopes's user avatar

My first time coming across this new way of networking and the «expected mapping» error. It’s a nice one.

I got a static IP working by editing etc/netplan/50-cloud-init.yaml but found that it was SUPER picky about the layout (spaces).

I used the examples given at

https://netplan.io/examples

By going to the line BEFORE the line mentioned in the error (given when it didn’t work) and pressing «return», a new line and the correct amount of indent was automatically inserted.

Restated… I had an error reported in line 12, so I went to the end of line 11 and pressed «return». A carriage return AND the (presumably) correct amount of indentation was automatically inserted.

If the error was at line 1 (as for the OP) I can only guess that the syntax is wrong.

answered Jul 28, 2019 at 6:11

DarkLord's user avatar

0

I learned that if the indents are not perfect, it does not work. Even though I went off another example, the example I found was incorrect. Here’s the contents of 00-installer-config.yaml that worked for me in case it helps someone else later:

network:
    ethernets:
        enol:
           dhcp4: no
           addresses: [192.168.0.45/24]
           gateway4: 192.168.0.1
           nameservers:
               addresses: [8.8.8.8, 8.8.8.4]
    version: 2

Here is a screenshot of 00-installer-config.yaml.

Nmath - on strike's user avatar

answered Oct 27, 2020 at 23:25

Thomas Moran's user avatar

I tried several formats

Ubuntu 20 (netplan apply command) only accepted config after I configured exact spaces before each line:

# This is the network config written by 'subiquity'

network:
 version: 2
 renderer: networkd
 ethernets:
  ens18:
   addresses: [172.16.1.95/24]
   gateway4: 172.16.1.1
  nameservers:
   addresses: [8.8.8.8/32, 8.8.4.4/32]

After that, error went away and I was able to connect to 172.16.1.95 server via SSH

answered Mar 4, 2021 at 23:21

Tomasi's user avatar

Solution 1

removing dhcp4 setting fixed the issue…who knows!

maybe because if you enable the dhcp you have to set it to «true» and if you disable you have to set to «no»? I really hope not!!

debug info completely useless

Solution 2

a netplan configuration is base on yaml, when looking your configuration. i think the indentation is error because its have 3 space. maybe you can try this

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:expected mapping
      addresses: [192.168.0.183/24]
      gateway4: 192.168.0.250
      dhcp4: false
      nameservers: 
        addresses: [8.8.8.8,8.8.4.4]
      optional: true

Related videos on Youtube

How to a Setup Static IP Address in Linux using Netplan - (2021) - Ubuntu 20.04 LTS Beginners Guide

10 : 41

How to a Setup Static IP Address in Linux using Netplan — (2021) — Ubuntu 20.04 LTS Beginners Guide

How to Use NetPlan in Ubuntu 18.04

11 : 42

How to Use NetPlan in Ubuntu 18.04

How to solve Invalid YAML at etc/netplan Ubuntu 18.04

07 : 45

How to solve Invalid YAML at etc/netplan Ubuntu 18.04

Configure Network Ubuntu Server 18.04

11 : 17

Configure Network Ubuntu Server 18.04

Configuring Ubuntu Networking with Netplan

08 : 57

Configuring Ubuntu Networking with Netplan

Comments

  • no way to make the network works on the new ubuntu server.
    This is the netplan yaml file:

    # To disable cloud-init's network configuration capabilities, write a file
    # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
    # network: {config:disabled}
    network:
      version: 2
      ethernets:
        enp0s3:
           addresses: [192.168.0.183/24]
           gateway4: 192.168.0.250
           dhcp4: false
           nameservers: 
             addresses: [8.8.8.8,8.8.4.4]
           optional: true
    

    running netplan —debug apply I get:

    Error in network definition //etc/netplan/50-cloud-init.yaml line 1 column 1: expected mapping

    I’m going crazy, it was so simple before! Why doesn’t work? what does it mean this error?

  • if you add a second device under ethernets, you may be able to configure that new network device to both dhcp4: false and dhcp6: false. in other words, it may be the initial network device which needs DHCP.

Recents

Related

Обновлено Обновлено: 16.02.2023
Опубликовано Опубликовано: 31.10.2019

Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:

apt install netplan

В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.

Немного о файле конфигурации
Настройка сети
Как применить настройки
Добавить маршрут
Объединение интерфейсов
Сетевой мост
Настройка vlans
Настройка WiFi
Удаление netplan
Решение возможных проблем

Конфигурационный файл

Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:

vi /etc/netplan/01-netcfg.yaml

* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.

YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).

Простая настройка сети

Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.

Приводим файл к следующему виду:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3:
            dhcp4: true
        ens7:
            dhcp4: no
            addresses: [192.168.122.195/24]
            routes:
              #- to: 0.0.0.0/0
              — to: default
                via: 192.168.122.1
            mtu: 1500
            nameservers:
                addresses: [8.8.8.8, 77.88.8.8]
                search: [ dmosk.local ]
        ens9:
            dhcp4: no
            addresses: [192.168.1.10/24, 192.168.1.20/24]
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8
                search: [ dmosk.local, dmosk.ru ]

* где:

  • version — версия YAML. На момент обновления статьи, была 2.
  • renderer — менеджер сети (networkd или NetworkManager).
  • ethernets — настройка сетевых адаптеров ethernet.
  • ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
  • dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
  • addresses — задает IP-адреса через запятую.
  • routes — настройка маршрутов. Для шлюза по умолчанию используем опцию и значение to: default. Ранее использовалась директива gateway4, но теперь она считается устаревшей (при применении настройки с ней система вернет предупреждение gateway4 has been deprecated, use default routes instead). Также обратите внимание на вариант с 0.0.0.0 — в более ранних версиях системы вариат с default выдаст ошибку, и нужно использовать конфигурацию с четыремя нулями.
  • mtu  — при желании, можно задать значение MTU.
  • nameservers — настройка серверов имен (DNS).
  • nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
  • nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.

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

Для применения настроек необходимо запустить команду netplan. Ее синтаксис:

netplan <опции> <команда>

Для проверки нашего конфигурационного файла вводим:

netplan —debug generate

 Для применения настроек вводим:

netplan apply

* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).

Статический маршрут

Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens9:
            dhcp4: no
            addresses: 192.168.1.10/24
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8
            routes:
              — to: 192.168.0.0/24
                via: 192.168.1.1
                on-link: true

* в данном примере мы настроили маршрут для сетевого интерфейса ens9. Данная настройка задается параметром routes:

  • to — направление маршрута (в какую сеть мы должны попадать). В данном примере, 192.168.0.0/24.
  • via — через какой шлюз мы попадаем в сеть to.
  • on-link — активация маршрута при поднятии линка на сетевом интерфейсе.

Объединение интерфейсов (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 (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)

Сетевой мост (bridge)

Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам KVM через единственный сетевой интерфейс сервера).

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

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
    bridges:
        br0:
            macaddress: ce:ce:ce:45:45:45
            interfaces:
                — ens2f0
            addresses:
                — 192.168.1.15/24
            gateway4: 
            nameservers:
                addresses:
                    — 77.88.8.8
                    — 8.8.8.8
            mtu: 1500
            parameters:
                stp: true
                forward-delay: 4
            dhcp4: false
            dhcp6: false

* где:

  • bridges — настройки для интерфейсов bridge.
  • bridges br0 — настройка интерфейса br0.
  • macaddress — физический адрес (MAC) интерфейса. Настройка важна для некоторых провайдеров VPS — без нее бридж может не заработать.
  • interfaces — перечисление интерфейсов, из которых собираем мост. В данном примере ens2f0.
  • addresses, gateway4, nameservers — сетевые настройки (IP-адрес, шлюз, сервер имен).
  • mtu — одноименный параметр. Для сетей ethernet обычно равен 1500.
  • parameters stp — включает или отключает устранение петель в сети. В данном примере включено.
  • parameters forward-delay — время в секундах в течение которого мост будет оставаться в состояниях «Listening» и «Learning».
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса. В нашем случае, отключает.

Подробнее про настройку сетвого моста для KVM в инструкции Настройка KVM на Ubuntu Server.

Vlan

Также мы можем настроить тегированный интерфейс vlan:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3: {}
    vlans: 
        vlan5:
            id: 5
            link: ens3
            dhcp4: no
            addresses: [10.0.0.15/24]
            gateway: 10.0.0.1

* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.

WiFi

Для подключения к беспроводной сети задаем следующие настройки:

network:
    version: 2
    renderer: networkd
    wifis:
        wlp2s0b1:
            dhcp4: no
            dhcp6: no
            addresses: [192.168.2.10/24]
            gateway4: 192.168.2.1
            nameservers:
                addresses: [192.168.2.1, 77.88.8.8]
            access-points:
                <имя WiFi сети (SSID)>:
                    password: wifi_password

* где:

  • wifis — определяет настойки для WiFi.
  • wlp2s0b1 — настройка для беспроводного сетевого адаптера.
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса.
  • addresses, gateway4, nameservers — настройка сети (IP-адрес, шлюз, сервер DNS).
  • access-points — настройка для подключения к беспроводной сети.
  • <имя WiFi сети (SSID)> — имя беспроводной сети, к которой будем подключаться.
  • password — пароль для подключения к беспроводной сети.

Отключение netplan и возврат к interfaces

При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.

1. Открываем настройку grub:

vi /etc/default/grub

2. Находим опцию GRUB_CMDLINE_LINUX и дописываем в нее параметр:

GRUB_CMDLINE_LINUX=»netcfg/do_not_use_netplan=true»

* если GRUB_CMDLINE_LINUX содержит другие настройки, то наш параметр добавляем через пробел.

3. Устанавливаем пакет ifupdown:

apt install ifupdown

4. Настраиваем сеть в файле:

vi /etc/network/interfaces

… например:

auto lo
iface lo inet loopback

auto ens5
iface ens5 inet dhcp

* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.

5. Применяем настройки загрузчика:

update-grub

И перезагружаем систему:

shutdown -r now

Возможные ошибки

1. Error in network definition *.yaml line xxx column yyy: expected mapping 

Ошибка появляется при проверке (generate) или применении (apply) настроек сети.

Причина: ошибка синтаксиса YAML.

Решение: внимательно смотрим на количество отступов, которое сделано для строки xxx. Количество пробелов должно точно соответствовать количеству в других строках. Если параметр вложенный, он также должен отделяться от родителя нужным количеством пробелов. Пример неправильной настройки:

network:
    version: 2
  renderer: networkd

* обратите внимание, что version имеет 4 пробела для отступа, а renderer — 2. Так как version и renderer равнозначные параметры для родителя network, они должны иметь одинаковое количество пробелов.

no way to make the network works on the new ubuntu server.
This is the netplan yaml file:

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:
       addresses: [192.168.0.183/24]
       gateway4: 192.168.0.250
       dhcp4: false
       nameservers: 
         addresses: [8.8.8.8,8.8.4.4]
       optional: true

running netplan —debug apply I get:

Error in network definition //etc/netplan/50-cloud-init.yaml line 1 column 1: expected mapping

I’m going crazy, it was so simple before! Why doesn’t work? what does it mean this error?

asked Oct 31, 2018 at 9:59

Giox's user avatar

1

removing dhcp4 setting fixed the issue…who knows!

maybe because if you enable the dhcp you have to set it to «true» and if you disable you have to set to «no»? I really hope not!!

debug info completely useless

answered Oct 31, 2018 at 10:07

Giox's user avatar

GioxGiox

2431 gold badge5 silver badges11 bronze badges

1

a netplan configuration is base on yaml, when looking your configuration. i think the indentation is error because its have 3 space. maybe you can try this

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:expected mapping
      addresses: [192.168.0.183/24]
      gateway4: 192.168.0.250
      dhcp4: false
      nameservers: 
        addresses: [8.8.8.8,8.8.4.4]
      optional: true

answered Oct 31, 2018 at 17:41

Zufar Dhiyaulhaq's user avatar

1

I always configure for a static ip the «dhcp» with the value of «no» like this
dhcp4: no

See an example below

network:
    ethernets:
        enp0s3:
            dhcp4: no
            dhcp6: no
            addresses: [10.4.1.174/21]
            gateway4: 10.5.1.6
            nameservers:
                addresses: [8.8.4.4,8.8.8.8]
            routes:
                - to: 192.168.0/24
                  via: 10.5.0.1
                  metric: 100
    version: 2

answered May 20, 2019 at 13:25

Luis Lopes's user avatar

My first time coming across this new way of networking and the «expected mapping» error. It’s a nice one.

I got a static IP working by editing etc/netplan/50-cloud-init.yaml but found that it was SUPER picky about the layout (spaces).

I used the examples given at

https://netplan.io/examples

By going to the line BEFORE the line mentioned in the error (given when it didn’t work) and pressing «return», a new line and the correct amount of indent was automatically inserted.

Restated… I had an error reported in line 12, so I went to the end of line 11 and pressed «return». A carriage return AND the (presumably) correct amount of indentation was automatically inserted.

If the error was at line 1 (as for the OP) I can only guess that the syntax is wrong.

answered Jul 28, 2019 at 6:11

DarkLord's user avatar

0

I learned that if the indents are not perfect, it does not work. Even though I went off another example, the example I found was incorrect. Here’s the contents of 00-installer-config.yaml that worked for me in case it helps someone else later:

network:
    ethernets:
        enol:
           dhcp4: no
           addresses: [192.168.0.45/24]
           gateway4: 192.168.0.1
           nameservers:
               addresses: [8.8.8.8, 8.8.8.4]
    version: 2

Here is a screenshot of 00-installer-config.yaml.

Nmath's user avatar

Nmath

11.4k8 gold badges23 silver badges52 bronze badges

answered Oct 27, 2020 at 23:25

Thomas Moran's user avatar

I tried several formats

Ubuntu 20 (netplan apply command) only accepted config after I configured exact spaces before each line:

# This is the network config written by 'subiquity'

network:
 version: 2
 renderer: networkd
 ethernets:
  ens18:
   addresses: [172.16.1.95/24]
   gateway4: 172.16.1.1
  nameservers:
   addresses: [8.8.8.8/32, 8.8.4.4/32]

After that, error went away and I was able to connect to 172.16.1.95 server via SSH

answered Mar 4, 2021 at 23:21

Tomasi's user avatar

no way to make the network works on the new ubuntu server.
This is the netplan yaml file:

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:
       addresses: [192.168.0.183/24]
       gateway4: 192.168.0.250
       dhcp4: false
       nameservers: 
         addresses: [8.8.8.8,8.8.4.4]
       optional: true

running netplan —debug apply I get:

Error in network definition //etc/netplan/50-cloud-init.yaml line 1 column 1: expected mapping

I’m going crazy, it was so simple before! Why doesn’t work? what does it mean this error?

asked Oct 31, 2018 at 9:59

Giox's user avatar

1

removing dhcp4 setting fixed the issue…who knows!

maybe because if you enable the dhcp you have to set it to «true» and if you disable you have to set to «no»? I really hope not!!

debug info completely useless

answered Oct 31, 2018 at 10:07

Giox's user avatar

GioxGiox

2431 gold badge5 silver badges11 bronze badges

1

a netplan configuration is base on yaml, when looking your configuration. i think the indentation is error because its have 3 space. maybe you can try this

# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config:disabled}
network:
  version: 2
  ethernets:
    enp0s3:expected mapping
      addresses: [192.168.0.183/24]
      gateway4: 192.168.0.250
      dhcp4: false
      nameservers: 
        addresses: [8.8.8.8,8.8.4.4]
      optional: true

answered Oct 31, 2018 at 17:41

Zufar Dhiyaulhaq's user avatar

1

I always configure for a static ip the «dhcp» with the value of «no» like this
dhcp4: no

See an example below

network:
    ethernets:
        enp0s3:
            dhcp4: no
            dhcp6: no
            addresses: [10.4.1.174/21]
            gateway4: 10.5.1.6
            nameservers:
                addresses: [8.8.4.4,8.8.8.8]
            routes:
                - to: 192.168.0/24
                  via: 10.5.0.1
                  metric: 100
    version: 2

answered May 20, 2019 at 13:25

Luis Lopes's user avatar

My first time coming across this new way of networking and the «expected mapping» error. It’s a nice one.

I got a static IP working by editing etc/netplan/50-cloud-init.yaml but found that it was SUPER picky about the layout (spaces).

I used the examples given at

https://netplan.io/examples

By going to the line BEFORE the line mentioned in the error (given when it didn’t work) and pressing «return», a new line and the correct amount of indent was automatically inserted.

Restated… I had an error reported in line 12, so I went to the end of line 11 and pressed «return». A carriage return AND the (presumably) correct amount of indentation was automatically inserted.

If the error was at line 1 (as for the OP) I can only guess that the syntax is wrong.

answered Jul 28, 2019 at 6:11

DarkLord's user avatar

0

I learned that if the indents are not perfect, it does not work. Even though I went off another example, the example I found was incorrect. Here’s the contents of 00-installer-config.yaml that worked for me in case it helps someone else later:

network:
    ethernets:
        enol:
           dhcp4: no
           addresses: [192.168.0.45/24]
           gateway4: 192.168.0.1
           nameservers:
               addresses: [8.8.8.8, 8.8.8.4]
    version: 2

Here is a screenshot of 00-installer-config.yaml.

Nmath's user avatar

Nmath

11.4k8 gold badges23 silver badges52 bronze badges

answered Oct 27, 2020 at 23:25

Thomas Moran's user avatar

I tried several formats

Ubuntu 20 (netplan apply command) only accepted config after I configured exact spaces before each line:

# This is the network config written by 'subiquity'

network:
 version: 2
 renderer: networkd
 ethernets:
  ens18:
   addresses: [172.16.1.95/24]
   gateway4: 172.16.1.1
  nameservers:
   addresses: [8.8.8.8/32, 8.8.4.4/32]

After that, error went away and I was able to connect to 172.16.1.95 server via SSH

answered Mar 4, 2021 at 23:21

Tomasi's user avatar

Обновлено Обновлено: 16.05.2022
Опубликовано Опубликовано: 31.10.2019

Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:

apt install netplan

В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.

Немного о файле конфигурации
Настройка сети
Как применить настройки
Добавить маршрут
Объединение интерфейсов
Сетевой мост
Настройка vlans
Настройка WiFi
Удаление netplan
Решение возможных проблем

Конфигурационный файл

Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:

vi /etc/netplan/01-netcfg.yaml

* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.

YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).

Простая настройка сети

Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.

Приводим файл к следующему виду:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3:
            dhcp4: true
        ens7:
            dhcp4: no
            addresses: [192.168.122.195/24]
            routes:
              — to: default
                via: 192.168.122.1
            mtu: 1500
            nameservers:
                addresses: [8.8.8.8, 77.88.8.8]
                search: [ dmosk.local ]
        ens9:
            dhcp4: no
            addresses: [192.168.1.10/24, 192.168.1.20/24]
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8
                search: [ dmosk.local, dmosk.ru ]

* где:

  • version — версия YAML. На момент обновления статьи, была 2.
  • renderer — менеджер сети (networkd или NetworkManager).
  • ethernets — настройка сетевых адаптеров ethernet.
  • ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
  • dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
  • addresses — задает IP-адреса через запятую.
  • routes — настройка маршрутов. Для шлюза по умолчанию используем опцию и значение to: default. Ранее использовалась директива gateway4, но теперь она считается устаревшей (при применении настройки с ней система вернет предупреждение gateway4 has been deprecated, use default routes instead).
  • mtu  — при желании, можно задать значение MTU.
  • nameservers — настройка серверов имен (DNS).
  • nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
  • nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.

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

Для применения настроек необходимо запустить команду netplan. Ее синтаксис:

netplan <опции> <команда>

Для проверки нашего конфигурационного файла вводим:

netplan —debug generate

 Для применения настроек вводим:

netplan apply

* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).

Статический маршрут

Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens9:
            dhcp4: no
            addresses: 192.168.1.10/24
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8
            routes:
              — to: 192.168.0.0/24
                via: 192.168.1.1
                on-link: true

* в данном примере мы настроили маршрут для сетевого интерфейса ens9. Данная настройка задается параметром routes:

  • to — направление маршрута (в какую сеть мы должны попадать). В данном примере, 192.168.0.0/24.
  • via — через какой шлюз мы попадаем в сеть to.
  • on-link — активация маршрута при поднятии линка на сетевом интерфейсе.

Объединение интерфейсов (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 (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)

Сетевой мост (bridge)

Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам KVM через единственный сетевой интерфейс сервера).

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

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
    bridges:
        br0:
            macaddress: ce:ce:ce:45:45:45
            interfaces:
                — ens2f0
            addresses:
                — 192.168.1.15/24
            gateway4: 
            nameservers:
                addresses:
                    — 77.88.8.8
                    — 8.8.8.8
            mtu: 1500
            parameters:
                stp: true
                forward-delay: 4
            dhcp4: false
            dhcp6: false

* где:

  • bridges — настройки для интерфейсов bridge.
  • bridges br0 — настройка интерфейса br0.
  • macaddress — физический адрес (MAC) интерфейса. Настройка важна для некоторых провайдеров VPS — без нее бридж может не заработать.
  • interfaces — перечисление интерфейсов, из которых собираем мост. В данном примере ens2f0.
  • addresses, gateway4, nameservers — сетевые настройки (IP-адрес, шлюз, сервер имен).
  • mtu — одноименный параметр. Для сетей ethernet обычно равен 1500.
  • parameters stp — включает или отключает устранение петель в сети. В данном примере включено.
  • parameters forward-delay — время в секундах в течение которого мост будет оставаться в состояниях «Listening» и «Learning».
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса. В нашем случае, отключает.

Подробнее про настройку сетвого моста для KVM в инструкции Настройка KVM на Ubuntu Server.

Vlan

Также мы можем настроить тегированный интерфейс vlan:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3: {}
    vlans: 
        vlan5:
            id: 5
            link: ens3
            dhcp4: no
            addresses: [10.0.0.15/24]
            gateway: 10.0.0.1

* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.

WiFi

Для подключения к беспроводной сети задаем следующие настройки:

network:
    version: 2
    renderer: networkd
    wifis:
        wlp2s0b1:
            dhcp4: no
            dhcp6: no
            addresses: [192.168.2.10/24]
            gateway4: 192.168.2.1
            nameservers:
                addresses: [192.168.2.1, 77.88.8.8]
            access-points:
                <имя WiFi сети (SSID)>:
                    password: wifi_password

* где:

  • wifis — определяет настойки для WiFi.
  • wlp2s0b1 — настройка для беспроводного сетевого адаптера.
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса.
  • addresses, gateway4, nameservers — настройка сети (IP-адрес, шлюз, сервер DNS).
  • access-points — настройка для подключения к беспроводной сети.
  • <имя WiFi сети (SSID)> — имя беспроводной сети, к которой будем подключаться.
  • password — пароль для подключения к беспроводной сети.

Отключение netplan и возврат к interfaces

При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.

1. Открываем настройку grub:

vi /etc/default/grub

2. Находим опцию GRUB_CMDLINE_LINUX и дописываем в нее параметр:

GRUB_CMDLINE_LINUX=»netcfg/do_not_use_netplan=true»

* если GRUB_CMDLINE_LINUX содержит другие настройки, то наш параметр добавляем через пробел.

3. Устанавливаем пакет ifupdown:

apt install ifupdown

4. Настраиваем сеть в файле:

vi /etc/network/interfaces

… например:

auto lo
iface lo inet loopback

auto ens5
iface ens5 inet dhcp

* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.

5. Применяем настройки загрузчика:

update-grub

И перезагружаем систему:

shutdown -r now

Возможные ошибки

1. Error in network definition *.yaml line xxx column yyy: expected mapping 

Ошибка появляется при проверке (generate) или применении (apply) настроек сети.

Причина: ошибка синтаксиса YAML.

Решение: внимательно смотрим на количество отступов, которое сделано для строки xxx. Количество пробелов должно точно соответствовать количеству в других строках. Если параметр вложенный, он также должен отделяться от родителя нужным количеством пробелов. Пример неправильной настройки:

network:
    version: 2
  renderer: networkd

* обратите внимание, что version имеет 4 пробела для отступа, а renderer — 2. Так как version и renderer равнозначные параметры для родителя network, они должны иметь одинаковое количество пробелов.

Содержание

  1. Настройка сети в Linux с помощью netplan
  2. Конфигурационный файл
  3. Простая настройка сети
  4. Применение настроек
  5. Error in network definition: expected mapping (check indentation) #58
  6. Comments
  7. Checks & detection
  8. Main deployment steps:
  9. Installation
  10. Let NetworkManager manage all devices on this system
  11. add configuration for bridge interface
  12. Рука помощи
  13. 01.04.2020
  14. Ubuntu управление сетевыми интерфейсами
  15. 1. Просмотр доступных сетевых интерфейсов
  16. 2. Настройка сети
  17. Настройка для Ubuntu 16.04 и ранее
  18. Настройка для Ubuntu 18.04 и более поздние
  19. Конфигурация сетевых интерфейсов через командную строку
  20. 3. Управление таблицей маршрутизации.
  21. Добавление статического маршрута в Ubuntu 16.04
  22. Добавление статического маршрута в Ubuntu 18.04
  23. Конфигурация маршрутов через командную строку

Настройка сети в Linux с помощью netplan

Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:

apt install netplan

В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.

Конфигурационный файл

Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:

* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.

YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).

Простая настройка сети

Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.

Приводим файл к следующему виду:

network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: true
ens7:
dhcp4: no
addresses: [192.168.122.195/24]
routes:
— to: default
via: 192.168.122.1
mtu: 1500
nameservers:
addresses: [8.8.8.8, 77.88.8.8]
search: [ dmosk.local ]
ens9:
dhcp4: no
addresses: [192.168.1.10/24, 192.168.1.20/24]
nameservers:
addresses:
— 8.8.8.8
— 77.88.8.8
search: [ dmosk.local, dmosk.ru ]

  • version — версия YAML. На момент обновления статьи, была 2.
  • renderer — менеджер сети (networkd или NetworkManager).
  • ethernets — настройка сетевых адаптеров ethernet.
  • ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
  • dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
  • addresses — задает IP-адреса через запятую.
  • routes — настройка маршрутов. Для шлюза по умолчанию используем опцию и значение to: default. Ранее использовалась директива gateway4, но теперь она считается устаревшей (при применении настройки с ней система вернет предупреждение gateway4 has been deprecated, use default routes instead).
  • mtu — при желании, можно задать значение MTU.
  • nameservers — настройка серверов имен (DNS).
  • nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
  • nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.

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

Для применения настроек необходимо запустить команду netplan. Ее синтаксис:

Для проверки нашего конфигурационного файла вводим:

Источник

Error in network definition: expected mapping (check indentation) #58

tried to install opennebula on ubuntu 20 :

root@ziomario-I5:/home/ziomario/Scrivania# sudo bash minione

Checks & detection

Checking augeas is installed SKIP will try to install
Checking AppArmor SKIP will try to modify
Checking for present ssh key SKIP
Checking (iptables|netfilter)-persistent are installed SKIP will try to install

Main deployment steps:

Install OpenNebula frontend version 5.12
Configure bridge minionebr with IP 172.16.100.1/24
Enable NAT over enp3s0
Modify AppArmor
Install OpenNebula KVM node
Export appliance and update VM template
Install augeas-tools iptables-persistent netfilter-persistent

Do you agree? [yes/no]:
yes

Installation

Updating APT cache OK
Install augeas-tools iptables-persistent netfilter-persistent OK
Creating bridge interface minionebr OK
Bring bridge interfaces up FAILED

— STDERR —
/etc/netplan/01-network-manager-all.yaml:2:9: Error in network definition: expected mapping (check indentation)
network:
^

this is my 01-network-manager-all.yaml file :

Let NetworkManager manage all devices on this system

network:
version: 2
renderer: NetworkManager

#ethernets:
#eno1:
#dhcp4: no
#disable existing configuration for ethernet
#addresses: [10.0.0.30/24]
#gateway4: 10.0.0.1
#nameservers:
#addresses: [10.0.0.10]
#dhcp6: no

add configuration for bridge interface

#bridges:
#br0:
#interfaces: [eno1]
#dhcp4: no
#addresses: [10.0.0.30/24]
#gateway4: 10.0.0.1
#nameservers:
#addresses: [10.0.0.10]
#parameters:
#stp: false
#dhcp6: no

The text was updated successfully, but these errors were encountered:

Источник

Рука помощи

01.04.2020

Ubuntu управление сетевыми интерфейсами

Предлагаю рассмотреть управление сетевыми интерфейсами в ОС Ubuntu. А именно настройку сетевых интерфейсов из командной строки, что в первую очередь, используется при работе с серверными системами и применимо к рабочим станциям с графической оболочкой.

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

Постоянные настройки — задаются через конфигурационные файлы и сохраняются после перезагрузки.

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

На текущий момент, наиболее часто используются Ubuntu 16.04 и Ubuntu 18.04, которые отличаются в настройке сети. Так в OC Ubuntu 16.04 использовалась утилита ifupdown, которую заменили netplan.

1. Просмотр доступных сетевых интерфейсов

Перечень доступных интерфейсов можно получить несколькими способами.

С помощью утилиты lshw, которая выводит информацию о всех компонентах компьютера. Для получения информации о сетевых картах выполняем ее с ключом -C и указываем интересующий класс network. Пример вывода:

description: Ethernet interface

product: RTL-8100/8101L/8139 PCI Fast Ethernet Adapter

vendor: Realtek Semiconductor Co., Ltd.

bus info: pci@0000:08:07.0

logical name: enp8s7

capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation

configuration: autonegotiation=on broadcast=yes driver=8139too driverversion=0.9.28 duplex=full ip=10.254.253.1 latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII speed=100Mbit/s

Для дальнейшей настройки нас будут интересовать следующие значения:

  • logical name — логическое имя сетевого адаптера
  • serial — MAC-адрес сетевой карты
  • link — указывает наличие подключения

При помощи утилиты lshw Вы сможете получить информацию только о физических сетевых интерфейсах, информации о логических, например, VLAN Вы не получите.

Получить информацию о сетевых интерфейсах можно, используя утилиту ip вызвав ее с параметром address. Данная утилита выводит информацию о всех доступных интерфейсах, в том числе, логических. Пример вывода:

1: lo: 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: enp8s7:
mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 00:1d:60:bc:40:98 brd ff:ff:ff:ff:ff:ff

inet 10.254.253.1/24 brd 10.254.253.255 scope global enp8s7

valid_lft forever preferred_lft forever

inet6 fe80::21d:60ff:febc:4098/64 scope link

valid_lft forever preferred_lft forever

Где lo — петля, enp8s7 — интерфейс сетевой карты.

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

Пример вывода информации о сетевых интерфейсах используя ifconfig:

enp8s7: flags=4163 mtu 1500

inet 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 # Информация о настройке сетевого интерфейса

inet6 fe80::21d:60ff:febc:4098 prefixlen 64 scopeid 0x20

ether 00:1d:60:bc:40:98 txqueuelen 1000 (Ethernet) # MAC-адрес сетевой карты

RX packets 2473367 bytes 1178806843 (1.1 GB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 3706512 bytes 2647126986 (2.6 GB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Локальная петля (Loopback))

RX packets 43756 bytes 4844250 (4.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 43756 bytes 4844250 (4.8 MB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2. Настройка сети

Настройку сетевых интерфейсов в данной статье буду рассматривать на примере проводной сети.

Настройка для Ubuntu 16.04 и ранее

Настройки происходят посредством редактирования конфигурационного файла /etc/network/interfaces

Пример настройки сетевых интерфейсов:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

iface lo inet loopback

iface inet static

dns-nameservers 8.8.8.8 8.8.4.4

В данном файле всегда должен быть описан сетевой интерфейс lo и секции настройки наших сетевых интерфейсов. Пояснения по параметрам конфигурации:

  • auto enp8s7 — указывает, что сетевой интерфейс «поднимать» при загрузке системы
  • iface enp8s7 inet static — указываем, что для сетевого интерфейса enp8s7 используем статический IP-адрес, если вместо параметра static указать dhcp — сетевой адрес будет получен по протоколу dhcp и остальные параметры конфигурации не нужны
  • address 10.10.10.1 — указывает IP-адрес сетевого интерфейса
  • netmask 255.255.255.0 -маска подсети
  • gateway 10.10.10.2 — основной шлюз
  • dns-nameservers 8.8.8.8 8.8.4.4 — перечень DNS-серверов через пробел

Для применения настроек необходимо перезагрузить систему или службу, отвечающую за работу сети

sudo service networking reload

Настройка для Ubuntu 18.04 и более поздние

Начиная с Ubuntu 18.04, для настройки сети используется Netplan, который для хранения конфигурации использует формат YAML. Файлы конфигурации хранятся в директории /etc/netplan/ при установке системы создается файл 50-cloud-init.yaml В него будем вносить все изменения

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

Error while loading /etc/netplan/50-cloud-init.yaml, aborting. — в файле для отступов используются знаки табуляции

An error occured: the configuration could not be generated или Error in network definition: expected mapping (check indentation) — в случае не соблюдения количества отступов также будет указана строка с ошибкой.

Структура конфигурационного файла:

ethernets: — объявляем блок с конфигурацией сетевых интерфейсов, далее идут блоки конфигураций для каждого интерфейса. Отступ 2 пробела

enp8s7: — имя первого сетевого интерфейса. Отступ 4 пробела

addresses: [10.10.10.1/24] — IP-адрес и маска подсети, в случае использования нескольких IP-адресов на одном интерфейсе, перечисляем через запятую, например, [10.10.10.1/24,10.10.20.1/24] IPv6 выделяется кавычками. Отступ 6 пробелов

gateway4: 10.10.10.2 — основной шлюз. Отступ 6 пробелов

nameservers: — блок конфигурации DNS-серверов. Отступ 6 пробелов

addresses: [8.8.8.8] — перечень IP-адресов DNS-серверов, допускается использование нескольких, указываются через запятую. Отступ 8 пробелов

dhcp4: false — указывает использовать статические параметры или получать по DHCP. Допустимые значения true/false. Если значение «true», будет прочитан только блок с настройками DNS-серверов. Отступ 6 пробелов

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

# This file is generated from information provided by

# the datasource. Changes to it will not persist across an instance.

# To disable cloud-init’s network configuration capabilities, write a file

# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:

Для проверки файла конфигурации и применения изменений используем команду

Обратите внимание, что необходимо нажать Enter для применения или по истечению 2-х минут ожидания применение прервется и изменения не будут применены.

Конфигурация сетевых интерфейсов через командную строку

Напоминаю, что все изменения, внесенные через командную строку, не сохраняются после перезагрузки. Конфигурацию описываю, используя утилиту ifconfig.

Для присвоения IP-адреса сетевому интерфейсу используем команду:

sudo ifconfig enp8s7 10.10.10.1 netmask 255.255.255.0

  • enp8s7 — имя сетевого интерфейса
  • 10.10.10.1 — IP-адрес
  • 255.255.255.0 — маска подсети

Так как через утилиту ifconfig не указывается основной шлюз и DNS-сервера, это необходимо сделать отдельно

Указываем основной шлюз

sudo route add default gw 10.10.10.2

Для временного указания DNS-сервера необходимо добавить в файл /etc/resolv.conf строку

Где 8.8.8.8 — IP-адрес DNS-сервера

Для получения IP-адреса через DHCP используем команду

Где enp8s7 — имя сетевого интерфейса

3. Управление таблицей маршрутизации.

Для просмотра таблицы маршрутизации используются команды: netstat -rn или route -n

Если у Вас нет отдельно созданных маршрутов, вывод результата будет похож на следующий

Destination Gateway Genmask Flags MSS Window irtt Iface

0.0.0.0 10.10.10.2 0.0.0.0 UG 0 0 0 enp8s7

10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 enp8s7

Добавление статических маршрутов

Добавление статического маршрута в Ubuntu 16.04

Для добавления статического маршрута необходимо добавить строку конфигурации в файл /etc/network/interfaces в секцию конфигурации соответствующего сетевого интерфейса. Пример строки конфигурации

up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.3

  • 192.168.0.0 — указание подсети
  • 255.255.0.0 — маска подсети
  • 10.10.10.3 — шлюз

При добавлении такого маршрута конфигурационный файл будет иметь следующий вид

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

iface lo inet loopback

iface inet static

dns-nameservers 8.8.8.8 8.8.4.4

up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.3

Добавление статического маршрута в Ubuntu 18.04

Для добавления статических маршрутов через netplan необходимо добавить секцию routes: в конфигурацию сетевого интерфейса

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

Конфигурация маршрутов через командную строку

При конфигурации маршрутов через командную строку все изменения сохраняются до перезагрузки.

Управление маршрутами происходит при помощи утилиты route. Для добавления маршрута выполняем команду

sudo route add -net 10.10.20.0/24 gw 10.10.10.3

В заметке не затрагивались настройки wi-fi адаптеров и виртуальных интерфейсов. Это будет описано отдельно. При возникновении вопросов задавайте их в комментариях.

Источник

  • Печать

Страницы: [1]   Вниз

Тема: Ошибка при сохранении конфигурации  (Прочитано 672 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
iiwanc

Здравствуйте!
Заранее прошу прощения, если задаю глупые вопросы.
С Ubuntu впервые работаю.

Установил Ubuntu Server 18.04.4 LTS 64-bit
Нужно поменять IP, сделать его статичным.
При сохранении конфигурации появляется ошибка:

/etc/netplan/50-cloud-init.yaml:1:9: error in network definition expected mapping (check indentation)
network:
Пишу в файл:

network:
  ethernets:
    ens160:
      addresses:
        - 198.0.0.174/24
      dhcp4: false
      gateway4: "198.0.0.100"
      nameservers:
        addresses:
          - "8.8.8.8"
          - "8.8.4.4"
  renderer: networkd
  version: 2

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


ТС не появлялся на Форуме более трех месяцев по состоянию на 19/03/2021 (последняя явка: 07/04/2020). Модератором раздела принято решение закрыть тему.
—zg_nico

« Последнее редактирование: 19 Марта 2021, 14:06:39 от zg_nico »


Оффлайн
andytux

Нетплан не прощает вольностей. Что-то мне кажется, что кавычки лишние.


Оффлайн
iiwanc

На самом деле там нет ковычек. Стоят квадратные скобки.
Не пойму как прикрепить скрин здесь.
Даю на него ссылку с Я. Диска https://yadi.sk/i/HInBrFNrEctvzQ

Изображения оформляются в виде превью, а не просто гиперссылкой, ведущей неведомо куда. Отправлено уведомление в ЛС о допущенном нарушении. Стоковый тег пользователя пассивизирован, зачеркнут. Изображение перезалито, и оформлено в соответствии с предписаниями Руководства.
 —zg_nico

« Последнее редактирование: 31 Марта 2020, 00:05:28 от zg_nico »


Оффлайн
ALiEN175

yaml:1:9

первая строка, девятый символ (судя по приведённому тексту — это пробел). Yaml очень чувствителен к пробелам. Уберите лишние.

ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE


Оффлайн
iiwanc

Записал видео, на котором видно, что удаляю двоеточие после network.
Потом пишу двоеточие и курсор мигает возле него, но клавишу пробела или какую другую не нажимал.
Видео https://youtu.be/2tho0kJsUNE


Пользователь добавил сообщение 30 Марта 2020, 20:16:23:


Нет вариантов?
Думаю переустанавливать ОС

« Последнее редактирование: 30 Марта 2020, 20:16:23 от iiwanc »


Оффлайн
Usermaster

Смущает тот факт что на скриншоте файл 99-disable-network-config.cfg
Маска подсети у Вас походу не указана.

Здесь [ссылка] почитайте.

Кстати при отсутствии нужного фалйа .yml, его можно сгенерировать.

sudo netplan generate

« Последнее редактирование: 31 Марта 2020, 09:51:08 от Usermaster »


  • Печать

Страницы: [1]   Вверх

Ser8191

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

1

11.11.2021, 15:18. Показов 6392. Ответов 29

Метки нет (Все метки)


Здравствуйте.
Установил Ubuntu Server 20.04.3
Нужно назначить статический IP адрес 192.168.1.35
В каталоге /etc/netplan три файла:

00-installer-config-wifi.yaml
01-installer-config.yaml
01-netcfg.yaml

Команда

PowerShell
1
ip a

выдаёт следующее:

Код

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: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 28:d2:44:b0:b4:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.39/24 brd 192.168.1.255 scope global dynamic enp3s0
       valid_lft 24006sec preferred_lft 24006sec
    inet6 fe80::2ad2:44ff:feb0:b4fe/64 scope link
       valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 18:cf:5e:e7:34:c9 brd ff:ff:ff:ff:ff:ff

Меняю содержимое файла 01-installer-config.yaml

Код

network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.35/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]

Выполняю команду:

PowerShell
1
sudo netplan apply

Получаю ошибку:

PowerShell
1
2
/etc/netplan/01-installer-config.yaml:1:9: Error in network definition: expected mapping (check indentation)
network:

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

4734 / 3939 / 997

Регистрация: 29.08.2013

Сообщений: 25,250

Записей в блоге: 3

11.11.2021, 16:42

2

а точно нужно прописывать 192.168.1.35/24?
может быть отдельно IP и отдельно маску?

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 16:46

 [ТС]

3

Без понятия. Что нашёл, то м попробовал.
Уровень знаний минимальный.

0

4734 / 3939 / 997

Регистрация: 29.08.2013

Сообщений: 25,250

Записей в блоге: 3

11.11.2021, 16:47

4

проверяй по разному
попробуй и без /24 и без []

1

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 18:36

 [ТС]

5

Как я понял дело в табуляции, нужно соблюдать пробелы

Код

/etc/netplan/00-installer-config.yaml:4:1: Invalid YAML: tabs are not allowed for indent:
        enp3s0:

Добавлено через 9 минут

Код

sudo nano /etc/netplan/00-installer-config.yaml

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses: [10.0.2.15/24]
      gateway4: 10.0.2.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]


sudo netplan apply

После данных манипуляций связь по ssh пропадает.
На сервере следующая информация

Миниатюры

Статический IP Ubuntu Server 20.04.3
 

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 19:08

 [ТС]

6

Валидатор YAML пишет что файл валидный, даже если использую табуляцию

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 19:38

 [ТС]

7

С ошибкой разобрался, использовал пробелы.
Но адрес не меняется.

Миниатюры

Статический IP Ubuntu Server 20.04.3
 

0

Эксперт NIX

2658 / 777 / 173

Регистрация: 14.01.2013

Сообщений: 3,585

11.11.2021, 19:43

8

Вот вариант с рабочего сервера

Код

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: no
      dhcp6: no
      addresses: [ 172.16.0.88/24 ]
      gateway4: 172.16.0.81
      nameservers:
        addresses: [ 172.16.0.81, 77.88.8.1 ]

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 19:46

 [ТС]

9

Да в принципе у меня тоже самое, но ip a показывает туже информацию из верхнего скрина, и нет связи по указанному адресу

0

_sg2

594 / 204 / 40

Регистрация: 30.08.2017

Сообщений: 1,339

11.11.2021, 20:03

10

renderer: networkd
а может и NetworkManager. У Вас там что?
Вообще проверьте все пробелы. рекомендую ВЕЗДЕ отступы в 2 пробела. Ну или по стандарту python 4. Но ВЕЗДЕ одинаково, будет лишний где/не хватать, парсер YAML может заругаться. Я пару раз мимоходом этот netplan курил, сложностей не вызывало кроме необходимости очередную ересь изучить и попробовать запомнить (не удалось ).
Проверить что накалякали (если память не подводит):

Bash
1
netplan --debug generate

Почитать ошибки, устранить и

Bash
1
netplan apply

Кажеться так. Ну и у уважаемого Kubuntovod, рабочий вариант как шпаргалка.

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 20:09

 [ТС]

11

Миниатюры

Статический IP Ubuntu Server 20.04.3
 

0

594 / 204 / 40

Регистрация: 30.08.2017

Сообщений: 1,339

11.11.2021, 20:10

12

доступ запрещён написано
значит sudo
и неужели нельзя скопировать с терминала, зачем мутные фото?

0

Эксперт по компьютерным сетямЭксперт NIX

12384 / 7223 / 758

Регистрация: 09.09.2009

Сообщений: 28,185

11.11.2021, 20:11

13

в роутере назначить айпишник «серверу» — не?

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 20:16

 [ТС]

14

и неужели нельзя скопировать с терминала, зачем мутные фото?

Скопировать можно было бы, если бы работал по ssh, но ip адрес то не выставляется, и рабочий ПК не видит сервер.

в роутере назначить айпишник «серверу» — не?

Связь будет без роутера, в этом и проблема (с роутером всё работало)

доступ запрещён написано
значит sudo

Про sudo забыл…

Миниатюры

Статический IP Ubuntu Server 20.04.3
 

0

594 / 204 / 40

Регистрация: 30.08.2017

Сообщений: 1,339

11.11.2021, 20:22

15

А. Это отдельная физическая машина…
А чё там такое намешано? OpenVSwitch, NetworkManager. Ужасы какие-то, вот не помню
Ну кажись не инвалид конфиг.. и что netplan apply выдал?

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 20:25

 [ТС]

16

А чё там такое намешано? OpenVSwitch, NetworkManager. Ужасы какие-то, вот не помню

Ubuntu Server 20.04.3 (64-bit)

и что netplan apply выдал?

Ответа нет, переход к вводу новой команды.

0

594 / 204 / 40

Регистрация: 30.08.2017

Сообщений: 1,339

11.11.2021, 20:28

17

Ну и ip a?
systemctl status networkd?
Мы тут мысли читать не умеем, уж извините

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 20:34

 [ТС]

18

Попробовал на других соединениях и вернулся к своему, адрес поменялся, но не пингуется.

Миниатюры

Статический IP Ubuntu Server 20.04.3
 

0

0 / 0 / 0

Регистрация: 17.01.2017

Сообщений: 179

11.11.2021, 20:49

 [ТС]

19

Перезагрузил сервер полностью обесточив.
Выполнил те-же действия, IP стал виден.
Перезагрузил.
Такая же ерунда.
Выполнил netplan apply, заработало.
Переустанавливаю сервер. Отпишусь.

0

594 / 204 / 40

Регистрация: 30.08.2017

Сообщений: 1,339

11.11.2021, 20:59

20

меня смущает какой-то ip на loopback

0

Обновлено Обновлено: 25.12.2019 Опубликовано Опубликовано: 31.10.2019

Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:

apt-get install netplan

В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.

Конфигурационный файл

Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:

vi /etc/netplan/01-netcfg.yaml

* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.

YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).

Простая настройка сети

Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.

Приводим файл к следующему виду:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3:
            dhcp4: true
        ens7:
            dhcp4: no
            addresses: [192.168.122.195/24]
            gateway4: 192.168.122.1
            mtu: 1500
            nameservers:
                addresses: [8.8.8.8, 77.88.8.8]
                search: [ admins24.local ]
        ens9:
            dhcp4: no
            addresses: [192.168.1.10/24, 192.168.1.20/24]
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8
                search: [ admins24.local, admins24.com ]

* где:

  • version — версия YAML. На момент обновления статьи, была 2.
  • renderer — менеджер сети (networkd или NetworkManager).
  • ethernets — настройка сетевых адаптеров ethernet.
  • ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
  • dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
  • addresses — задает IP-адреса через запятую.
  • gateway4 — шлюз по умолчанию. В данном примере указывается только для интерфейса ens7.
  • mtu  — при желании, можно задать значение MTU.
  • nameservers — настройка серверов имен (DNS).
  • nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
  • nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.

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

Для применения настроек необходимо запустить команду netplan. Ее синтаксис:

netplan <опции> <команда>

Для проверки нашего конфигурационного файла вводим:

netplan —debug generate

 Для применения настроек вводим:

netplan apply

* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).

Статический маршрут

Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens9:
            dhcp4: no
            addresses: 192.168.1.10/24
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8
            routes:
              — to: 192.168.0.0/24
                via: 192.168.1.1
                on-link: true

* в данном примере мы настроили маршрут для сетевого интерфейса ens9. Данная настройка задается параметром routes:

  • to — направление маршрута (в какую сеть мы должны попадать). В данном примере, 192.168.0.0/24.
  • via — через какой шлюз мы попадаем в сеть to.
  • on-link — активация маршрута при поднятии линка на сетевом интерфейсе.

Объединение интерфейсов (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 (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)

Сетевой мост (bridge)

Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам KVM через единственный сетевой интерфейс сервера).

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

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
    bridges:
        br0:
            macaddress: ce:ce:ce:45:45:45
            interfaces:
                — ens2f0
            addresses:
                — 192.168.1.15/24
            gateway4: 
            nameservers:
                addresses:
                    — 77.88.8.8
                    — 8.8.8.8
            mtu: 1500
            parameters:
                stp: true
                forward-delay: 4
            dhcp4: false
            dhcp6: false

* где:

  • bridges — настройки для интерфейсов bridge.
  • bridges br0 — настройка интерфейса br0.
  • macaddress — физический адрес (MAC) интерфейса. Настройка важна для некоторых провайдеров VPS — без нее бридж может не заработать.
  • interfaces — перечисление интерфейсов, из которых собираем мост. В данном примере ens2f0.
  • addresses, gateway4, nameservers — сетевые настройки (IP-адрес, шлюз, сервер имен).
  • mtu — одноименный параметр. Для сетей ethernet обычно равен 1500.
  • parameters stp — включает или отключает устранение петель в сети. В данном примере включено.
  • parameters forward-delay — время в секундах в течение которого мост будет оставаться в состояниях «Listening» и «Learning».
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса. В нашем случае, отключает.

Подробнее про настройку сетвого моста для KVM в инструкции Настройка KVM на Ubuntu Server.

Vlan

Также мы можем настроить тегированный интерфейс vlan:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3: {}
    vlans: 
        vlan5:
            id: 5
            link: ens3
            dhcp4: no
            addresses: [10.0.0.15/24]
            gateway: 10.0.0.1

* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.

WiFi

Для подключения к беспроводной сети задаем следующие настройки:

network:
    version: 2
    renderer: networkd
    wifis:
        wlp2s0b1:
            dhcp4: no
            dhcp6: no
            addresses: [192.168.2.10/24]
            gateway4: 192.168.2.1
            nameservers:
                addresses: [192.168.2.1, 77.88.8.8]
            access-points:
                <имя WiFi сети (SSID)>:
                    password: wifi_password

* где:

  • wifis — определяет настойки для WiFi.
  • wlp2s0b1 — настройка для беспроводного сетевого адаптера.
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса.
  • addresses, gateway4, nameservers — настройка сети (IP-адрес, шлюз, сервер DNS).
  • access-points — настройка для подключения к беспроводной сети.
  • <имя WiFi сети (SSID)> — имя беспроводной сети, к которой будем подключаться.
  • password — пароль для подключения к беспроводной сети.

Отключение netplan и возврат к interfaces

При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.

1. Открываем настройку grub:

vi /etc/default/grub

2. Находим опцию GRUB_CMDLINE_LINUX и дописываем в нее параметр:

GRUB_CMDLINE_LINUX=»netcfg/do_not_use_netplan=true»

* если GRUB_CMDLINE_LINUX содержит другие настройки, то наш параметр добавляем через пробел.

3. Устанавливаем пакет ifupdown:

apt-get install ifupdown

4. Настраиваем сеть в файле:

vi /etc/network/interfaces

… например:

auto lo
iface lo inet loopback

auto ens5
iface ens5 inet dhcp

* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.

5. Применяем настройки загрузчика:

update-grub

И перезагружаем систему:

shutdown -r now

Возможные ошибки

1. Error in network definition *.yaml line xxx column yyy: expected mapping 

Ошибка появляется при проверке (generate) или применении (apply) настроек сети.

Причина: ошибка синтаксиса YAML.

Решение: внимательно смотрим на количество отступов, которое сделано для строки xxx. Количество пробелов должно точно соответствовать количеству в других строках. Если параметр вложенный, он также должен отделяться от родителя нужным количеством пробелов. Пример неправильной настройки:

network:
    version: 2
  renderer: networkd

* обратите внимание, что version имеет 4 пробела для отступа, а renderer — 2. Так как version и renderer равнозначные параметры для родителя network, они должны иметь одинаковое количество пробелов.

Предлагаю рассмотреть управление сетевыми интерфейсами в ОС Ubuntu. А именно настройку сетевых интерфейсов из командной строки, что в первую очередь, используется при работе с серверными системами и применимо к рабочим станциям с графической оболочкой.

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

Постоянные настройки — задаются через конфигурационные файлы и сохраняются после перезагрузки.

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

На текущий момент, наиболее часто используются Ubuntu 16.04 и Ubuntu 18.04, которые отличаются в настройке сети. Так в OC Ubuntu 16.04 использовалась утилита ifupdown, которую заменили netplan.

1. Просмотр доступных сетевых интерфейсов

Перечень доступных интерфейсов можно получить несколькими способами.

С помощью утилиты lshw, которая выводит информацию о всех компонентах компьютера. Для получения информации о сетевых картах выполняем ее с ключом -C и указываем интересующий класс network. Пример вывода:

$ sudo lshw -C network

*-network

description: Ethernet interface

product: RTL-8100/8101L/8139 PCI Fast Ethernet Adapter

vendor: Realtek Semiconductor Co., Ltd.

physical ID: 7

bus info: pci@0000:08:07.0

logical name: enp8s7

version: 10

serial: 00:1d:60:bc:40:98

size: 100Mbit/s

capacity: 100Mbit/s

width: 32 bits

clock: 33MHz

capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation

configuration: autonegotiation=on broadcast=yes driver=8139too driverversion=0.9.28 duplex=full ip=10.254.253.1 latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII speed=100Mbit/s

Для дальнейшей настройки нас будут интересовать следующие значения:

  • logical name — логическое имя сетевого адаптера
  • serial — MAC-адрес сетевой карты
  • link — указывает наличие подключения

При помощи утилиты lshw Вы сможете получить информацию только о физических сетевых интерфейсах, информации о логических, например, VLAN Вы не получите.

Получить информацию о сетевых интерфейсах можно, используя утилиту ip вызвав ее с параметром address. Данная утилита выводит информацию о всех доступных интерфейсах, в том числе, логических. Пример вывода:

$ ip address

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: enp8s7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 00:1d:60:bc:40:98 brd ff:ff:ff:ff:ff:ff

inet 10.254.253.1/24 brd 10.254.253.255 scope global enp8s7

valid_lft forever preferred_lft forever

inet6 fe80::21d:60ff:febc:4098/64 scope link

valid_lft forever preferred_lft forever

Где lo — петля, enp8s7 — интерфейс сетевой карты.

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

Пример вывода информации о сетевых интерфейсах используя ifconfig:

$ ifconfig

enp8s7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 # Информация о настройке сетевого интерфейса

inet6 fe80::21d:60ff:febc:4098 prefixlen 64 scopeid 0x20<link>

ether 00:1d:60:bc:40:98 txqueuelen 1000 (Ethernet) # MAC-адрес сетевой карты

RX packets 2473367 bytes 1178806843 (1.1 GB) 

RX errors 0 dropped 0 overruns 0 frame 0 

TX packets 3706512 bytes 2647126986 (2.6 GB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1000 (Локальная петля (Loopback))

RX packets 43756 bytes 4844250 (4.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 43756 bytes 4844250 (4.8 MB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2. Настройка сети

Настройку сетевых интерфейсов в данной статье буду рассматривать на примере проводной сети.

Настройка для Ubuntu 16.04 и ранее

Настройки происходят посредством редактирования конфигурационного файла /etc/network/interfaces

Пример настройки сетевых интерфейсов:

# This file describes the network interfaces available on your system

#

# and how to activate them. For more information, see interfaces(5).

#

# The loopback network interface

auto lo

iface lo inet loopback

# My Net

iface inet static 

address 10.10.10.1 

netmask 255.255.255.0 

gateway 10.10.10.2 

dns-nameservers 8.8.8.8 8.8.4.4

auto enp8s7

В данном файле всегда должен быть описан сетевой интерфейс lo и секции настройки наших сетевых интерфейсов. Пояснения по параметрам конфигурации:

  • auto enp8s7 — указывает, что сетевой интерфейс «поднимать» при загрузке системы
  • iface enp8s7 inet static — указываем, что для сетевого интерфейса enp8s7 используем статический IP-адрес, если вместо параметра static указать dhcp — сетевой адрес будет получен по протоколу dhcp и остальные параметры конфигурации не нужны
  • address 10.10.10.1 — указывает IP-адрес сетевого интерфейса
  • netmask 255.255.255.0 -маска подсети
  • gateway 10.10.10.2 — основной шлюз
  • dns-nameservers 8.8.8.8 8.8.4.4 — перечень DNS-серверов через пробел

Для применения настроек необходимо перезагрузить систему или службу, отвечающую за работу сети

sudo service networking reload

Настройка для Ubuntu 18.04 и более поздние

Начиная с Ubuntu 18.04, для настройки сети используется Netplan, который для хранения конфигурации использует формат YAML. Файлы конфигурации хранятся в директории /etc/netplan/ при установке системы создается файл 50-cloud-init.yaml В него будем вносить все изменения

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

Error while loading /etc/netplan/50-cloud-init.yaml, aborting. — в файле для отступов используются знаки табуляции

An error occured: the configuration could not be generated или Error in network definition: expected mapping (check indentation) — в случае не соблюдения количества отступов также будет указана строка с ошибкой.

Структура конфигурационного файла:

network:

ethernets: — объявляем блок с конфигурацией сетевых интерфейсов, далее идут блоки конфигураций для каждого интерфейса. Отступ 2 пробела

enp8s7: — имя первого сетевого интерфейса. Отступ 4 пробела

addresses: [10.10.10.1/24] — IP-адрес и маска подсети, в случае использования нескольких IP-адресов на одном интерфейсе, перечисляем через запятую, например, [10.10.10.1/24,10.10.20.1/24] IPv6 выделяется кавычками. Отступ 6 пробелов

gateway4: 10.10.10.2 — основной шлюз. Отступ 6 пробелов

nameservers: — блок конфигурации DNS-серверов. Отступ 6 пробелов

addresses: [8.8.8.8] — перечень IP-адресов DNS-серверов, допускается использование нескольких, указываются через запятую. Отступ 8 пробелов

dhcp4: false — указывает использовать статические параметры или получать по DHCP. Допустимые значения true/false. Если значение «true», будет прочитан только блок с настройками DNS-серверов. Отступ 6 пробелов

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

dhcp4: true

version: 2

Пример конфигурации:

# This file is generated from information provided by

# the datasource. Changes to it will not persist across an instance.

# To disable cloud-init’s network configuration capabilities, write a file

# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:

# network: {config: disabled}

network:

  ethernets:

    enp8s7:

      addresses: [10.10.10.1/24]

      gateway4: 10.10.10.2

      nameservers:

        addresses: [8.8.8.8]

      dhcp4: false

    enp0s25:

      dhcp4: true

  version: 2

Для проверки файла конфигурации и применения изменений используем команду

sudo netplan try

Обратите внимание, что необходимо нажать Enter для применения или по истечению 2-х минут ожидания применение прервется и изменения не будут применены.

Конфигурация сетевых интерфейсов через командную строку

Напоминаю, что все изменения, внесенные через командную строку, не сохраняются после перезагрузки. Конфигурацию описываю, используя утилиту ifconfig.

Для присвоения IP-адреса сетевому интерфейсу используем команду:

sudo ifconfig enp8s7 10.10.10.1 netmask 255.255.255.0

Где:

  • enp8s7 — имя сетевого интерфейса
  • 10.10.10.1 — IP-адрес
  • 255.255.255.0 — маска подсети

Так как через утилиту ifconfig не указывается основной шлюз и DNS-сервера, это необходимо сделать отдельно

Указываем основной шлюз

sudo route add default gw 10.10.10.2

Для временного указания DNS-сервера необходимо добавить в файл /etc/resolv.conf строку

nameserver 8.8.8.8

Где 8.8.8.8 — IP-адрес DNS-сервера

Для получения IP-адреса через DHCP используем команду

sudo dhclient enp8s7

Где enp8s7 — имя сетевого интерфейса

3. Управление таблицей маршрутизации.

Для просмотра таблицы маршрутизации используются команды: netstat -rn или route -n

Если у Вас нет отдельно созданных маршрутов, вывод результата будет похож на следующий

$ netstat -rn

Destination Gateway Genmask Flags MSS Window irtt Iface

0.0.0.0 10.10.10.2 0.0.0.0 UG 0 0 0 enp8s7

10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 enp8s7

Добавление статических маршрутов

Добавление статического маршрута в Ubuntu 16.04

Для добавления статического маршрута необходимо добавить строку конфигурации в файл /etc/network/interfaces в секцию конфигурации соответствующего сетевого интерфейса. Пример строки конфигурации

up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.3

Где

  • 192.168.0.0 — указание подсети
  • 255.255.0.0 — маска подсети
  • 10.10.10.3 — шлюз

При добавлении такого маршрута конфигурационный файл будет иметь следующий вид

# This file describes the network interfaces available on your system

#

# and how to activate them. For more information, see interfaces(5).

#

# The loopback network interface

auto lo

iface lo inet loopback

# My Net

iface inet static

address 10.10.10.1

netmask 255.255.255.0

gateway 10.10.10.2

dns-nameservers 8.8.8.8 8.8.4.4

up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.3

auto enp8s7

Добавление статического маршрута в Ubuntu 18.04

Для добавления статических маршрутов через netplan необходимо добавить секцию routes: в конфигурацию сетевого интерфейса

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

    enp8s7:

      addresses: [10.10.10.1/24]

      gateway4: 10.10.10.2

      nameservers:

        addresses: [8.8.8.8]

      dhcp4: false

      routes:

        — to: 10.10.20.0/24

          via: 10.10.10.3

          metric: 100

        — to: 10.10.30.0/24

          via: 10.10.10.4

          metric: 100

Конфигурация маршрутов через командную строку

При конфигурации маршрутов через командную строку все изменения сохраняются до перезагрузки.

Управление маршрутами происходит при помощи утилиты route. Для добавления маршрута выполняем команду

sudo route add -net 10.10.20.0/24 gw 10.10.10.3

Удаление маршрута

sudo route delete -net 10.10.20.0/24

Заключение

В заметке не затрагивались настройки wi-fi адаптеров и виртуальных интерфейсов. Это будет описано отдельно. При возникновении вопросов задавайте их в комментариях.

Использованные материалы:

https://help.ubuntu.ru/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E

http://manpages.ubuntu.com/manpages/trusty/man8/route.8.html

https://netplan.io/

  • Печать

Страницы: [1] 2  Все   Вниз

Тема: Настройка статического IP адреса  (Прочитано 11135 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
vabik

Здравствуйте форумчане.  Установил сервер,  пока IP по DHCP. В настройках nano прописал IP, netmask, gateway, dns-nameserver, iface enp1s0 inet static. Сохранил, перезагрузил,  как был ip по DHCP  так и остался.  Что можно предпринять?


Оффлайн
hesoyamatogun

Через GUI в какой нибудь ubuntu-desktop наверно перекрывает интерфейсы. Ставьте сервер или голый дебиан, потом последовательно, по нарастающей, накатывайте функционал и не будет таких заморочек.


Оффлайн
vabik


Оффлайн
agtrif

если речь идет о Ubuntu 18, то гуглите «netplan»

судя по параметрах, Вы прописываете настройки в /etc/network/interfaces.
надо немножко в другом месте настраивать.

« Последнее редактирование: 18 Июля 2018, 08:30:54 от agtrif »


Оффлайн
vabik


Оффлайн
AnrDaemon

IP по DHCP. В настройках nano прописал IP,

Зачем, если настройки по DHCP получаете?

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
hesoyamatogun

IP по DHCP. В настройках nano прописал IP,

Зачем, если настройки по DHCP получаете?

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


Оффлайн
Azure

Не каждый роутер позволяет сделать привязку к маку

Практически каждый.

В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !


Оффлайн
AnrDaemon

Не каждый роутер позволяет сделать привязку к маку

Ни разу таких не видел.

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
vabik

При выполнении команды netplan apply,  выходит ошибка line 8  column 15: expected mapping

network:
 version: 2
 renderer: networkd
 ethernets:
   enp1s0:
     dhcp4: no
addresses: [192.168.1.2/24]
     gateway4: 192.168.1.100
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]


Оффлайн
Azure

В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !


Оффлайн
vabik

Так и написано  gateway4:


Пользователь добавил сообщение 20 Июля 2018, 13:53:13:


Короче все снес и поставил,  прописал в netplan  конфигурацию, сохранил, перезагрузил, но  интерфейс по прежнему получает по dhcp :(

« Последнее редактирование: 20 Июля 2018, 13:53:13 от vabik »


Оффлайн
Azure

прописал в netplan  конфигурацию

Может поделитесь?

cat /etc/netplan/*.yml

В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !


Оффлайн
vabik

Наверно вы имели ввиду *.yaml?  Вот это выводит:
network:
 version: 2
 renderer: networkd
 ethernets:
   enp1s0:
     dhcp4: no
addresses: [192.168.1.2/24]
     gateway4: 192.168.1.100
     nameservers:
       addresses: [8.8.8.8]
Команда netplan apply:  Error in network definition // 01-netcfg.yaml line 0 column 9: expected mapping
С помощью http://www.yamllint.com/  проверил, всё ок.

« Последнее редактирование: 24 Июля 2018, 06:27:04 от vabik »


Оффлайн
Sly_tom_cat

Отступы в yaml  — нужно четко соблюдать:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      addresses:
        - 192.168.1.2/24
      dhcp4: false
      gateway4: "192.168.1.100"
      nameservers:
        addresses:
          - "8.8.8.8"


  • Печать

Страницы: [1] 2  Все   Вверх

  • Netlogon 5774 ошибка при динамической регистрации записи
  • Netlify page not found ошибка
  • Netflix ошибка tvq pb101
  • Netflix ошибка 113 apple tv
  • Netflix код ошибки ui 800 3