Сетевые настройки на сервере Debian
Настройка статического IP
Вы установили сервер и во время установки указали какие-то сетевые параметры, или не указали, не важно. Но сейчас вы решили, что вам нужно назначить статический ip (static ip) адрес. Воспользуемся для этого утилитой ip. Сначала посмотрим список всех сетевых интерфейсов:
# ip a

У меня в системе 1 сетевой интерфейс eth0 и он каким-то образом уже сконфигурирован. Назначим ему еще один статический адрес:
# ip addr add 192.168.80.35/24 dev eth0
Этот адрес будет добавлен к уже существующему адресу. Проверим это:
# ip a

Теперь сервер будет доступен по обоим адресам. Текущая настройка сохранится только до перезагрузки сервера. Чтобы она применялась во время загрузки, нужно либо каким-то образом добавить команду на изменение настроек в автозагрузку, например в /etc/rc.local, но это будет костыль. Правильнее отредактировать файл, который отвечает за сетевые настройки в debian — /etc/network/interfaces. Для того, чтобы назначить постоянный статический ip адрес, его нужно привести к следующему виду:
# mcedit /etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.80.201
gateway 192.168.80.1
netmask 255.255.255.0
auto | указанный интерфейс необходимо запускать автоматически при загрузке системы |
iface | интерфейс eth0 находится в диапазоне адресов IPv4 со статическим ip |
address | статический ip адрес |
gateway | шлюз по-умолчанию |
netmask | маска сети |
Для проверки перезагружаем сервер и смотрим, все ли в порядке с настройкой статического ip адреса. Если вам нужно сменить ip адрес в debian, то вы можете временно изменить его с помощью команды ip, либо постоянно, отредактировав параметр address в файле сетевых настроек interfaces.
Получение сетевых настроек по DHCP
Теперь рассмотри вариант, когда вам необходимо получить динамический ip адрес в Debian. Здесь по аналогии с предыдущими настройками можно пойди двумя путями:
- Получить ip адрес по dhcp в консоли с помощью программы dhclient, который будет работать до перезагрузки.
- Отредактировать файл конфигурации сетевых интерфейсов.
Смотрим снова на текущую конфигурацию сети:
# ip a

Выполним команду на получение ip адреса по dhcp и проверим сеть

В качестве второго ip мы получили адрес от dhcp сервера. Если у вас несколько сетевых интерфейсов, то необходимо добавлять название после команды, например вот так:
# dhclient eth0
Для того, чтобы сбросить адрес, нужно воспользоваться следующим ключом:
# dhclient -r
Обращаю внимание, что эта команда сбросит все ip адреса интерфейса, в том числе и статические. Чтобы снова запросить адрес, нужно выполнить предыдущую команду на получение ip с указанием сетевого интерфейса eth0.
Все изменения, сделанные в консоли после перезагрузки, исчезнут. Чтобы их сохранить, приведем файл /etc/network/interfaces к следующему виду:
# mcedit /etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Установка шлюза по-умолчанию (default gateway)
Теперь разберемся со шлюзом по-умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по-умолчанию шлюз в debian, можно воспользоваться следующей командой в консоли:
# ip r sh
default via 192.168.80.1 dev eth0
192.168.80.0/24 dev eth0 proto kernel scope link src 192.168.80.24
Это шлюз по-умолчанию (default gateway). Можно воспользоваться другими, более популярными и привычными командами:
# route
# netstat -nr
Если получите ошибки:
Значит у вас не установлен пакет net-tools. Установить его можно следующей командой.
# apt install net-tools
Сетевые инструменты из пакета net-tools объявлены устаревшими и не включены в состав базовой системы. Я ими продолжаю пользоваться, потому что мне нравится их вывод больше, чем у команды ip. Netstat мне видится более информативным, хотя по сути, они все показывают одно и то же. Отказ в пользу утилиты ip идет по той причине, что она объединяет в себе все основные сетевые инструменты. Удобнее пользоваться только ей одной для настройки сети, нежели разными утилитами для разных целей.
Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый.
# route del default gw 192.168.80.1
# route add default gw 192.168.80.50
То же самое, только с помощью ip:
# ip route del default # ip route add default via 192.168.80.50
Проверяем, что получилось:
# ip r sh
default via 192.168.80.50 dev eth0
192.168.80.0/24 dev eth0 proto kernel scope link src 192.168.80.24
Все получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл interfaces, либо, при необходимости, придумывайте что-то еще.
Как указать DNS сервер
Остался последний из основных сетевых параметров — dns сервер. С ним в debian и ubuntu есть определенная путаница. Традиционно в linux для установки dns серверов используется файл /etc/resolv.conf. Но в какой-то момент в этих дистрибутивах появилась программа resolvconf, которая стала управлять настройками dns в системе. В итоге, файл resolv.conf постоянно перезаписывается этой программой. Нужна она в первую очередь для систем, где dns сервера постоянно меняются. Она следит за их изменением и корректно передает информацию об изменении программам, для которых это важно. Я лично не знаю таких программ и мне не приходилось сталкиваться с ситуацией, когда это было необходимо.
Если я не ошибаюсь, то в минимальной конфигурации debian программа resolvconf не устанавливается, а вот в ubuntu она стоит. Проверить наличие программы очень просто:
# dpkg -l | grep resolvconf
Если в выводе пусто, значит ее нет. Тогда все очень просто. Для того, чтобы указать dns сервер, достаточно его записать в файл /etc/resolv.conf в следующем виде:
# mcedit /etc/resolv.conf
nameserver 192.168.80.1
nameserver 77.88.8.1
nameserver 8.8.8.8
nameserver 1.1.1.1
nameserver 9.9.9.9
192.168.80.1 | локальный dns сервер |
77.88.8.1 | публичный сервер Яндекса |
8.8.8.8 | публичный сервер Гугла |
1.1.1.1 | публичный сервер cloudflare |
9.9.9.9 | публичный сервер Quad9 |
Я на всякий случай указал локальный сервер и 3 внешних. Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой:
# apt-get remove resolvconf
После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку /etc/resolv.conf, а вместо нее создать файл с нужным содержанием, которое я привел выше.
Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле /etc/network/interfaces, добавив к параметрам интерфейса еще один:
dns-nameservers 192.168.1.1 77.88.8.1 8.8.8.8 1.1.1.1 9.9.9.9
Этот параметр нужно установить сразу после указания шлюза gateway. Несколько адресов разделяются пробелом.
Изменить hostname (имя хоста)
Во время установки debian вы указывали имя хоста. Посмотреть его текущее значение можно в консоли:
# hostname
debian
Это значение записано в файле /etc/hostname. Есть 2 способа изменить hostname в debian:
- Простой и быстрый с помощью консольной команды. Результат работает только до перезагрузки компьютера. Потом вернется старое имя.
- С помощью изменения конфигурационного файла результат сохраняется и после перезагрузки. Чтобы сразу применить изменение, потребуется выполнить системный скрипт.
Для первого способа достаточно в консоли ввести команду:
hostname debian_local
Теперь проверим, что получилось:
# hostname
debian_local
Имя хоста изменилось, но в файле /etc/hostname по-прежнему указано прошлое значение. После перезагрузки hostname снова примет старое значение debian. Чтобы сделать постоянное изменение, необходимо ввести новое значение в файл вручную:
# mcedit /etc/hostname
debian_local
Изменение вступит в силу после перезагрузки. Если воспользоваться командой:
# hostnamectl set-hostname debian_local
то изменения применятся сразу же. Этот способ более правильный, рекомендую использовать именно его. Теперь проверьте текущее значение имени хоста. Оно изменится на то, что вы указали в команде.
2 и более IP на одном интерфейсе
Достаточно часто возникают ситуации, когда необходимо назначить несколько ip на одном интерфейсе. Сделать это очень просто. В самом начале я показал, как быстро через консоль в Debian можно назначить несколько ip c помощью программы. Теперь сделаем так, чтобы эти настройки сохранялись после перезагрузки. Для этого редактируем наш любимый и ненаглядный /etc/network/interfaces:
# mcedit /etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth0:1
iface eth0:1 inet static
address 192.168.80.25
netmask 255.255.255.0
С такими настройками я получу 2 ip адреса на сетевом интерфейсе:
- Первый от dhcp сервера.
- Второй адрес на этой же сетевой карте будет указан статически
Важное замечание. Если после указанного выше добавления к динамическому адресу статического, вы перезапустите сеть, то останется только статический адрес. Если же просто перезагрузите сервер, то все будет правильно — динамика и статика. Почему так происходит — не знаю.
Вы таким образом можете добавить сколько вам необходимо адресов, используя различные параметры.
Уведомление: Proxmox Backup Server установка и настройка | Чип и Дел
Уведомление: Как установить Proxmox VE 7 на Debian 11 | Чип и Дел