Как настроить статический IP на Ubuntu Server 18.04

Я видел, как некоторые люди говорят, что файл для установки статического IP-адреса все еще /etc/network/interfaces

И я видел, как другие люди говорили, что в 18.04 это сейчас на /etc/netplan (о чем люди кажутся недовольными)

Я пытался поставить это:

version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.9/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

В моем /etc/netplan/50-cloud-init.yaml и делать sudo netplan apply но это просто убивает подключение серверов к интернету.

11 ответов

Все ответы подсказывают вам напрямую редактировать /etc/netplan/50-cloud-init.yaml неправильно, так как CloudInit используется и будет генерировать этот файл. В Ubuntu 18.04.2 в файле четко написано:

$ cat /etc/netplan/50-cloud-init.yaml
# 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:
        eno1:
            dhcp4: true
    version: 2

Таким образом, вы не должны редактировать этот файл, но тот, который находится под /etc/cloud/cloud.cfg.d/ если вы все еще хотите использовать CloudInit.

Другой способ - сначала полностью отключить CloudInit, создав пустой файл. /etc/cloud/cloud-init.disabled (см. https://cloudinit.readthedocs.io/en/latest/topics/boot.html), а затем другие ответы в порядке. Под Ubuntu 18.04.2 мне пришлось использовать dpkg-reconfigure cloud-init чтобы он принял во внимание файл /etc/cloud/cloud-init.disabled, Я думаю, что это немного странно.

Я предлагаю вам переименовать файл (не правильное имя, так как 50-cloud-init.yaml давайте думать, что он все еще использует CloudInit).

Тогда вы можете получить имя файла /etc/netplan/01-netcfg.yaml который содержит конфигурацию ниже. Обратите внимание на использование networkd рендер вместо NetworkManager потому что конфигурация на сервере.

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      addresses: [192.168.1.246/24]
      gateway4: 192.168.1.1
      nameservers:
         addresses: [192.168.1.1]

Это задает статическую IP-инструкцию в Ubuntu-Server 18.04.

$ sudo nano /etc/netplan/50-cloud-init.yaml

Затем замените свою конфигурацию, например, следующими строками:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
     dhcp4: no
     addresses: [192.168.1.137/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]

Применять изменения:

$ sudo netplan apply

Если у вас возникнут проблемы, выполните:

$ sudo netplan --debug apply

[ ПРИМЕЧАНИЕ ]:

  • /24 эквивалентно 255.255.255.0
  • ens160 ваше сетевое имя, вы можете получить его с помощью $ ifconfig
  • В конфигурации сетевого интерфейса Ubuntu 16.04 и 14.04 используется другой метод.
  • Файл в формате YAML: используйте пробелы, без вкладок.

Я нашел другой способ, используя cloud-init.

  1. Редактировать файл /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg - содержимое кажется таким же, как в / etc / netplan.
  2. очистить, перезагрузить и заново инициализировать cloud-init с помощью этой команды:

    sudo cloud-init clean -r
    
  3. Это оно! Ваша система перезагрузится, cloud-init будет повторно инициализировать и забрать изменения в /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg и применить их к /etc/netplan/50-cloud-init.yaml и все будет хорошо. Проверить с помощью ifconfig,

Ubuntu 18.04 теперь использует Netplan для настройки сетевых интерфейсов, поэтому настройку необходимо выполнить в файле /etc/netplan/50-cloud-init.yamlдокументация советует больше не связываться со старым файлом /etc/network/interfaces, Я использовал эту конфигурацию с моей виртуальной машиной Ubuntu Server, и пока она работает, просто убедитесь, что информация верна; optional: true установка предположительно ускоряет время загрузки, не проверяя, подключен интерфейс или нет, это значение по умолчанию, также нет необходимости объявлять неиспользуемые значения, например, DHCP, если они отсутствуют, они принимаются как отключенные, также по умолчанию рендер в Ubuntu Server networkd поэтому нет необходимости объявлять об этом. Взяв информацию из вашего поста, она должна выглядеть так:

network:
    ethernets:
        eht0:
            addresses:
            - 192.168.1.9/24
            gateway4: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
            optional: true
    version: 2

После сохранения файла запустите sudo netplan --debug apply debug Флаг будет выводить больше информации и может помочь обнаружить любые ошибки. Проверьте кабель Ethernet, если в виртуальном режиме проверьте конфигурацию виртуальной машины. При использовании WLAN я прочитал, что это немного сложнее в настройке, но я еще не настроил машину, подключенную к WiFi, с этой версией сервера.

Если вы хотите больше информации о Netplan, есть веб-сайт, у него есть несколько простых примеров конфигурации.

https://netplan.io/

Файл конфигурации имеет формат YAML: не используйте TAB при настройке файла. Работает только с SPACE.

Это была моя проблема.

Написание нового ответа, так как многие просто ошибаются.

Не редактировать 50-cloud-init.yaml, 00-installer-config.yamlили ЛЮБЫЕ сгенерированные системой файлы/файлы пакетов.

Из https://netplan.io/examples/ :

«Чтобы настроить netplan, сохраните файлы конфигурации в /etc/netplan/ с расширением .yaml (например, /etc/netplan/config.yaml) ..»

Это сделал установщик/ система .Теперь вам нужно переопределить его.

Также проконсультируйтесь man netplan-generateдля правил, определяющих, как сетевые конфигурации считываются из /etc/netplan/*.yaml(и в других местах).

Чтобы правильно обновить область сетевого плана для использования статического IP-адреса по DHCP по умолчанию:

Отредактируйте/создайте новый файл (важны добавленная цифра + тире и расширение .yaml):

sudo nano /etc/netplan/99-custom-network.yaml

Добавьте в этот файл свой правильно отформатированный YAML .Пример статического IP:

      network:
  ethernets:
    ens160:
      dhcp4: false
      addresses: [10.10.10.5/24]
      gateway4: 10.10.10.1
      nameservers:
        addresses: [10.10.10.100,8.8.8.8,8.8.4.4]
  version: 2

(Примечание. Мое сетевое устройство ens160- нет eth0- отрегулируйте по мере необходимости.)
Сохранить.
Затем сделайте sudo netplan apply.
Убедитесь, что ваш сетевой интерфейс выглядит правильно и работает ( ip ad/ ping).
Затем сделайте перезагрузку. Повторное тестирование.

Это следует инструкциям netplan.io, а также общему правилу не редактировать какие-либо существующие/установленные файлы, когда это возможно. В /etc/netplan/и аналогичные области конфигурации типа conf.d/ , вы всегда должны выбирать пользовательский/новый файл с большим номером (если возможно) вместо редактирования каких-либо файлов установленных пакетов.

Вот почему они пронумеровали файлы в этих областях конфигурации (в /etc/netplan/ и других). Чем больше число в файле, тем больше значение, когда оно считывается.

Следовательно, что-то с префиксом «99-» обычно читается последним и ЗАМЕНЯЕТ все, что повторяется перед ним. Поэтому, если сетевой интерфейс настроен на DHCP в «00-installer-config.yaml» и/или «50-cloud.init.yaml», настройки для того же интерфейса в файле «99-*.yaml» переопределит все остальное, прочитанное ранее.

Как правило, эти установленные файлы YAML НЕ будут перезаписаны, но это недопустимая логика, чтобы не следовать «стандарту» conf.d использования пользовательских файлов для переопределения и предотвращения редактирования любых установленных файлов. Это не требует дополнительного времени. Закиньте файл в netplan. Сделанный. Таким образом, нет никаких оправданий, как я видел в комментариях «ну, пока это сработало ..».

Таким образом, редактирование сетевого плана по умолчанию *.yaml(s) технически (обычно) «работает», но вам следует избегать их использования, когда это возможно.

Конфигурация сети в 18.04 управляется через netplan и настраивается с помощью cloud-init. Чтобы изменить конфигурацию сети, отредактируйте 50-curtin-networking.cfg файл в /etc/cloud/cloud.cfg.d/. Если этого файла не существует, создайте его.

Найдите название вашего интерфейса

ip address show

Отредактируйте / создайте файл конфигурации сети cloud-init

sudo nano /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg

Чтобы установить статический IP-адрес, используйте ключ адресов, который принимает список (IPv4 или IPv6) адресов вместе с длиной префикса подсети (например, /24). Также может быть предоставлена ​​информация о шлюзе и DNS:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.9/24
      gateway4: 192.168.1.1
      nameservers:
          addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

Вы можете найти больше вариантов конфигурации на https://netplan.io/examples

Перезагрузите конфигурацию cloud-init. Это перезагрузит ваш сервер.

sudo cloud-init clean -r

Это настройка, которая заставляет его работать.

$sudo nano /etc/netplan/50-cloud-init.yaml

network:
   ethernets:
     eth0:          
     addresses:
     - 192.168.1.9/24
     dhcp: false
     gateway4: 192.168.1.1
     nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        - 8.8.4.4
        search: []
  version: 2  

$sudo netplan apply

перезагрузите сервер

замените eth0 на свой адаптер, найдите свой адаптер с помощью ifconfig.

Это сработало для меня:

      dhcp4: no
            dhcp6: no
            addresses: [172.23.4.2/24, ]
            gateway4: 172.23.4.254
            nameservers:
                    addresses: [172.23.4.1, ]

[172.23.4.2/24, ]это дополнительная вещь, которую я сделал на yamlфайл.

Ссылка: https://serverspace.io/support/help/how-to-configure-static-ip-address-on-ubuntu-18-04/

Как настроить статический IP на Ubuntu Server 18.04

Затем отредактируйте файл 50-cloud-init.yaml, используя$sudo vim /etc/netplan/50-cloud-init.yaml


network:
  ethernets:
    eno1:
        addresses:
        - 10.0.1.10/24
        dhcp4: false
        gateway4: 10.0.1.1
        nameservers:
            addresses:
            - 10.0.1.2
            search: []
version: 2

Применять изменения:

$ sudo netplan apply

Чтобы найти доступные интерфейсы Ethernet, используйте ip link show

Затем отредактируйте файл 50-cloud-init.yaml, используя $sudo nano /etc/netplan/50-cloud-init.yaml

Добавьте конфигурацию для доступных интерфейсов, таких как eth0: и eth1:

network:
   ethernets:
     eth0:          
     addresses:
     - 192.168.1.9/24
     dhcp: false
     gateway4: 192.168.1.1
     nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        - 8.8.4.4
        search: []
     eth0:
     addresses:
     - 192.168.1.9/24
     dhcp: false
  version: 2  

Затем используйте команду $sudo netplan apply применить изменения.

Другие вопросы по тегам