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

29

Я видел, как некоторые люди говорят, что файл для установки статического 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но это просто убивает подключение серверов к интернету.

final20
источник
Это рабочий стол или сервер?
user68186
Это свежая 18.04 установка или обновление с другой версии?
WinEunuuchs2Unix
Извините, я должен был сказать это в тексте, это свежая установка сервера 18.04.
финал20
Самым простым решением для меня было указать статический IPv4-адрес прямо во время установки (вместе с подсетью, шлюзом и т. Д.). Просто заполните несколько полей мастера, не связываясь с файлами конфигурации.
Уве Кейм
Вы также можете сделать это на маршрутизаторах. Шаги не требуют пояснений в конфигурации маршрутизатора.
Сотрудники EODCraft

Ответы:

13

Это задает статическую 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 : используйте пробелы, без вкладок.
Беньямин Джафари
источник
не
удается пропинговать
ОК .... я могу пинг после этогоservice networking restart
user2763554
1
Я бы не стал этого делать, так как этот файл создан CloudInit
Людовик Куты
13

Все ответы, /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]
Людовик Куты
источник
2
Это прекрасно работает. Это должен быть лучший ответ. 50-cloud-init.yaml, как указано, не должен изменяться.
Реликт
2
Если вы все еще используете CloudInit, вам нужно сделать a, sudo cloud-init clean -rчтобы получить изменение, согласно ответу veperr (по крайней мере, для меня на Ubuntu Server 18.04.3).
Стюарт Росситер
1
... плюс, rendererкажется, строка больше не действительна (и отсутствует в базовой версии редактируемого файла).
Стюарт Росситер
6

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

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

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

https://netplan.io/

badger_8007
источник
5

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

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

HubbleT
источник
4

Я нашел другой способ, используя 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.

veperr
источник
0

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

$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.

Digerate
источник
0

Чтобы найти доступные интерфейсы 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чтобы применить изменения.

Ананд Пракаш Сингх
источник
0

Как настроить статический 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

yousif3350
источник
Я бы не стал этого делать, так как этот файл создан CloudInit.
Людовик Куты
Почему в каждом руководстве по установке статического IP-адреса 18.04 говорится, что мне нужно отредактировать файл yaml, который говорит, что это динамически создаваемый файл, который не будет сохраняться? Еще одна жестокая шутка от разработчиков Ubuntu, которые думают, что это нормально - просто сломать вещи по умолчанию ...
Bigtexun
0

Конфигурация сети в 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
Райан
источник