Статический IP в Debian
Постоянный адрес задают там, где система берёт настройки сети: на сервере без рабочего стола — в файле /etc/network/interfaces, на компьютере с рабочим столом — в NetworkManager.
Как задать адрес
Сервер без рабочего столафайл /etc/network/interfaces
Узнайте имя интерфейса (ip -br a, например enp1s0) и шлюз (ip route, строка default via), откройте файл:
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.1auto 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:
sudo nano /etc/resolv.confОдна строка на сервер, например nameserver 192.168.1.1. Строка dns-nameservers 192.168.1.1 в /etc/network/interfaces работает, только если установлен пакет resolvconf; без него её не читает никто.
Применить
Самый надёжный способ — перезагрузка:
sudo rebootПосле неё сервер будет доступен уже по новому адресу: ssh ivan@192.168.1.20.
Без перезагрузки, сидя за самим сервером, интерфейс перезапускают так: до правки файла опустите его командой sudo ifdown enp1s0, поправьте файл, затем поднимите — sudo ifup enp1s0. Если сначала поправить файл, а потом перезапустить сеть (sudo systemctl restart networking), старый адрес, полученный по DHCP, иногда остаётся рядом с новым до перезагрузки.
Проверка:
ip -br a
ip route
ping -c 4 deb.debian.orgОшибка в адресе или шлюзе отрезает сервер от сети. Меняйте адрес удалённого сервера, только если есть доступ к его экрану — консоль виртуальной машины или панели хостинга. Вернуть прежние настройки: sudo cp /etc/network/interfaces.bak /etc/network/interfaces и перезагрузка.
Рабочий столNetworkManager
На компьютере с рабочим столом адресом управляет NetworkManager — в настройках сети откройте подключение и на вкладке IPv4 выберите ручной способ. Из терминала то же делает nmcli. Сначала узнайте имя подключения:
nmcli connection showИмя — в первом столбце, в русской системе, например, Проводное подключение 1. Затем:
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"Вернуть автоматический адрес:
sudo nmcli connection modify "Проводное подключение 1" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
sudo nmcli connection up "Проводное подключение 1"Не описывайте один и тот же интерфейс и в /etc/network/interfaces, и в NetworkManager: интерфейс из файла NetworkManager считает чужим и не управляет им.
Если не работает
ip -br aпоказывает два адреса — старый, от DHCP, ещё не ушёл. Перезагрузите сервер.- Адрес есть, а интернета нет — проверьте строку
gatewayиip route: должна быть строкаdefault via. - Адреса по IP открываются, а имена нет — проверьте
/etc/resolv.conf. - Интерфейс не поднялся (
DOWNвip -br a) — ошибка в имени интерфейса или опечатка в файле; посмотритеsudo journalctl -u networking -b.