1. Главная страница » Компьютеры

Centos 7 vlan настройка

Автор: | 16.12.2019

В операционной системе CentOS предусмотрено два варианта именования VLAN — как subinterface (например, ens32.5) или vlanXX (vlan5). В зависимости от данного варианта, предусмотрен свой метод настройки. Каким способом пользоваться — дело каждого. В данной инструкции рассматриваются оба варианта.

Для примера, настраиваем VLAN с тегом 5 для ethernet-адаптера ens32.

Способ 1. VLAN как сабинтерфейс

Создаем следующий конфигурационный файл:

И приводим его к следующему виду:

ONBOOT=yes
TYPE=Ethernet
VLAN=yes
DEVICE=ens32.5
BOOTPROTO=static
IPADDR=192.168.0.15
NETMASK=255.255.255.0

* в данном примере будет создан виртуальный интерфейс ens32.5 (5 vlan), который будет ассоциирован с физическим адаптером ens32.

Чтобы настройки вступили в силу, перезапускаем сетевую службу:

systemctl restart network

Способ 2. VlanXX

Создаем файл со следующим содержимым:

ONBOOT=yes
TYPE=Ethernet
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan5
PHYSDEV=ens32
VLAN_ > BOOTPROTO=static
IPADDR=192.168.0.15
NETMASK=255.255.255.0

* обратите внимание, что в данном варианте мы явно указываем, с каким физическим адаптером (ens32) будет связан виртуальный (vlan5).

Также перезапускаем сетевую службу:

systemctl restart network

vlan_name_type

Параметр vlan_name_type, который мы прописали в данном способе задает тип именования VLAN-интерфейса. Он может принимать следующие значения:

  • VLAN_PLUS_VID — vlan00005
  • VLAN_PLUS_VID_NO_PAD — vlan5
  • DEV_PLUS_VID — ens32.00005
  • DEV_PLUS_VID_NO_PAD — ens32.5

Использование vconfig

Утилита vconfig не сохраняет настройки для сетевых интерфейсов и после перезагрузки, все возвращается в предыдущее состояние. Она прекрасно подойдет для проведения тестов.

Сначала устанавливаем epel-репозиторий и утилиту следующей командой:

yum install epel-release

yum install vconfig

Загружаем модуль ядра 8021q:

Для настройки vlan из нашего примера, выполняем следующую команду:

vconfig add ens32 5

Теперь задаем виртуальному адаптеру IP-адрес и включаем его:

ifconfig ens32.5 192.168.0.15 netmask 255.255.255.0 up

В этой статье я расскажу про настройку VLAN в CentOS. VLAN – это Virtual Logical Area Network или виртуальная компьютерная сеть, используется когда есть необходимость разделить сеть на канальном уровне на несколько логических частей, которые не должны между собой взаимодействовать.

В статье используется сервер CentOS 6.4 x64 с сетевым интерфейсом eth0, который через 802.1q транк подключен двум различным сетям 192.168.18.0/24 в VLAN 8 и 192.168.24.0/24 в VLAN14.

1. Немного теории

Для начала давайте рассмотрим небольшой пример, у нас есть два соединенных между собой коммутатора и четыре подключенных к ним компьютера. Компьютеры PC1 и PC2 находящиеся в VLAN 8 свободно между собой взаимодействуют и компьютеры PC3 и PC4 находящиеся в VLAN 14 тоже взаимодействуют между собой, но ни первые ни вторые могут подключиться к компьютерам в соседнем VLAN-е.

Если представить что коммутатор у нас один, то все взаимодействие организуется достаточно просто – порты ge4 и ge5 на уровне коммутатора объединяются в одну логическую группу, а порты ge2 и ge6 в другую. И в общем то все работает. Но в нашем случае коммутаторы разные и им нужно передавать по одному физическому каналу сразу несколько логических сетей, поэтому весь трафик проходящий между коммутаторами маркируется (или теггирируется).

Здесь появляются понятия теггирированный (маркированный, tagged) и не теггирированный (не маркированный, untagged) трафик, порт коммутатора через который проходят теггрированные фреймы называтесят транком (VLAN транк, 802.1Q транк).

Самый распространенный стандарт маркировки трафика IEEE 802.1Q, в кадр Ethernet или IEEE 802.3 инкапсулируется дополнительное двух байтовое поле содержащие TPID (идентификатор протокола 802.1Q) равный 0×8100, приоритет и номер VLAN к которому относится данный кадр.

Тег 802.1Q расположен сразу после MAC-адреса отравителя и TPID по сути заменяет поле типа или размера, поэтому L2-коммутаторы не поддерживающие 802.1Q могут доставить маркированные кадры до места назначения.

Если в VLAN транк попадает не маркированный трафик то он автоматически относится к специальному VLAN, который называется native VLAN и обычно это VLAN 1.

Теперь подойдем ближе к практической ситуации, перед нами те же самые коммутаторы, те же самые компьютеры в двух разных VLAN-ах, только к коммутатору SW-1 через порт ge10 подключен сервер SRV1. При этом сервер должен быть доступен из обоих виртуальных сетей.

В данном случае еще один транк 802.1Q организуется между сервером SRV1 и коммутатором SW-1, для каждого VLAN-а на сервере создается виртуальный интерфейс с соответствующим IP-адресом.

2. Практика

Просматриваем конфигурационный файл интерфейса eth0:

Создаем конфигурационный файл для интерфейса в VLAN 8. На практике используется несколько вариантов именования интерфейсов привязанных к VLAN-ам, я для себя остановился на базовом варианте когда через точку после имени интерфейса пишется номер VLAN. Открываем для редактирования файл /etc/sysconfig/network-scripts/ifcfg-eth0.8 и приводим его к следующему виду:

Аналогично создаем файл /etc/sysconfig/network-scripts/ifcfg-eth0.14 для интерфейса смотрящего в VLAN 14:

Проверяем что интерфейсы поднялись и имеют соответствующие адреса

Текущие привязки интерфейсов и VLAN можно посмотреть в /proc/net/vlan/config

При отладке очень полезной может оказаться статистическая информация о интерфейсах, которая хранится в /proc/net/vlan/ .

Если количество принятых кадров (frames received) равно 0, то скорее всего интерфейс eth0 не получает маркированный трафик для VLAN 8.

3. Заключение

На этом я закончу свой рассказ. Если у вас есть вопросы или дополнения – пишите. Обязательно отвечу.

В данном материале я затрону актуальную тему, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров сети в CentOS 7 и 8 — ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры. Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.

Цели статьи

  1. Рассказать, как выполнить базовые сетевые настройки на сервере centos версий 7 и 8.
  2. Показать дополнительные возможности по настройки сети.
  3. На нескольких примерах рассказать, как решать типовые проблемы с сетью.
  4. Показать некоторые полезные сетевые утилиты.

Данная статья является частью единого цикла статьей про сервер Centos.

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

Первый раз с сетевыми настройками сервера CentOS 7 или 8 мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:

Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):

Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):

После выполнения остальных настроек начнется установка. После установки у вас будет сервер с указанными вами сетевыми настройками.

Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal, то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:

или в русской версии:

Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools. Сделаем это:

Теперь можно увидеть настройки сети:

Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:

Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию /etc/sysconfig/network-scripts и открываем на редактирование файл ifcfg-eth0 или ifcfg-ens18. Название файла будет зависеть от имени сетевого интерфейса. В Centos 8 по-умолчанию убрали поддержку настройки сети через конфигурационные скрипты, поэтому установите отдельно пакет network-scripts.

Файл ifcfg-eth0 имеет примерно следующее содержание:

По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:

Мы изменили параметры:

BOOTPROTO с dhcp на none
DNS1 указали dns сервер
IPADDR0 настроили статический ip адрес
PREFIX0 указали маску подсети
GATEWAY0 настроили шлюз по-умолчанию

Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:

Проверяем, применилась ли новая конфигурация сети:

Все в порядке, новые настройки сетевого интерфейса установлены.

Как получить сетевые настройки по DHCP

Теперь рассмотрим обратную ситуацию. Допустим, у вас сетевая карта имеет какие-то настройки, установленные вручную. Но вы хотите, чтобы ваш компьютер получал настройки сети по dhcp в качестве клиента. Для этого вам нужно произвести операцию, обратную той, что мы делали раньше. То есть открываем файл /etc/sysconfig/network-scripts/ifcfg-ens18 и удаляем там строки с параметрами DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp».

Сохраняем файл и перезапускаем сеть:

Затем проверяем, получил ли наш client по dhcp настройки.

Как настроить DNS в CentOS

Текущие настройки dns сервера в CentOS можно посмотреть в двух местах:

  1. В файле с настройками сетевой карты ifcfg-eth0, которым мы ранее неоднократно редактировали.
  2. В файле /etc/resolv.conf

Зачем они сейчас в двух местах, я не знаю, но раньше настройки dns сервера в каких-то дистрибутивах, не помню уже точно каких, указывались только в resolv.conf, но в какой-то момент это изменилось. И все сетевые настройки стали храниться в одном файле вместе с адресом, шлюзом, маской и прочим. Если сейчас отредактировать файл resolv.conf и внести туда какие-то dns сервера, то после перезагрузки они будут заменены на значения из файла ifcfg-eth0.

Так что для того, чтобы установить параметры dns сервера, нужно отредактировать файл сетевых настроек ifcfg-eth0, добавив туда столько серверов, сколько требуется. Например так:

Для применения настроек сохраняем файл и перезапускаем сеть, все как обычно. После перезагрузки сервера настройки dns будут записаны в файл resolv.conf

Как отключить ipv6

В настоящее время активного использования протокола ipv6 в России нет и в обычной работе он чаще всего не нужен. Хотя нас уже много лет пугают, что свободных ip адресов уже практически не осталось, но на деле пока еще всем хватает. Так что с точки зрения практических соображений ipv6 в настоящее время на сервере не нужен и его можно отключить.

Перед отключением ipv6 в centos необходимо на всякий случай проверить, какие программы его используют в своей работе. Это нужно для того, чтобы избежать ошибок в их работе, предварительно отключив ipv6 в конфигурациях. Для того, чтобы увидеть, какие программы висят на ipv6 интерфейсе воспользуемся командой netstat:

Все строки с . это ipv6 протокол. В моем случае это sshd, postfix и chronyd. Отключим им ipv6 и оставим только ipv4.

Начнем с sshd. Открываем файл настроек /etc/ssh/sshd_config и находим строки:

Раскомментируем их и изменим. Должно получиться вот так:

Теперь открываем файл настроек постфикс /etc/postfix/main.cf. Ищем там строку:

Отключаем ipv6 в chronyd. Для этого создаем файл /etc/sysconfig/chronyd и добавляем строку:

Теперь отключаем ipv6 в CentOS. Открываем файл /etc/sysctl.conf и добавляем туда строки:

Редактируем файл /etc/sysconfig/network, добавляя туда:

Добавляем запрет на работу ipv6 в конфигурацию grub. Открываем конфиг /etc/default/grub и добавляем к параметру GRUB_CMDLINE_LINUX еще одно значение ipv6.disable=1. Должно получиться примерно так:

После этого обновляем конфиг загрузчика.

Перезагружаемся и проверяем результат:

Нигде нет упоминания про inet6 и адреса формата ipv6. Значит все в порядке, мы отключили ipv6 в CentOS. Теперь проверим список открытых портов:

Все порты ipv4. Все в порядке, наша задача выполнена.

Как изменить hostname в CentOS

По-умолчанию, во время установки CentOS ставит имя хоста localhost.localdomain. Если вы его не поменяли, то можно это сделать позже. Для начала давайте проверим, какое имя хоста у вас установлено. Делается это с помощью команды в консоли hostname, либо с помощью uname:

Для того, чтобы изменить имя хоста в CentOS, необходимо отредактировать файл /etc/hostname. Проверим его содержимое:

Отредактируем этот файл, чтобы изменить hostname:

Сохраняем файл и проверяем:

Есть готовая команда, которая сразу устанавливает необходимое имя сервера:

Все в порядке, мы изменили имя хоста на centos.localhost

Установить шлюз по-умолчанию в CentOS

Если по каким-то причинам при настройке сетевых параметров у вас не установился шлюз по-умолчанию, то сделать это можно вручную. Для начала проверим, какой шлюз по-умолчанию установлен в системе в данный момент:

Строка с Destination 0.0.0.0 определяет адрес шлюза. Если у вас ее нет, либо в поле Gateway установлен неверный шлюз, то можно это изменить. Устанавливаем шлюз по-умолчанию:

Или то же самое с помощью команды ip.

Network Manager в CentOS

В CentOS по-умолчанию имеется служба, которая управляет всеми сетевыми подключениями — NetworkManager. Она постоянно контролирует сетевые настройки и с помощью демона по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций ifcfg.

Список сетевых утилит и приложений:

Приложение Описание
NetworkManager Стандартный networking daemon
nmtui Простой текстовый интерфейс (TUI) для NetworkManager
nmcli Утилита, работающая в командной строке, которая позволяет пользователям и скриптам взаимодействовать с NetworkManager
control-center Утилита с графическим интерфейсом оболочки GNONE
nm-connection-editor GTK+ 3 приложения, необходимые для некоторых задач, не поддерживаемых control-center

Пользователи не взаимодействуют с NetworkManager в CentOS напрямую, для этого используются графические и утилиты командной строки. Одной из таких утилит является system config network tui. В Centos 8 по-умолчанию NetworkManager является рекомендованным способом по настройке сети. Все остальные способы объявлены deprecated.

System config network tui

Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui. Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:

Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:

С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов network-scripts. Давайте сделаем это. Вызываем программу:

Выбираем первый пункт Edit a connection, затем выбираем сетевой интерфейс и жмем «Edit»:

Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:

После завершения редактирования сохраняем настройки, нажимая ОК.
Если в первом экране утилиты выбрать пункт Set System Hostname, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.

Как добавить статический маршрут в CentOS

Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat:

В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.

Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:

Проверяем, появился ли добавленный маршрут в таблицу маршрутизации:

Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.

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

Перезагружаемся и проверяем, на месте ли маршрут:

Все в порядке, статический маршрут добавлен.

Как настроить 2 IP адреса на одном интерфейсе

Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:

Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:

Проверим, что получилось:

То же самое, с помощью ip.

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

Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.

Как сделать перезапуск сети в CentOS

Ранее я уже касался этого вопроса, но на всякий случай повторим отдельно. Допустим, вы внесли некоторые изменения в конфигурацию сети. Как применить эти настройки, не перезагружая сервер? Очень просто. Для перезапуска сети в CentOS достаточно воспользоваться командой systemd:

Если увидите ошибку:

Значит у вас не установлен пакет network-scripts, а управление сетью выполняется с помощью NetworkManager, который сам перезапускает сеть после изменения настроек.

Если у вас старая версия Centos без systemd, а это 6-я версия и младше, то сеть перезапускается вот так.

Сетевая служба перечитает все сетевые настройки и применит изменения.

Как узнать IP адрес в CentOS

Для того, чтобы быстро узнать текущий IP адрес в CentOS необходимо воспользоваться следующими командами:

Либо второй вариант определения локального ip адреса:

Обе команды позволяют быстро узнать свой ip адрес.

Что делать, если CentOS не видит сетевую карту?

Вы установили сервер, загрузились и обнаружили, что в системе нет ни одной сетевой карты. Что в таком случае делать? Первым делом посмотрите вывод команды dmesg и поищите там поминание о своей карте. Возможно, она в системе есть, просто не активирована. Активировать ее можно с помощью nmtui, а котором я рассказывал выше.

Там есть пункт меню Activate connection, нужно в него зайти и активировать вашу сетевую карту. После этого ее можно будет настраивать.

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

Есть еще вероятность, что вы не увидите своей карточки при выводе команды ifconfig, если в эту карту не воткнут сетевой провод. Чтобы наверняка посмотреть все интерфейсы, необходимо использовать ключ -a:

Есть еще один способ поискать сетевую карту в системе. Установите пакет pciutils:

И посмотрите вывод команды:

Если сетевая карта видится системой, то должно быть что-то в этом роде:

Если в выводе пусто, значит сетевая карта не определена.

Что делать, если сеть недоступна в CentOS?

Допустим, вы пытаетесь пинговать какой-то адрес, например 8.8.8.8 и получаете ответ, что сеть не доступна:

А в ответ получаете:

Такая ситуация может возникнуть, если у вас не установлен шлюз по-умолчанию. Добавить его можно с помощью команды:

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

Использование сетевых утилит traceroute, dig в CentOS

Для диагностики сетевых подключений в CentOS полезно использовать специальные утилиты. Но если вы использовали установку minimal, то их скорее всего в системе не будет. К примеру, популярная утилита traceroute при попытке ее запуска выдаст сообщение:

Ее нужно установить отдельно из репозитория:

То же самое с популярной программой dig для работы с dns серверами и записями:

Чтобы эта сетевая утилита заработала, необходимо установить пакет bind-utils:

Настройка 802.1Q VLAN в CentOS

Для поднятия тегированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q:

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

Все в порядке, модуль 8021q загружен, добавим его в автозагрузку:

Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts:

Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet, но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:

Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:

Проверяем наш vlan:

Все в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.

Заключение

На этом мой объемный материал на тему настройки сети в CentOS закончен. Буду очень рад комментариям, замечаниям, поправкам. Они наверняка будут. Создавая подобные материалы я в первую очередь учусь сам и подтягиваю свои знания в предметной области. Тут могут быть где-то ошибки и описки, хотя я и проверяю все на живых системах во время написания руководств, но все равно возможны неточности и опечатки.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Читайте также:  Microsoft nokia lumia 435

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *