Як встановити статичний 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але це просто вбиває з'єднання серверів з Інтернетом.


Це робочий стіл чи сервер?
user68186

Це свіжа установка або оновлення 18.04 з іншої версії?
WinEunuuchs2Unix

Вибачте, що я повинен був сказати це в тексті, його свіжої установки 18.04 сервера.
фінал20

Найпростішим рішенням для мене було - вказати статичну адресу IPv4 прямо під час встановлення (разом із підмережею, шлюзом тощо). Просто заповніть декілька полів майстра, не возившись з файлами конфігурації.
Уве Кеїм

Ви також можете це зробити на маршрутизаторах. Кроки є зрозумілими в конфігурації маршрутизатора.
Персонал EODCraft

Відповіді:


13

Для цього встановлено статичну інструкцію щодо IP в Ubuntu-сервері 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 це ваше ім'я Ethernet, ви можете отримати його за допомогою $ ifconfig
  • Конфігурація мережевого інтерфейсу Ubuntu 16.04 та 14.04 мають інший метод.
  • Файл у форматі YAML : Використовуйте пробіли, без вкладок.

не в змозі пінгувати після призначення статичної IP-адреси
user2763554

Гаразд .... Я можу пінг після цьогоservice networking restart
користувач2763554

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-хмара-init.yaml, як зазначено, не слід змінювати.
Реліквія

2
Якщо ви все ще використовуєте CloudInit, вам потрібно зробити, 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, 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 applydebug вихідний прапор буде більше інформації та може допомогти виявити помилки. Перевірте кабель Ethernet, якщо у віртуальному перегляньте конфігурацію VM. Якщо ви користуєтеся WLAN, я прочитав, що налаштування трохи складніше, але я ще не налаштував машину, підключену до WiFi з цією версією сервера.

Якщо ви хочете отримати більше інформації про Netplan, є веб-сайт, він має кілька основних прикладів конфігурації.

https://netplan.io/


5

Налаштування файлу у форматі YAML : Не використовуйте TAB під час налаштування файлу. Він працює лише з SPACE .

Це було моє питання.


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.


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.


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


Я б цього не робив, оскільки цей файл генерується 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

Відредагуйте / створіть файл конфігурації мережі хмара-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

Перезавантажте конфігурацію хмари-init. Це перезавантажить ваш сервер.

sudo cloud-init clean -r
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.