Глиф Учебники

Статический IP в Debian

Справочник · Debian · 2 минуты чтения

Постоянный адрес задают там, где система берёт настройки сети: на сервере без рабочего стола — в файле /etc/network/interfaces, на компьютере с рабочим столом — в NetworkManager.

Как задать адрес

Сервер без рабочего столафайл /etc/network/interfaces

Узнайте имя интерфейса (ip -br a, например enp1s0) и шлюз (ip route, строка default via), откройте файл:

Bash
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
sudo nano /etc/network/interfaces

Первая команда сохраняет копию — к ней можно вернуться. Найдите строку iface enp1s0 inet dhcp и замените блок интерфейса таким — с именем интерфейса, адресом и шлюзом своей сети:

Текст
auto enp1s0
iface enp1s0 inet static
    address 192.168.1.20/24
    gateway 192.168.1.1
  • auto enp1s0 — поднимать интерфейс при загрузке (вместо прежней строки allow-hotplug enp1s0; оставлять обе не нужно);
  • address 192.168.1.20/24 — адрес и размер сети; можно и по-старому, двумя строками: address 192.168.1.20 и netmask 255.255.255.0;
  • gateway 192.168.1.1 — адрес роутера.

Строки auto lo и iface lo inet loopback в начале файла не трогайте.

Выберите адрес вне диапазона, который раздаёт роутер по DHCP, иначе он однажды достанется другому устройству. Диапазон указан в настройках роутера, в разделе DHCP.

DNS

Серверы DNS записаны в /etc/resolv.conf:

Bash
sudo nano /etc/resolv.conf

Одна строка на сервер, например nameserver 192.168.1.1. Строка dns-nameservers 192.168.1.1 в /etc/network/interfaces работает, только если установлен пакет resolvconf; без него её не читает никто.

Применить

Самый надёжный способ — перезагрузка:

Bash
sudo reboot

После неё сервер будет доступен уже по новому адресу: ssh ivan@192.168.1.20.

Без перезагрузки, сидя за самим сервером, интерфейс перезапускают так: до правки файла опустите его командой sudo ifdown enp1s0, поправьте файл, затем поднимите — sudo ifup enp1s0. Если сначала поправить файл, а потом перезапустить сеть (sudo systemctl restart networking), старый адрес, полученный по DHCP, иногда остаётся рядом с новым до перезагрузки.

Проверка:

Bash
ip -br a
ip route
ping -c 4 deb.debian.org

Ошибка в адресе или шлюзе отрезает сервер от сети. Меняйте адрес удалённого сервера, только если есть доступ к его экрану — консоль виртуальной машины или панели хостинга. Вернуть прежние настройки: sudo cp /etc/network/interfaces.bak /etc/network/interfaces и перезагрузка.

Дальше: «Если не работает»

Рабочий столNetworkManager

На компьютере с рабочим столом адресом управляет NetworkManager — в настройках сети откройте подключение и на вкладке IPv4 выберите ручной способ. Из терминала то же делает nmcli. Сначала узнайте имя подключения:

Bash
nmcli connection show

Имя — в первом столбце, в русской системе, например, Проводное подключение 1. Затем:

Bash
sudo nmcli connection modify "Проводное подключение 1" ipv4.method manual ipv4.addresses 192.168.1.20/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
sudo nmcli connection up "Проводное подключение 1"

Вернуть автоматический адрес:

Bash
sudo nmcli connection modify "Проводное подключение 1" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
sudo nmcli connection up "Проводное подключение 1"

Не описывайте один и тот же интерфейс и в /etc/network/interfaces, и в NetworkManager: интерфейс из файла NetworkManager считает чужим и не управляет им.

Если не работает