1. Базовая настройка сети.
Смотрим все установленные сетевые адаптеры в системе:
# ip a
В результате получаем что-то подобное:
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:81:28:3c brd ff:ff:ff:ff:ff:ff inet 192.168.156.22/22 brd 192.168.159.255 scope global ens32 valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:81:3f:22 brd ff:ff:ff:ff:ff:ff inet 10.243.254.68/26 brd 10.243.254.127 scope global ens34 valid_lft forever preferred_lft forever
Если нужно настроить сеть для адаптера ens32, открываем на редактирование следующий конфигурационный файл:
# vi /etc/sysconfig/network-scripts/ifcfg-ens32
И приводим его к следующему виду:
DEVICE=ens32 BOOTPROTO=static IPADDR=192.168.0.155 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.54 DNS2=192.168.0.11 ONBOOT=yes
… а также для CentOS 8 добавим:
NM_CONTROLLED=yes
Основные опции:
Опция | Описание | Возможные значения |
---|---|---|
DEVICE | Имя сетевого адаптера | Должно совпадать с именем в системе. В данном примере ens32 |
BOOTPROTO | способ назначения IP-адреса | static: ручное назначение IP, dhcp: автоматическое получение IP |
IPADDR | IP-адрес | адрес, соответствующий вашей сети |
NETMASK | Сетевая маска | должна соответствовать вашей сети |
GATEWAY | Шлюз по умолчанию | IP-адрес сетевого шлюза |
DNS1 | Основной DNS-сервер | IP-адрес сервера имен |
DNS2 | Альтернативный DNS-сервер | IP-адрес сервера имен |
ONBOOT | Способ запуска сетевого интерфейса | yes: автоматически при старте сервера, no: запускать вручную командой |
NM_CONTROLLED | Указываем, должен ли интерфейс управляться с помощью NetworkManager | yes: управляется NetworkManager, no: не может управляться NetworkManager |
Чтобы настройки применились, перезапускаем сетевую службу.
а) для CentOS 7:
# systemctl restart network
б) для CentOS 8 вводим 2 команды:
# systemctl restart NetworkManager # nmcli networking off; nmcli networking on
Дополнительные опции (не обязательны для работы сети):
Опция | Описание | Возможные значения |
---|---|---|
DOMAIN | Указываем домен, который необходимо добавлять к имени хостов, если он не указан в запросе явно. | Строковое значение, соответствующее имени домена. |
IPV4_FAILURE_FATAL | Отключение сетевого интерфейса, если IP-адрес (v4) имеет неверную конфигурацию | yes: отключать, no: не отключать |
IPV6_FAILURE_FATAL | Отключение сетевого интерфейса, если IP-адрес (v6) имеет неверную конфигурацию | yes: отключать, no: не отключать |
IPV6_AUTOCONF | Разрешает или запрещает автоконфигурирование IPv6 с помощью протокола Neighbor Discovery | yes: разрешить автоконфигурирование, no: запретить |
IPV6INIT | Говорит о возможности использовать сетевой интерфейс для адресации IPv6 | yes: адресация может использоваться, no: не используется |
PEERROUTES | Задает приоритет настройки шлюза по умолчанию, полученного от DHCP | yes: маршрут от DHCP важнее, чем назначенный вручную, no: важнее маршрут, заданный вручную |
IPV6_PEERROUTES | Задает приоритет настройки шлюза по умолчанию, полученного от DHCP (для IPv6) | |
UUID | Уникальный идентификатор сетевого интерфейса. Его можно сгенерировать самостоятельно командой uuidgen | Строка из 32-х символов в формате 8-4-4-4-12. Например: fca8cc84-6f21-4bac-9ccb-36f281321ba4 |
2. Настройка сети командами.
Настройка из консоли будет работать только до перезагрузки системы. Ее удобно применять для временного конфигурирования или проведения тестов.
2.1. Назначение IP-адреса или добавление дополнительного к имеющемуся:
# ip a add 192.168.0.156/24 dev ens32
2.2. Изменение IP-адреса:
# ip a change 192.168.0.157/24 dev ens32
2.3. Удаление адреса:
# ip a del 192.168.163.157/24 dev ens32
2.4. Добавление маршрута по умолчанию:
# ip r add default via 192.168.0.1
2.5. Добавление статического маршрута:
# ip r add 192.168.1.0/24 via 192.168.0.18
2.6. Удаление маршрутов:
# ip r del default via 192.168.160.1 # ip r del 192.168.1.0/24 via 192.168.0.18
3. Настройка WiFi.
Принцип настройки беспроводной сети на CentOS не сильно отличается от проводной.
Создаем конфигурационный файл со следующим содержимым:
# vi /etc/sysconfig/network-scripts/ifcfg-dmoskwifi ESSID="dmoskwifi" MODE=Managed KEY_MGMT=WPA-PSK TYPE=Wireless BOOTPROTO=none NAME=dmoskwifi ONBOOT=yes IPADDR=192.168.1.50 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=192.168.1.1 DNS2=77.88.8.8
4. Несколько IP на одном сетевом адаптере.
В зависимости от версии операционной системы, дополнительные адреса добавляются посредством:
- Псевдонимов — создание нового виртуального интерфейса с названием <имя интерфейса>:<номер>.
- Добавлением IPADDRx и NETMASKx в конфигурационном файле.
Рассмотрим оба варианта подробнее.
4.1. Создание псевдонимов (более ранние версии CentOS 7 и ниже)
Создаем новый конфигурационный файл для сетевого интерфейса:
# vi /etc/sysconfig/network-scripts/ifcfg-ens32:1 DEVICE=ens32:1 BOOTPROTO=static IPADDR=192.168.0.156 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.54 DNS2=192.168.0.11 ONBOOT=yes
* где ens32 — имя физического интерфейса, :1 — виртуальный номер.
Перезапускаем сетевые службы.
4.2. Настройка конфигурационного файла (CentOS 7 и выше)
Открываем конфигурационный файл для сетевого интерфейса, например:
# vi /etc/sysconfig/network-scripts/ifcfg-ens32 DEVICE=ens32 BOOTPROTO=static IPADDR=192.168.0.155 NETMASK=255.255.255.0 IPADDR1=192.168.0.156 NETMASK1=255.255.255.0 IPADDR2=192.168.0.157 NETMASK2=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.54 DNS2=192.168.0.11 ONBOOT=yes
* где ens32 — имя физического интерфейса, дополнительные адреса задаются с помощью опций IPADDR1, IPADDR2, NETMASK1, NETMASK2.
Перезапускаем сетевые службы.
5. DHCP
Для автоматического получения IP-адреса от сервера DHCP мы должны задать следующее значение для опции BOOTPROTO в конфигурационном файле:
...BOOTPROTO=dhcp...
5.1. Переопределение DNS с помощью dhclient.conf
Также мы можем переопределять настройки для DHCP с помощью конфигурационного файла. Например, если мы хотим, чтобы адреса DNS были заданы определенные, а не полученны от DHCP, открываем конфиг:
# vi /etc/dhcp/dhclient.conf
Вставляем запись:
interface "enp0s3" { supersede domain-name-servers 8.8.8.8, 8.8.4.4; }
Или мы можем использовать адреса от DHCP, но сделать приоритетными свои:
interface "enp0s3" { prepend domain-name-servers 127.0.0.1; }
Чтобы данный метод сработал в CentOS 8, необходимо открыть файл:
# vi /etc/NetworkManager/NetworkManager.conf
В раздел [main] добавить:
[main] dhcp=dhclient
5.2. Переопределение DNS в NetworkManager (альтернативный способ)
Метод, описанный выше по переопределению DNS не подходит для NetworkManager без изменения настройки dhcp, так как адреса будут получены и обработаны с помощью встроенных методов. Выше, предоставлено решение в виде настройки dhcp=dhclient, однако мы рассмотрим альтернативный способ, на случай, если кому-то это пригодится.
Создаем файл:
# vi /etc/NetworkManager/dispatcher.d/99-resolv.conf.dhclient #!/bin/bash sleep 1 rm -f /etc/resolv.conf echo '# Generated by dispatcher' > /etc/resolv.conf echo 'nameserver 127.0.0.1' >> /etc/resolv.conf echo '' >> /etc/resolv.conf cat /var/run/NetworkManager/resolv.conf >> /etc/resolv.conf
* в данном примере мы создали скрипт, который сначала добавит нужную нам запись в файл /etc/resolv.conf, а после добавит туда значения, полученные от DHCP. Обратите внимание, что в конкретном примере:
- адрес 127.0.0.1 задается в качестве приоритетного сервера DNS.
- остальные настройки получаем от DHCP, которые NetworkManager помещает в файл /var/run/NetworkManager/resolv.conf.
Разрешаем запуск скрипта:
chmod +x /etc/NetworkManager/dispatcher.d/99-resolv.conf.dhclient
Перезапускаем сеть:
# systemctl restart NetworkManager
Через 2 секунды проверяем:
cat /etc/resolv.conf