Categories: CentOSlinux

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

В данной статье мы рассмотрим способы настройки сети в системах Linux CentOS 7/8 , покажем, как настраивать сетевых интерфейсов через конфигурационные файлы, основные утилиты для настройки сети и многое другое. Это актуальная тема, так как изначально настройка любого сервера начинается с настройки на нем сети.

В статье мы покажем особенности настройки сети в CentOS 7 с помощью стандартного сервиса network. Посмотрим, как использовать для настройки сети NetworkManager (NM), который предлагается по-умолчанию в CentOS 8.

Именование сетевых интерфейсов в CentOS

Классическая схема именования сетевых интерфейсов в Linux присваивает имена eth0 , eth1 и так далее по порядку. Но эти имена не привязываются жестко к интерфейсам и после перезагрузки при наличии нескольких сетевых интерфейсов, эти имена могут поменяться. Это может доставлять некоторые проблемы, при настройке, например, межсетевого экрана через firewalld или iptables . В связи с этим начиная с RedHat 7 и CentOS 7, решено было назначать имена сетевых интерфейсов на основе иерархии различных схем именования. По умолчанию systemd будет поочередно применять схемы именования, остановившись на первой доступной и применимой. Имена присваиваются в автоматическом режиме, остаются неизменными даже если аппаратные средства добавлены или изменены. С другой стороны, такие имена интерфейсов менее читабельны, например, enp5s0 или ens3 , чем традиционные eth0 и eth1 .

Можно вернуться к стандартному имени интерфейса Linux с помощью следующих действий.

Отредактируйте файл /etc/default/grub :

# nano /etc/default/grub

В строку GRUB_CMDLINE_LINUX нужно добавить:

net.ifnames=0 biosdevname=0

Пример полной строки:

GRUB_CMDLINE_LINUX="consoleblank=0 fsck.repair=yes crashkernel=auto nompath selinux=0 rhgb quiet net.ifnames=0 biosdevname=0"

Обновите конфигурацию grub :

# grub2-mkconfig -o /boot/grub2/grub.cfg

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

# mv /etc/sysconfig/network-scripts/ifcfg-ens3 /etc/sysconfig/network-scripts/ifcfg-eth0

И заменить значение DEVICE :

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

# ip a

Интерфейс теперь называется eth0 .

Первоначальная настройка сети при установке CentOS

Изначально при установке CentOS Linux , вы можете настроить сетевой интерфейс в графическом режиме в пункте меню “Network & Hostname” . В данном пункте вы указываете имя сервера, добавляете нужный IP адрес и шлюз, DNS и многое другое. Более подробную настройку на данном шаге, вы можете посмотреть в статье по ссылке выше.

Ручная настройка конфигурационного файла сетевого интерфейса в CentOS

Выведем список доступных сетевых интерфейсов в системе:

# ip a

Файлы конфигурации сети вашего сервера хранятся в каталоге /etc/sysconfig/network-scripts . Эти файлы создает демон NetworkManager для каждого сетевого интерфейса. В нашем случае файл конфигурации называется ifcfg-eth0 (у вас может отличаться в зависимости от схемы именования сетевого интерфейса).

Рассмотрим основные параметры:

  • DEVICE – имя сетевого адаптера, совпадает с именем в системе, у нас это eht0
  • BOOTPROTO – способ назначения IP-адреса (static — статическое значение, указываем в ручную. dhcp — получить адрес автоматически)
  • IPADDR – IP-адрес
  • NETMASK – маска подсети
  • GATEWAY – шлюз по умолчанию
  • DNS1 – Основной DNS-сервер
  • DNS2 — альтернативный DNS-сервер
  • ONBOOT — способ запуска сетевого интерфейса (yes – автоматически, no – вручную)
  • UUID – уникальный идентификатор сетевого интерфейса. Можно сгенерировать самостоятельно командой uuidgen.
  • IPV4_FAILURE_FATAL – отключение сетевого интерфейса с IP-адресом v4, если он имеет неверную конфигурацию (yes – отключить, no – не отключать)
  • IPV6_FAILURE_FATAL – отключение сетевого интерфейса с IP-адресом v6, если он имеет неверную конфигурацию (yes – отключить, no – не отключать)
  • IPV6_AUTOCONF – разрешает или запрещает автоконфигурирование Ipv6 с помощью протокола
  • IPV6_INIT – включение возможности использования адресации Ipv6(yes – адресация может использоваться, no – не используется)
  • PEERROUTES – устанавливает приоритет настройки шлюза по умолчанию, при использовании DHCP
  • IPV6_PEERROUTES — устанавливает приоритет настройки шлюза по умолчанию, при использовании DHCP для IPv6

Исходя из этой информации, настроим сетевой интерфейс.

Настройка статического IP адреса в CentOS

Откроем файл для редактирования:

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

В этом примере я указал статический IP адрес, маску подсети, шлюз и несколько DNS серверов. Включаем автозапуск интерфейса:

ONBOOT=”yes”

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

[root@server network-scripts]# service network restart

Restarting network (via systemctl): [ OK ]

Также можно просто перезапустить все профили подключений :

# nmcli connection reload

Получение динамического IP адреса для интерфейса через DHCP

Если ваш сервер должен получить IP адрес от DHCP севера, откройте конфигурационный файл интерфейса и измените настройки:

То есть мы убрали все настройки, связанные с IP-адресами и маской, а так же поменяли способ назначения IP-адреcа на dhcp (BOOTPROTO=”dhcp”). После всех изменений, не забываем выполнять перезагрузку network.

Как отключить IPv6 в CentOS?

На время написания статьи активного использования ipv6 в России нет, да и зачастую если таковая возможность имеется, администраторы предпочитают протокол ipv4 . Поэтому если вы все же не используете данный протокол, его нужно отключить на сервере. Если вы точно уверены, что ни один из сервисов не настроен под работу с ipv6, можете сразу перейти к настройке сетевого интерфейса, если же нет, то начните с проверки. Нам нужно проверить, какие сервисы используют ipv6 и отключить данный протокол в конфигурации сервиса. Запустим команду:

# netstat -tulnp

У меня сервер тестовый, поэтому ipv6 используется только для sshd и cronyd. Это можно определить по “:::”.

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

# mcedit /etc/ssh/sshd_config

И раскомментируйте строки:

#AddressFamily any_x000D_#ListenAddress 0.0.0.0

После чего перезапустите сервис:

Как видим, для sshd протокол ipv6 теперь недоступен. Проделайте аналогичные настройки со всеми сервисами.

Перейдем к отключению протокола ipv6 в настройках сети. Откройте файл /etc/sysctl.conf :

# nano /etc/sysctl.conf И добавьте туда следующие строки:

net.ipv6.conf.all.disable_ipv6 = 1_x000D_net.ipv6.conf.default.disable_ipv6 = 1

Сохраните файл и примените через:

[root@server ~]# sysctl -p

net.ipv6.conf.all.disable_ipv6 = 1_x000D_net.ipv6.conf.default.disable_ipv6 = 1

Перейдем к файлу /etc/sysconfig/network . Добавьте в него следующую конфигурацию:

NETWORKING_IPV6=no_x000D_IPV6INIT=no

Из файла конфигурации сетевого интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 удалите строку:

IPV6INIT="yes"

И наконец добавим запрет на работу ipv6 в grub:

# nano /etc/default/grub

В конец строки GRUB_CMDLINE_LINUX, добавляем:

ipv6.disable=1

После всех настроек, сохраните файл и обновите grub:

# grub2-mkconfig -o /boot/grub2/grub.cfg

Выполните перезагрузку сервера и проверьте конфигурацию сети:

[root@server ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500_x000D_inet 185.*.*.* netmask 255.255.255.0 broadcast 185.*.*.255_x000D_ether 52:54:00:d3:1c:3e txqueuelen 1000 (Ethernet)_x000D_RX packets 10068 bytes 613092 (598.7 KiB)_x000D_RX errors 0 dropped 0 overruns 0 frame 0_x000D_TX packets 32 bytes 5399 (5.2 KiB)_x000D_TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0_x000D_lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536_x000D_inet 127.0.0.1 netmask 255.0.0.0_x000D_loop txqueuelen 1000 (Local Loopback)_x000D_RX packets 0 bytes 0 (0.0 B)_x000D_RX errors 0 dropped 0 overruns 0 frame 0_x000D_TX packets 0 bytes 0 (0.0 B)_x000D_TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Протокол ipv6 на сервере отключен.

Как указать DNS сервера для сетевого интерфейса в CentOS?

Настроить DNS-сервера для вашего сервера, вы можете с помощью файла /etc/resolv.conf или указать их в настройках сетевого интерфейса. При настройке static конфигурации для сетевого интерфейса, мы уже указывали DNS-сервера, через параметры:

DNS1=_x000D_DNS2=_x000D_DNS3=

Установите нужные вам DNS-сервера и перезагрузите сервис network.

В файл /etc/resolv.conf , DNS-сервера прописываются автоматически при перезагрузке сервера, забирая их с файла конфигурации сети. Если же вы не указали DNS-сервера при настройке сети, пропишите их вручную в файл /etc/resolv.conf :

nameserver 77.88.8.8_x000D_nameserver 8.8.8.8_x000D_nameserver 8.8.4.4

Как настроить несколько IP адресов на одном сетевом интерфейсе CentOS?

Если вам нужно использовать несколько IP-адресов на одном сетевом интерфейсе, настройку можно выполнить через алиас интерфейса или же добавив дополнительный IP-адрес в основной файл конфигурации.

# nano /etc/sysconfig/network-scripts/ifcfg-eth0

И измените его следующим образом:

# Generated by parse-kickstart_x000D_UUID="b8bccd4c-fb1b-4d36-9d45-044c7c0194eb"_x000D_IPADDR1="*.*.*.*"_x000D_IPADDR2="*.*.*.*"_x000D_GATEWAY="*.*.*.*"_x000D_NETMASK="255.255.255.0"_x000D_BOOTPROTO="static"_x000D_DEVICE="eth0"_x000D_ONBOOT="yes"_x000D_DNS1=77.88.8.8_x000D_DNS2=8.8.8.8_x000D_DNS3=8.8.4.4_x000D_

Где:

IPADDR1 — первый IP-адрес

IPADDR2 — второй IP-адрес

GATEWAY — основной шлюз

Либо создайте alias к вашему основному файлу конфигурации:

# nano /etc/sysconfig/network-scripts/ifcfg-eth0:1

И добавьте несколько строк, без основного шлюза:

После всех настроек нужно выполнить перезапуск сети:

[root@server network-scripts]# service network restart

Restarting network (via systemctl): [ OK ]
В Windows тоже можно настроить несколько IP адресов (алиасов) на одном интерфейсе.

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

Подробнее о настройке нескольких VLAN для одного сетевого интерфейса в CentOS мы говорили в статье: Настройка VLAN на сетевом интерфейсе в CentOS .

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

Если у вас на сервере несколько сетевых интерфейсов, для них можно указать разные IP-адреса. Разберемся как это сделать. Если у вас на сервере более одного сетевого интерфейса, команда “ ip a ” должна отобразить эту информацию:

[root@server ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000_x000D_link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00_x000D_inet 127.0.0.1/8 scope host lo_x000D_valid_lft forever preferred_lft forever_x000D_2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000_x000D_link/ether 52:54:00:d3:1c:3e brd ff:ff:ff:ff:ff:ff_x000D_inet 185.*.*.*/16 brd 185.*.*.255 scope global eth0_x000D_valid_lft forever preferred_lft forever_x000D_3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000_x000D_link/ether 52:54:00:5f:f3:b8 brd ff:ff:ff:ff:ff:f

Чтобы сконфигурировать второй интерфейс, нужно создать для него файл:

# nano /etc/sysconfig/network-scripts/ifcfg-eth1

И добавьте следующую конфигурацию:

IPADDR="*.*.*.*"_x000D_GATEWAY="*.*.*.*"_x000D_NETMASK="255.255.255.0"_x000D_BOOTPROTO="static"_x000D_DEVICE="eth1"_x000D_ONBOOT="yes"

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

[root@server ~]# netstat -nr

Kernel IP routing table_x000D_Destination Gateway Genmask Flags MSS Window irtt Iface_x000D_0.0.0.0 185.*.*.1 0.0.0.0 UG 0 0 0 eth1_x000D_169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0_x000D_169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1_x000D_185.*.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0_x000D_185.*.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

В качестве основного шлюза у нас выступает интерфейс eth1. Я же хочу использовать eth0, для этого изменим его:

# route add default gw *.*.*.* – заменяем шлюз на тот, который указан в сетевом интерфейсе eth0

# route delete default gw *.*.*.* — удаляем шлюз интерфейса eth1

Если вы хотите, чтобы данная настройка сохранилась после перезагрузки сервера, добавьте эти команды в rc.local (см. статью об автозагрузке сервисов в CentOS ).

Полезные команды по работе с сетью в CentOS

  • ifdown eth1 — отключить указанный сетевой интерфейс.
  • ifup eth1 – поднять указанный сетевой интерфейс.
  • ifconfig – проверить информацию о всех интерфейсах.
  • ifconfig -a | grep ether | gawk '{print $2}' — команда для вывода MAC-адресов интерфейсов
  • ip a | grep ether | gawk '{print $2}' — тоже самое, только через утилиту ip a
  • service network restart или systemctl restart network – перезапустить сервис network с помощью systemctl
  • systemctl restart NetworkManager.service – перезапустить NM
  • ip route или ip route show — посмотреть таблицу маршрутизации ( https://remontka.com/nastrojka-marshrutov-v-linux/ )
  • ping host – пропинговать указанный хост
  • whois domain – получить информацию whois для домена
  • dig domain – получить DNS информацию о домене

Утилиты администрирования сети в CentOS

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

# yum install net-tools -y

После установки, можно воспользоваться утилитой ifconfig :

[root@server ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500_x000D_inet 185.*.*.* netmask 255.255.255.0 broadcast 185.*.*.255_x000D_inet6 fe80::5054:ff:fed3:1c3e prefixlen 64 scopeid 0x20<link>_x000D_ether 52:54:00:d3:1c:3e txqueuelen 1000 (Ethernet)_x000D_RX packets 2189424 bytes 144208326 (137.5 MiB)_x000D_RX errors 0 dropped 0 overruns 0 frame 0_x000D_TX packets 2350 bytes 260486 (254.3 KiB)_x000D_TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Как видим, имя нашего сетевого интерфейса eth0 .

Без установки пакета net-tools , вы можете проверить ваши интерфейсы с помощью следующей команды:

# ip a

Результат будет практически тот же:

Управление сетью с помощью NetworkManager в CentOS 8

В CentOS 8 для настройки сети рекомендуется использовать только NetworkManager . Эта служба управление сетевыми подключениями, контролирует настройки и применяет изменения к сетевым адаптерам.

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

# systemctl status NetworkManager.service

В CentOS предлагается использовать для настройки сети командную консоль nmcli или графическую утилиту nmtui .

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

# nmtui

При выборе первого пункта, у вас откроется окно с выбором сетевого интерфейса для редактирования:

Выбираем нужный нам интерфейс и редактируем:

Нам доступно редактирование имени, IP-адреса, Шлюза, DNS-серверов. Так же в интерактивном меню NM, мы можем изменить способ назначения IP адреса, на DHCP:

Замените “ manual ” на “ automatic ”:

После чего сохраните настройки. С помощью nmtui в графическом режиме, вы можете выполнить любые настройки, которые выполняете вручную через конфигурационные файлы. Если вы предпочитаете использовать командную строку для настройки интерфейсов, можете использовать nmcli. Например, следующие команды изменят IP адрес, щлюз и DNS сервера для интерефейса eth1.

# nmcli con mod eth1 ipv4.addresses 192.168.10.14/24
# nmcli con mod eth1 ipv4.gateway 192.168.10.1
# nmcli con mod eth1 ipv4.dns "8.8.8.8"

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

# nmcli con up eth1

Если же вам удобнее работать с файлами конфигурации, установите через yum отдельный пакет network-scripts (в CentOS 8 по умолчанию его нет):

# yum install network-scripts -y

Upgraded:_x000D_initscripts-10.00.1-1.el8_0.1.x86_64_x000D_Installed:_x000D_network-scripts-10.00.1-1.el8_0.1.x86_64 network-scripts-team-1.27-10.el8.x86_64_x000D_Complete!

После установки данного пакета, вы можете редактировать настройки сети, как мы описывали ранее, через конфигурационные файлы:

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago