Статический IP через netplan
Постоянный адрес нужен серверу: к нему подключаются по SSH, на него пробрасывают порты. Закрепить адрес можно двумя способами:
- в роутере — зарезервировать адрес за компьютером в настройках DHCP роутера. В Ubuntu тогда ничего менять не нужно, и часто это самый простой путь;
- в самой Ubuntu — как описано ниже.
Что узнать заранее
ip -br -4 addr
ip route show defaultЗапишите имя интерфейса (например, enp3s0), маску (обычно /24) и адрес шлюза — он стоит после via. Новый адрес выберите в той же сети, но вне диапазона, который роутер раздаёт по DHCP (его видно в настройках DHCP роутера): иначе однажды роутер выдаст этот адрес другому устройству.
Как задать адрес
Способ зависит от выпуска Ubuntu: на сервере без рабочего стола адрес пишут в файл netplan, на компьютере с рабочим столом — в настройки NetworkManager.
Ubuntu Serverфайл netplan
Найдите файл настроек и откройте его:
ls /etc/netplan/
sudo nano /etc/netplan/50-cloud-init.yamlИмя файла у вас может быть другим, например 00-installer-config.yaml. Найдите в нём блок своего интерфейса и приведите его к такому виду — с именем интерфейса, адресом и шлюзом из раздела «Что узнать заранее»:
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
addresses:
- 192.168.1.50/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.1.1, 1.1.1.1]addresses— адрес и маска;routesсto: default— шлюз. Старая записьgateway4устарела, и netplan выводит о ней предупреждение;nameservers— DNS-серверы: роутер и запасной публичный сервер.
Отступы — только пробелами, как в примере: табуляция в YAML — ошибка.
Оставьте файлу права только для root (имя файла — ваше) и примените настройки:
sudo chmod 600 /etc/netplan/50-cloud-init.yaml
sudo netplan trynetplan try применяет настройки и ждёт, пока вы нажмёте Enter. Если за 120 секунд подтверждения нет, он возвращает прежние настройки — так ошибка не отрежет сервер от сети. После подтверждения новые настройки действуют и после перезагрузки. Проверьте результат: ip -br -4 addr и ping -c 3 ubuntu.com.
Если вы подключены по SSH и меняете сам адрес сервера, соединение оборвётся, и подтвердить netplan try не получится — через 120 секунд вернётся старый адрес. В этом случае применяйте настройки командой sudo netplan apply и подключайтесь уже по новому адресу. Делайте так, только если есть запасной доступ: консоль в панели хостинга или клавиатура сервера.
Если в начале файла написано, что его создаёт cloud-init и изменения не сохранятся (так бывает на облачных серверах), запретите cloud-init менять сеть. Создайте файл /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg с одной строкой network: {config: disabled}.
Ubuntu Desktopпараметры или nmcli
На компьютере с рабочим столом сетью управляет NetworkManager. Мышью адрес задают в параметрах системы: «Параметры» → «Сеть» → значок шестерёнки у подключения → вкладка «IPv4» → «Вручную». Впишите адрес, маску, шлюз и DNS, нажмите «Применить», затем выключите и снова включите подключение.
То же командой nmcli (адреса в командах — из примера, подставьте свои):
nmcli connection show
sudo nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns "192.168.1.1 1.1.1.1"
sudo nmcli connection up "Wired connection 1"Имя подключения возьмите из первого столбца nmcli connection show: в русской системе оно тоже по-русски. Вернуть автоматическую настройку:
sudo nmcli connection modify "Wired connection 1" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
sudo nmcli connection up "Wired connection 1"Если не работает
Invalid YAMLилиError in network definition— ошибка в отступах или опечатка в имени ключа. Сверьтесь с примером строка за строкой.- Адрес есть, а интернета нет — проверьте шлюз (
ip route show default) и DNS (resolvectl status). - Предупреждение
Permissions for /etc/netplan/... are too open— у файла слишком широкие права:sudo chmod 600с именем файла. - Связь пропадает время от времени — этот же адрес выдан ещё кому-то. Выберите адрес вне диапазона DHCP роутера.