Сетевые настройки Linux.

Здравствуйте читатели и гости моего блога. Сегодня я хочу рассказать о сетевых настройках в системах CentOS и Debian. Прежде всего статья будет полезна новичкам в Linux. Все действия описываемые в этой статье, рекомендую сначала воспроизводить на виртуальной машине, для тренировки, во избежание неприятностей на реальной машине в сети. Владельцам VPS/VDS как правило не приходится проводить настройку сети, обычно там все уже настроено при создании, но тем не менее для новичков статья лишней не будет.

Как узнать свой ip-адрес

Чтобы узнать ip-адрес системы можно выполнить следующие команды:

На данный момент команда ifconfig является хоть и устаревшей, но еще работающей командой (В CentOS требуется установить пакет net-tools). Начиная с ядра версии 2.2 ей на смену пришел пакет iproute2, состоящий из утилит: ip, tc, ss.

Настройка сетевых интерфейсов в CentOS

Настройка сетевых интерфейсов в CentOS происходит путем правки конфигурационных файлов. Файлы интерфейсов хранятся в директории /etc/sysconfig/network-scripts, каждый отвечает за свой интерфейс, таким образом сколько интерфейсов, столько и файлов. Во время установки создается дефолтный файл с именем - ifcfg-enp0s3.

Рассмотрим самые важные параметры и значения, чтобы понимать что к чему. Более подробно все параметры описаны в официальной документации Red Hat.

  • TYPE - задает тип сетевого адаптера, в данном случае "Ethernet".
  • BOOTPROTO - способ назначения ip-адреса. Может иметь значения: dhcp — динамический ip-адрес, static или none — статический ip-адрес.
  • DEFROUTE - использовать интерфейс в качестве маршрута по умолчанию. Значения yes или no.
  • IPV4_FAILURE_FATAL - В случае отсутствия IPv4 протокола закрывать соединение, по умолчанию no.
  • NAME - имя интерфейса.
  • DEVICE - имя устройства.
  • UUID - идентификационный номер интерфейса.
  • ONBOOT - старт интерфейса при загрузке, значения yes или no.
  • IPV6INIT - включение поддержки IPv6 протокола, значения yes или no.
  • IPV6_AUTOCONF
    IPV6_DEFROUTE
    IPV6_PEERDNS
    IPV6_PEERROUTES
    IPV6_FAILURE_FATAL - дополнительные параметры для IPv6 протокола.

Подобная конфигурация означает получение динамического ip-адреса при каждом запуске. Для назначения статического адреса нужно изменить несколько параметров.

  • BOOTPROTO=none - изменяем на none, тем самым указывая что ip будет статическим.
  • IPADDR=192.168.1.6 - назначаем сам адрес.
  • NETMASK=255.255.255.0 - задаем маску подсети.
  • GATEWAY=192.168.1.1 - указываем адрес шлюза.
  • DNS1=192.168.1.1 - задаем адреса DNS серверов.

После внесенных изменений файл должен принять следующий вид, естественно с поправками на ваши значения адресов.

Перезапустим интерфейс для применения изменений.

Настройка сетевых интерфейсов в Debian & Ubuntu

За конфигурацию интерфейсов в Debian отвечает файл interfaces, расположенный в каталоге /etc/network/. В Debian & Ubuntu все интерфейсы прописываются в одном файле. В Debian интерфейсы именуются eth0, eth1 и т.д. В Ubuntu - enp0s3 и т.д.

Данная конфигурация обозначает получение динамического ip-адреса при загрузке системы.

  • allow-hotplug eth0 - инициализация интерфейса eth0 при определении ядром, грубо говоря запуск.
  • iface eth0 inet dhcp - назначение динамического адреса для eth0, значение inet dhcp.
  • iface lo inet loopback - интерфейс обратной петли lo, локальный интерфейс другими словами.
  • auto lo - старт при загрузке.

Строки начинающиеся со слов "auto", используются для идентификации интерфейсов при их подъеме командой ifup -a (c доп. опцией -a), именно так поднимает интерфейсы система при загрузке. Имена интерфейсов следуют за словом "auto" в этой же строке, ifup поднимет их в порядке перечисления. Строк начинающихся с "auto" может быть несколько.

Строки, начинающиеся со слов "allow-" используются для идентификации интерфейсов, которые должны быть подняты автоматически различными подсистемами.

Для задания интерфейса со статическим ip-адресом могут использоваться следующие опции.

  • inet static - указывает на статический ip-адрес
  • address - задает ip-адрес
  • netmask - указание маски подсети
  • gateway - указание шлюза
  • network - указание адреса подсети
  • broadcast - указание широковещательного канала.
  • dns-nameservers - указывает имена DNS-серверов (Если установлен пакет resolvconf)

Интерфейс настроенный на получение статического ip-адреса будет выглядеть так.

Для применения изменений перезапустим интерфейс.

Изменение hostname в CentOS

Для изменения hostname в CentOS нужно проделать несколько манипуляций с конф. файлами. Чтобы узнать текущее имя выполним команду hostname.

Текущее имя системы test. Я хочу изменить его на techlist, делаем следующее.

Изменение hostname в Debian

Существует несколько способов изменения hostname в Debian. Первый способ самый простой, но временный, он действует до первой перезагрузки. Выполните команду - hostname newname, где newname надо заменить на имя которое хотите присвоить системе.

Например я хочу изменить имя системы на techlist

Как я уже говорил, оно действует только до первой перезагрузки системы, так как при загрузке системы идет считывание имени из файла /etc/hostname.

Чтобы изменить имя системы при помощи файла /etc/hostname, отредактируем его:

Чтобы применить изменения внесенные в файл hostname, надо выполнить скрипт hostname.sh

Настройка DNS в CentOS

За настройку DNS-серверов в CentOS отвечают два файла: сам файл сетевого интерфейса и файл resolv.conf в директории /etc.

Если править отдельно resolv.conf, то после перезапуска интерфейса изменения не сохранятся. Они будут автоматически заменены на значения указанные в файле ifcfg-enp0sX. Это из-за того что в файле интерфейса есть параметр "PEERDNS=yes", когда он включен происходит замена адресов DNS в файле resolv.conf, на значения из файла интерфейса.

Чтобы изменить значения DNS серверов в CentOS, достаточно внести правку в файл интерфейса, при включенном параметре PEERDNS.

Настройка DNS в Debian

Назначить DNS сервера в Debian можно несколькими способами. Правкой файла /etc/resolv.conf и использованием утилиты resolvconf, только не путайте, это совершенно разные вещи.

Прежде чем настраивать DNS нужно узнать стоит ли пакет resolvconf или нет. Узнать можно так:

Если  resolvconf не установлен, то можно добавить адреса DNS сразу в файл /etc/resolv.conf, сохранить изменения и перезапустить интерфейс.

Со временем система обживается, появляются новые программы изменяющие содержимое файла resolv.conf, поэтому лучше использовать утилиту resolvconf. Если утилита отсутствует, например при минимальной установке системы, то ее необходимо поставить.

После установки файл /etc/resolv.conf заменяется ссылкой на /etc/resolvconf/run/resolv.conf. Если понадобится внести свои значения DNS, то сделать это можно через файл интерфейсов.

После чего добавленные DNS адреса, пропишутся в файл resolv.conf автоматически.

Отключение IPv6 протокола

Протокол IPv6 - технология предоставляющая более обширное пространство ip-адресов нежели привычный IPv4. На данный момент редко используется и поддерживается не всем сетевым оборудованием. Если IPv6 не поддерживается вашим маршрутизатором или провайдером, то имеет смысл его отключить, поскольку замедляется общая работа сети; дольше определяются имена сайтов, выполняются ненужные попытки получения IPv6 адресов, это приводит к лишним задержкам.

Узнать свой IPv6 адрес можно следующим способом

Строка начинающаяся с - inet6 fe80::5054:ff:fe8b:f117/64 и есть искомый адрес. Поддержка IPv6 включена в Linux по умолчанию, но это не означает что его может поддерживать ваш провайдер. Чтобы проверить поддержку IPv6 вашим провайдером, можно выполнить пинг ipv6.google.com. Если обмен пакетами происходит, то протокол поддерживается, если нет, то будет следующее.

Перед тем как отключить поддержку IPv6 протокола надо узнать какая из программ использует его на текущий момент.

Все что начинается с ::: это IPv6, его используют три демона: sshd, chronyd и master (postfix). Для того чтобы исключить ошибки в дальнейшей работе, надо отключить IPv6 для каждого.

В CentOS

Отключение поддержки IPv6 протокола в CentOS происходит следующим образом.

Проверим настройки:

Также можно убрать все строки начинающиеся с IPV6 в конфигурационном файле интерфейса.

В Debian & Ubuntu

В Debian отключение поддержки IPv6 происходит посредством правки файла sysctl.conf или при помощи правки файла grub.

Редактируем /etc/sysctl.conf

Применить изменения в файле sysctl.conf

Проверим изменения.

Иногда бывает что IPv6 приходится отключать путем редактирования параметров загрузки ядра.

Теперь нужно обновить конфигурацию загрузчика.

Потом перезагрузить систему.

Проверяем.

Тут тоже нет строк начинающихся с "inet6", значит порядок.