Настройка сети в Linux - работа с файлами конфигурации

Конфигурация интерфейса

Подключить компьютер с Linux к сети довольно просто, кроме случаев, когда это не так. В этой статье я расскажу об основных файлах конфигурации сети для дистрибутивов Linux на основе Red Hat и взгляну на две службы запуска сети: почтенный запуск сети и спорный NetworkManager.

Linux легко управляет несколькими адаптерами сетевого интерфейса. Ноутбуки обычно включают как проводные, так и беспроводные интерфейсы, а также могут поддерживать интерфейсы WiMax для сотовых сетей. Настольные компьютеры Linux также поддерживают несколько сетевых интерфейсов, и вы можете использовать свой компьютер Linux в качестве многосетевого клиента или в качестве маршрутизатора для внутренних сетей. Так обстоит дело с парой моих собственных систем.

Соглашения об именах сетевых интерфейсов

Соглашения об именах для сетевых интерфейсов были простыми, несложными и, как мне показалось, легкими. Использование ethX показалось мне логичным и с ним было легко работать. Не требовалось дополнительных шагов, чтобы выяснить, какое длинное и неясное имя принадлежало интерфейсу. К сожалению, добавление нового интерфейса часто вызывало переименование сетевых интерфейсов, что нарушало работу скриптов и конфигураций.

После непродолжительной работы с некоторыми длинными и непонятными именами сетевых интерфейсов у нас теперь есть третий набор соглашений об именах, которые кажутся лишь незначительно лучше. Такие имена, как ethX, все еще используются в CentOS 6.x. Новейшие соглашения об именах, такие как eno1 и enp0s3, используются RHEL 7, CentOS 7 и более поздними выпусками Fedora.

Примеры конфигурационных файлов

В этом примере файл конфигурации сетевого интерфейса ifcfg-eth0 определяет конфигурацию статического IP-адреса для установки сервера CentOS 6.

Этот файл запускает интерфейс при загрузке, назначает ему статический IP-адрес, определяет домен и сетевой шлюз, указывает два DNS-сервера и не позволяет пользователям без полномочий root запускать и останавливать интерфейс.

Следующий файл конфигурации интерфейса, ifcfg-eno1, предоставляет конфигурацию DHCP для настольной рабочей станции.

Во втором примере файла конфигурации записи DHCP, IP-адрес, домен поиска и вся другая информация о сети не определены, поскольку они предоставляются сервером DHCP. Элементы конфигурации, такие как DNS-серверы, могут быть переопределены в файле конфигурации интерфейса путем добавления строк DNS1 и DNS2, как в предыдущем примере статической конфигурации.

Обратите внимание, что этот второй пример содержит строку UUID. Насколько я могу судить, эта строка не влияет на функциональность файла конфигурации. Я обычно выделяю это в комментарий или даже удаляю. Но ничем плохим это пока еще не закончилось.

В обоих файлах конфигурации интерфейса строка HWADDR указывает MAC-адрес физического сетевого интерфейса. Это связывает физический интерфейс с файлом конфигурации интерфейса. Вы должны изменить MAC-адрес в файле, если вы заменяете интерфейс.

Варианты конфигурации

Есть множество различных опций конфигурации для файлов конфигурации интерфейса. Вот некоторые из наиболее распространенных вариантов:

DEVICE: логическое имя устройства, например, eth0 или enp0s2;

HWADDR: MAC-адрес сетевой карты, связанной с файлом, например, 00: 16: 76: 02: BA: DB;

ONBOOT: запуск сети на этом устройстве при загрузке хоста. Варианты yes/no. Обычно это значение равно «no», и сеть не запускается, пока пользователь не войдет в систему на рабочем столе. Если если вам нужно, чтобы сеть запускалась, когда никто не вошел в систему, установите для этого параметра значение «yes»;

IPADDR: IP-адрес, назначенный этому NIC, например, 192.168.0.10;

BROADCAST: широковещательный адрес для этой сети, такой как 192.168.0.255;

NETMASK: маска сети для этой подсети, например, маска класса C 255.255.255.0;

NETWORK: идентификатор сети для этой подсети, например, идентификатор класса C 192.168.0.0;

SEARCH: DNS-имя домена для поиска при поиске на неквалифицированных именах хостов, таких как "example.com";

BOOTPROTO: протокол загрузки для этого интерфейса. Варианты: static, DHCP, bootp, none. Опция «none» по умолчанию является статической;

GATEWAY: сетевой маршрутизатор или шлюз по умолчанию для этой подсети, например, 192.168.0.254;

ETHTOOL_OPTS: эта опция используется для установки определенных элементов конфигурации интерфейса для сетевого интерфейса, таких как скорость, состояние дуплекса и состояние автосогласования. Поскольку этот параметр имеет несколько независимых значений, значения должны быть заключены в один набор кавычек, например: «autoneg off speed 100 duplex full»;

DNS1: основной DNS-сервер, например, 192.168.0.254, который является сервером в локальной сети. Указанные здесь DNS-серверы добавляются в файл /etc/resolv.conf при использовании NetworkManager или когда для директивы peerdns задано значение yes. В противном случае DNS-серверы необходимо добавить в /etc/resolv.conf вручную и игнорировать здесь;

DNS2: вторичный DNS-сервер, например, 8.8.8.8, который является одним из бесплатных DNS-серверов Google. Обратите внимание, что третичный DNS-сервер не поддерживается в файлах конфигурации интерфейса, хотя третий может быть настроен в энергонезависимом файле resolv.conf;

TYPE: Тип сети, обычно Ethernet. Единственная другая ценность, которую я тут когда-либо видел, была Token Ring, но сейчас она в основном не имеет значения;

PEERDNS: опция yes указывает, что файл /etc/resolv.conf необходимо изменить, вставив в этот файл записи DNS-сервера, указанные в параметрах DNS1 и DNS2. «No» означает не изменять файл resolv.conf. «Yes» – это значение по умолчанию, если в строке BOOTPROTO указан DHCP;

USERCTL: указывает, могут ли непривилегированные пользователи запускать и останавливать этот интерфейс. Варианты yes/no;

IPV6INIT: указывает, применяются ли протоколы IPV6 к этому интерфейсу. Варианты yes/no.

Если указан параметр DHCP, большинство других параметров игнорируются. Единственными необходимыми опциями являются BOOTPROTO, ONBOOT и HWADDR. Другими опциями, которые могут оказаться полезными и которые не игнорируются, являются опции DNS и PEERDNS, если вы хотите переопределить записи DNS, предоставленные сервером DHCP.

Устаревший сетевой файл

Существует один старый и теперь уже устаревший файл, с которым вы можете столкнуться. Сетевой файл обычно содержит только одну строку комментария для текущих выпусков Fedora, RHEL и CentOS. Он находится в /etc/sysconfig и использовался в прошлом для включения или отключения сети. Он также использовался для установки имени сетевого узла, как показано в следующем примере:

Этот файл присутствует, но не используется в Fedora с момента выпуска версии 19. Он по-прежнему используется в RHEL/CentOS 6.x, но больше не используется в RHEL/CentOS 7.x. Имя сетевого узла теперь задается в файле /etc/hostname.

Другие сетевые файлы

Каталог /etc/sysconfig/network-files содержит много других файлов, которые обычно являются исполняемыми скриптами BASH, а не файлами конфигурации. По крайней мере, для меня это одно из надоедливых исключений в Стандарте иерархии файловой системы Linux (FHS), в котором прямо указывается, что в дереве /etc должны находиться только файлы конфигурации, а не исполняемые файлы.

Еще один файл конфигурации сети, который вы можете найти в /etc/sysconfig/network-files, это файл route-<interface>. Если вы хотите настроить статические маршруты в многодомной системе, создайте файл маршрута для каждого интерфейса. Например, следующий файл называется route-eth0 и определяет маршруты для этого конкретного интерфейса как для сетей, так и для отдельных хостов.

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

С появлением беспроводных сетей и мобильных устройств перенастройка сетевых интерфейсов для каждой новой беспроводной сети стала сложной и трудоемкой. Этот процесс также может создавать конфликты имен при добавлении нового сетевого интерфейса.

Наверх
Меню