Статический IP-адрес в CentOS 7
Конфигурация сетевого интерфейса хранится в /etc/sysconfig/network-scripts в соответствующем файле с префиксом ifcfg (там же конфигурационные файлы других интерфейсов). Посмотрим на него.
# cat /etc/sysconfig/network-scripts/ifcfg-eno1 NAME="eno1" ONBOOT=yes BOOTPROTO=static HWADDR="ac:1f:6b:f6:3b:7e" IPADDR="82.148.21.49" NETMASK="255.255.255.0" GATEWAY="82.148.21.1" TYPE=Ethernet
Что можно понять из этих характеристик? Расскажем о каждом параметре:
- NAME — имя сетевого адаптера, оно такое же, как и имя в операционной системе.
- ONBOOT — указание на тип запуска сетевого интерфейса. При текущих настройках сетевой интерфейс запускается автоматически. В случае со значением no интерфейс нужно будет запускать вручную.
- BOOTPROTO — указание на тип назначения IP-адреса. В текущих настройках static, но возможны опции dhcp, none или пустое значение.
- HWADDR — переменная, хранящая MAC-адрес.
- IPADDR — установленный на интерфейсе IP-адрес.
- NETMASK — установленная на интерфейсе маска подсети.
- GATEWAY — указание на шлюз.
- TYPE — тип интерфейса. В нашем случае — Ethernet.
Отредактируем значение поля IPADDR:
# vi /etc/sysconfig/network-scripts/ifcfg-eno1 NAME="eno1" ONBOOT=yes BOOTPROTO=static HWADDR="ac:1f:6b:f6:3b:7e" IPADDR="82.148.21.50" NETMASK="255.255.255.0" GATEWAY="82.148.21.1" TYPE=Ethernet
После внесения изменений перезагрузим сетевой сервис. Иначе изменения применятся только после рестарта сервера.
# systemctl restart network
После выполнения этой команды сетевое подключение отключится. Снова выполняем подключение по SSH по новому IP-адресу и проверяем новые настройки:
# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7e brd ff:ff:ff:ff:ff:ff inet 82.148.21.50/24 brd 82.148.21.255 scope global noprefixroute eno1 valid_lft forever preferred_lft forever inet6 fe80::ae1f:6bff:fef6:3b7e/64 scope link valid_lft forever preferred_lft forever 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7f brd ff:ff:ff:ff:ff:ff
Статический IP-адрес настроен, сервер доступен по новому адресу.
Настройки DNS в CentOS 7
Чтобы настроить DNS, изменим /etc/sysconfig/network-scripts/ifcfg-eno1 и пропишем туда переменную DNS1 (если нужно добавить дополнительные DNS-серверы, допускается добавление переменных DNS2, DNS3 и т.д.)
# vi /etc/sysconfig/network-scripts/ifcfg-eno1 NAME="eno1" ONBOOT=yes BOOTPROTO=static HWADDR="ac:1f:6b:f6:3b:7e" IPADDR="82.148.21.50" NETMASK="255.255.255.0" GATEWAY="82.148.21.1" TYPE=Ethernet DNS1="82.148.21.1"
Следом перезагрузим сеть:
# systemctl restart network
По итогам перезагрузки адрес DNS-сервера должен автоматически оказаться в /etc/resolv.conf:
# grep "nameserver" /etc/resolv.conf nameserver ”82.148.21.1”
Наличие в файле заданного DNS-сервера говорит о корректности его настройки.
Перезапуск сетевого сервиса в CentOS 7
Перезапуск сети выполняется одной командой:
# systemctl restart network
После изменения сетевых настроек и для вступления их в силу необходимо выполнить эту команду.
Изменение имени сервера (hostname) в CentOS 7
Отредактируем /etc/hostname:
# vi /etc/hostname Curie
Сверим примененные настройки:
# hostname Curie
Имя хоста изменено.
Настройки шлюза в CentOS 7
За соответствующие настройки отвечает переменная GATEWAY в /etc/sysconfig/network-scripts/ifcfg-eno1. Чтобы изменить адрес шлюза, достаточно изменить значение этой переменной и перезагрузить сетевую службу:
# vi /etc/sysconfig/network-scripts/ifcfg-eno1 NAME="eno1" ONBOOT=yes BOOTPROTO=static HWADDR="ac:1f:6b:f6:3b:7e" IPADDR="82.148.21.49" NETMASK="255.255.255.0" GATEWAY="82.148.21.1" TYPE=Ethernet # systemctl restart network
Вызов команды netstat -nr вернет актуальный адрес используемого шлюза:
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 82.148.21.1 0.0.0.0 UG 0 0 0 eno1 82.148.21.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno1
Таким образом мы задали адрес сетевого шлюза.
Настройки сети из консоли
Кроме модификации файлов с конфигурацией, настройки сети могут быть изменены командами в консоли. Консольные настройки выполняются для проведения тестов и будут работать только до перезагрузки системы. Для выполнения всех консольных сетевых настроек используется уже известная команда ip address (или ее сокращенная версия ip a).
Применим к eno2 новый IP-адрес и проверим:
# ip a add 10.128.106.173 dev eno2 # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7e brd ff:ff:ff:ff:ff:ff inet 82.148.21.49/24 brd 82.148.21.255 scope global eno1 valid_lft forever preferred_lft forever inet6 fe80::ae1f:6bff:fef6:3b7e/64 scope link valid_lft forever preferred_lft forever 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7f brd ff:ff:ff:ff:ff:ff inet 10.128.106.173/32 scope global eno2 valid_lft forever preferred_lft forever
Изменим маску подсети и снова проверим:
# ip a change 10.128.106.173/24 dev eno2 # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7e brd ff:ff:ff:ff:ff:ff inet 82.148.21.49/24 brd 82.148.21.255 scope global eno1 valid_lft forever preferred_lft forever inet6 fe80::ae1f:6bff:fef6:3b7e/64 scope link valid_lft forever preferred_lft forever 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7f brd ff:ff:ff:ff:ff:ff inet 10.128.106.173/32 scope global eno2 valid_lft forever preferred_lft forever inet 10.128.106.173/24 scope global eno2 valid_lft forever preferred_lft forever
Добавим маршрут по умолчанию:
# ip r add default via 10.128.106.1
Удалим маршрут по умолчанию:
# ip r del default via 10.128.106.1
Удалим привязанный ранее IP-адрес и проверим:
# ip a del 10.128.106.173/32 dev eno2 # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7e brd ff:ff:ff:ff:ff:ff inet 82.148.21.49/24 brd 82.148.21.255 scope global eno1 valid_lft forever preferred_lft forever inet6 fe80::ae1f:6bff:fef6:3b7e/64 scope link valid_lft forever preferred_lft forever 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7f brd ff:ff:ff:ff:ff:ff
Еще раз обращаем внимание, что все приведенные в этом разделе настройки действуют до перезагрузки сервера.
Исключение IPv6 в CentOS 7
IPv6-адресация на текущий момент используется редко, хотя и было много разговоров об исчерпании емкостей адресов IPv4. Отключение IPv6 помогает экономить ресурсы и избежать путаницы. В этом разделе расскажем, как отключить на сервере поддержку этого протокола.
Начнем настройку с изменений в файле /etc/sysctl.conf. Внесем в него две дополнительных строки:
# vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Следующий шаг — применение конфигурационных изменений:
# sysctl -p net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
В /etc/sysconfig/network прибавим 2 строки:
# vi /etc/sysconfig/network NETWORKING_IPV6=no IPV6INIT=no
В конфигурационный файл /etc/default/grub к концу строки GRUB_CMDLINE_LINUX нужно добавить ipv6.disable=1
# vi /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.md.uuid=f93e0283:1b54bb6c:881c4df1:a3b5cf93 rd.lvm.lv=vg0/vol-root rd.md.uuid=b3ba35a4:4f4150fb:0d1464e1:d5ab4bff rd.lvm.lv=vg0/swap nodmraid nomodeset rhgb quiet ipv6.disable=1" GRUB_DISABLE_RECOVERY="true"
После выполнения изменений нужно сохранить файл и обновить GRUB:
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-1127.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-1127.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-8586236d5c0348d98a7b4f186d904d62 Found initrd image: /boot/initramfs-0-rescue-8586236d5c0348d98a7b4f186d904d62.img done
Далее — перезагрузка сервера:
# reboot
После перезагрузки проверим конфигурацию — значения с префиксом inet6 должны пропасть:
# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7e brd ff:ff:ff:ff:ff:ff inet 82.148.21.49/24 brd 82.148.21.255 scope global eno1 valid_lft forever preferred_lft forever inet 10.128.106.173/24 brd 10.128.106.255 scope global noprefixroute dynamic eno1 valid_lft 3419sec preferred_lft 3419sec 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7f brd ff:ff:ff:ff:ff:ff
Протокол IPv6 успешно отключен.
Несколько IP-адресов на одном интерфейсе в CentOS 7
Для настройки нескольких IP-адресов на одном интерфейсе внесем изменения в /etc/sysconfig/network-scripts/ifcfg-eno1, добавив переменные IPADDR1 и IPADDR2 и удалив IPADDR:
# vi /etc/sysconfig/network-scripts/ifcfg-eno1 NAME="eno1" ONBOOT=yes BOOTPROTO=static HWADDR="ac:1f:6b:f6:3b:7e" IPADDR1="82.148.21.49" IPADDR2="82.148.21.50" NETMASK="255.255.255.0" GATEWAY="82.148.21.1" TYPE=Ethernet
После перезагрузки сетевого сервиса изменения вступят в силу:
# systemctl restart network
Еще один IP-адрес может понадобиться для поддержки нескольких сервисов в рамках одного сервера.
Настройки нескольких сетевых интерфейсов в CentOS 7
Команда ip a вернет состояние всех имеющихся сетевых интерфейсов:
# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7e brd ff:ff:ff:ff:ff:ff inet 82.148.21.49/24 brd 82.148.21.255 scope global eno1 valid_lft forever preferred_lft forever inet 10.128.106.173/24 brd 10.128.106.255 scope global noprefixroute dynamic eno1 valid_lft 3419sec preferred_lft 3419sec 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:f6:3b:7f brd ff:ff:ff:ff:ff:ff
В этом выводе можно видеть три интерфейса: служебный lo, а также интерфейсы eno1 и eno2.
В /etc/sysconfig/network-scripts в соответствующих файлах хранится конфигурация каждого интерфейса:
# ls /etc/sysconfig/network-scripts | grep 'ifcfg-eno\|ifcfg-lo' ifcfg-eno1 ifcfg-eno2 ifcfg-lo
Для управления каждым из них вносятся значения переменных в соответствующий конфигурационный файл:
# cat /etc/sysconfig/network-scripts/ifcfg-eno2 NAME="eno2" ONBOOT=yes BOOTPROTO=static HWADDR="ac:1f:6b:f6:3b:7e" IPADDR1="82.148.21.51" IPADDR2="82.148.21.52" NETMASK="255.255.255.0" GATEWAY="82.148.21.1" TYPE=Ethernet
Чтобы добавить новый интерфейс, достаточно создать в этой же директории соответствующий конфигурационный файл, внести в него настройки и выполнить перезапуск сетевой службы:
# cp /etc/sysconfig/network-scripts/ifcfg-eno2 /etc/sysconfig/network-scripts/ifcfg-eno3 # vi /etc/sysconfig/network-scripts/ifcfg-eno3 # systemctl restart network
Так мы создали дополнительный интерфейс.
Настройки интерфейсов в CentOS 7 через Network Manager (утилиты nmtui и nmcli)
Еще одним способом настроить сеть в CentOS 7 является настройка через утилиту Network Manager. Она может выполняться в GUI и через CLI. Для вызова графического интерфейса необходимо выполнить команду nmtui. Откроется псевдо-GUI интерфейс, в котором можно выполнять те же настройки, что и в командной строке:

Network Manager через CLI управляется при помощи утилиты nmcli. Ниже приведены команды для изменения IP-адреса, шлюза и DNS-сервера для сетевого интерфейса eno1:
# nmcli con mod eno1 ipv4.addresses 82.148.21.49/24 # nmcli con mod eno1 ipv4.gateway 82.148.21.1 # nmcli con mod eno1 ipv4.dns "8.8.8.8
Утилита Network Manager имеет широкий функционал и может использоваться как полная замена штатным инструментам для настройки сети в CentOS 7.