Настройка сети

Настройка IP-адреса#

Использование команды nmcli#

ПРИМЕЧАНИЕ.
Конфигурация сети, настроенная с помощью команды nmcli, вступает в силу немедленно и не будет потеряна после перезагрузки системы.

Введение в nmcli

nmcli (NetworkManager Command Line Interface) — это утилита командной строки для настройки сети с помощью NetworkManager. Для работы с nmcli используется следующий основной формат:

 nmcli [OPTIONS] OBJECT { COMMAND | help }

В предыдущей команде вместо OBJECT можно указать один из следующих параметров: general, networking, radio, connection и device. Вместо OPTIONS можно указать необязательные параметры, такие как -t, –terse (для обработки скриптов), -p, –pretty (для вывода в понятном для человека формате), -h и –help. Для получения дополнительной информации выполните команду nmcli help.

$ nmcli help

Основные команды перечислены ниже.

  • Чтобы отобразить общее состояние NetworkManager, выполните следующую команду:

    $ nmcli general status
    
  • Чтобы отобразить все подключения, выполните следующую команду:

    $ nmcli connection show
    
  • Чтобы отобразить только текущие активные подключения, добавьте параметр -a или –active следующим образом:

    $ nmcli connection show --active
    
  • Чтобы отобразить устройство, идентифицированное NetworkManager, и состояние его подключения, выполните следующую команду:

    $ nmcli device status
    
  • Например, чтобы запустить или остановить сетевые интерфейсы, выполните команды nmcli от имени пользователя root:

    # nmcli connection up id enp3s0
    # nmcli device disconnect enp3s0
    

Управление устройствами#

** Подключение к устройству **

Выполните следующую команду, чтобы подключить NetworkManager к соответствующему сетевому устройству. Попробуйте найти подходящую конфигурацию подключения и активировать ее.

$nmcli device connect "$IFNAME"   

Если соответствующая конфигурация подключения не существует, NetworkManager создает и активирует файл конфигурации с использованием настроек по умолчанию.

**Отключение от устройства **

Выполните следующую команду, чтобы отключить NetworkManager от сетевого устройства и предотвратить автоматическую активацию устройства.

$nmcli device disconnect "$IFNAME"    

Настройка сетевых подключений

Выполните следующую команду, чтобы отобразить все доступные сетевые подключения:

$ nmcli con show


NAME    UUID                                  TYPE      DEVICE
enp4s0  5afce939-400e-42fd-91ee-55ff5b65deab  ethernet  enp4s0
enp3s0  c88d7b69-f529-35ca-81ab-aa729ac542fd  ethernet  enp3s0
virbr0  ba552da6-f014-49e3-91fa-ec9c388864fa  bridge    virbr0

ПРИМЕЧАНИЕ.
Значение NAME в выходных данных команды указывает идентификатор (имя) подключения.

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

$ nmcli dev status

DEVICE      TYPE      STATE      CONNECTION
enp3s0      ethernet  connected  enp3s0
enp4s0      ethernet  connected  enp4s0
virbr0      bridge    connected  virbr0
lo          loopback  unmanaged  --
virbr0-nic  tun       unmanaged  --

Настройка динамических IP-подключений#

Настройка IP-адресов Если для выделения сети используется протокол DHCP, выполните следующую команду, чтобы добавить файл конфигурации сети:

nmcli connection add type ethernet con-name connection-name ifname interface-name

Например, чтобы создать файл конфигурации динамического подключения с именем net-test, выполните следующую команду от имени пользователя root:

# nmcli connection add type ethernet con-name net-test ifname enp3s0
Connection 'net-test' (a771baa0-5064-4296-ac40-5dc8973967ab) successfully added.

NetworkManager устанавливает для connection.autoconnect значение yes и сохраняет параметр в файле /etc/sysconfig/network-scripts/ifcfg-net-test. В файле /etc/sysconfig/network-scripts/ifcfg-net-test для параметра ONBOOT установлено значение yes.

Активация подключения и проверка состояния подключения устройства

Выполните следующую команду от имени пользователя root, чтобы активировать сетевое подключение:

# nmcli con up net-test 
Connection successfully activated (D-Bus active path:/org/freedesktop/NetworkManager/ActiveConnection/5)

Выполните следующую команду, чтобы проверить состояние подключения устройств:

$ nmcli device status

DEVICE      TYPE      STATE      CONNECTION
enp4s0      ethernet  connected  enp4s0
enp3s0      ethernet  connected  net-test
virbr0      bridge    connected  virbr0
lo          loopback  unmanaged  --
virbr0-nic  tun       unmanaged  --

Настройка статических IP-подключений#

Настройка IP-адресов Чтобы добавить статическое сетевое подключение IPv4, выполните следующую команду:

nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address

ПРИМЕЧАНИЕ.
Чтобы добавить IPv6-адрес и соответствующую информацию о шлюзе, используйте параметры ip6 и gw6.

Например, чтобы создать файл конфигурации статического подключения с именем net-static, выполните следующую команду от имени пользователя root:

# nmcli con add type ethernet con-name net-static ifname enp3s0 ip4 192.168.0.10/24 gw4 192.168.0.254

Вы также можете указать IPv6-адрес и шлюз для устройства. Ниже приведен пример.

# nmcli con add type ethernet con-name test-lab ifname enp3s0 ip4 192.168.0.10/24 gw4 192.168.0.254 ip6 abbe::**** gw6 2001:***::*
Connection 'net-static' (63aa2036-8665-f54d-9a92-c3035bad03f7) successfully added.

NetworkManager устанавливает значение manual для внутреннего параметра ipv4.method, значение yes для параметра connection.autoconnect и записывает эту настройку в файл /etc/sysconfig/network-scripts/ifcfg-my-office. В файле для BOOTPROTO установлено значение none, а для ONBOOT — значение yes.

Выполните следующую команду от имени пользователя root, чтобы задать IPv4-адреса двух DNS-серверов:

# nmcli con mod net-static ipv4.dns "*.*.*.* *.*.*.*"

Выполните следующую команду от имени пользователя root, чтобы задать IPv6-адреса двух DNS-серверов:

# nmcli con mod net-static ipv6.dns "2001:4860:4860::**** 2001:4860:4860::****"

Активация подключения и проверка состояния подключения устройства Выполните следующую команду от имени пользователя root, чтобы активировать сетевое подключение:

# nmcli con up net-static ifname enp3s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

Выполните следующую команду, чтобы проверить состояние подключения устройств:

$ nmcli device status

DEVICE      TYPE      STATE      CONNECTION
enp4s0      ethernet  connected  enp4s0
enp3s0      ethernet  connected  net-static
virbr0      bridge    connected  virbr0
lo          loopback  unmanaged  --
virbr0-nic  tun       unmanaged  --

Выполните следующую команду, чтобы просмотреть сведения о подключении (используйте параметры -p и –pretty, чтобы добавить заголовок и сегмент в выходные данные):

$ nmcli -p con show net-static 
===============================================================================
Connection profile details (net-static )
===============================================================================
connection.id:                          net-static
connection.uuid:                        b9f18801-6084-4aee-af28-c8f0598ff5e1
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp3s0
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1578988781
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)

Добавление подключения Wi-Fi#

Вы можете добавить подключение Wi-Fi одним из следующих способов.

Способ 1. Подключение к сети Wi-Fi с использованием сетевого порта.

Подключитесь к сети Wi-Fi, указанной с помощью SSID или BSSID. Выполните следующую команду, чтобы найти подходящее подключение или создать его, а затем активируйте это подключение на устройстве.

$ nmcli device wifi connect "$SSID" password "$PASSWORD" ifname "$IFNAME"  
$ nmcli --ask device wifi connect "$SSID" 

Способ 2. Подключение к сети Wi-Fi с помощью файла конфигурации.

1. Выполните следующую команду, чтобы проверить доступные точки доступа Wi-Fi:

$ nmcli dev wifi list

2. Выполните следующую команду, чтобы создать конфигурацию статического IP-адреса, которая разрешает подключения Wi-Fi, автоматически выделяемые DNS:

$ nmcli con add con-name Wifi ifname wlan0 type wifi ssid MyWifi ip4 192.168.100.101/24 gw4 192.168.100.1

3. Выполните следующую команду, чтобы установить пароль WPA2, например answer:

$ nmcli con modify Wifi wifi-sec.key-mgmt wpa-psk
$ nmcli con modify Wifi wifi-sec.psk answer

4. Выполните следующую команду, чтобы изменить состояние Wi-Fi:

$ nmcli radio wifi [ on | off ]

Изменение атрибутов#

Выполните следующую команду, чтобы проверить определенный атрибут, например mtu:

$ nmcli connection show id 'Wifi ' | grep mtu
802-11-wireless.mtu: auto

Выполните следующую команду, чтобы изменить атрибут:

$ nmcli connection modify id 'Wifi ' 802-11-wireless.mtu 1350

Выполните следующую команду, чтобы подтвердить изменение:

$ nmcli connection show id 'Wifi ' | grep mtu
802-11-wireless.mtu: 1350

Настройка статического маршрута#

  • Выполните команду nmcli, чтобы настроить статический маршрут для сетевого подключения:

    $ nmcli connection modify enp3s0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
    
  • Выполните следующую команду, чтобы настроить статический маршрут с помощью редактора:

    $ nmcli con edit type ethernet con-name enp3s0
    ===| nmcli interactive connection editor |===
    Adding a new '802-3-ethernet' connection
    Type 'help' or '?' for available commands.
    Type 'describe [<setting>.<prop>]' for detailed property description.
    You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
    nmcli> set ipv4.routes 192.168.122.0/24 10.10.10.1
    nmcli>
    nmcli> save persistent
    Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
    Do you still want to save? [yes] yes
    Connection 'enp3s0' (1464ddb4-102a-4e79-874a-0a42e15cc3c0) successfully saved.
    nmcli> quit
    

Использование команды ip#

ПРИМЕЧАНИЕ.
Конфигурация сети, настроенная с помощью команды ip, вступает в силу немедленно, однако она будет потеряна после перезапуска системы.

Настройка IP-адресов

Выполните команду ip, чтобы настроить IP-адрес для интерфейса. Команда имеет следующий формат, где interface-name обозначает имя сетевой карты.

ip addr [ add | del ] address dev interface-name

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

# ip address add 192.168.0.10/24 dev enp3s0

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

# ip addr show dev enp3s0
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:aa:ad:4a brd ff:ff:ff:ff:ff:ff
    inet 192.168.202.248/16 brd 192.168.255.255 scope global dynamic noprefixroute enp3s0
       valid_lft 9547sec preferred_lft 9547sec
    inet 192.168.0.10/24 scope global enp3s0
       valid_lft forever preferred_lft forever
    inet6 fe80::32e8:cc22:9db2:f4d4/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Настройка нескольких IP-адресов Команда ip позволяет назначить интерфейсу несколько IP-адресов. Чтобы назначить IP-адреса интерфейсу, можно выполнить команду ip несколько раз от имени пользователя root. Ниже приведен пример.

# ip address add 192.168.2.223/24 dev enp4s0
# ip address add 192.168.4.223/24 dev enp4s0
# ip addr

3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:aa:da:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.203.12/16 brd 192.168.255.255 scope global dynamic noprefixroute enp4s0
       valid_lft 8389sec preferred_lft 8389sec
    inet 192.168.2.223/24 scope global enp4s0
       valid_lft forever preferred_lft forever
    inet 192.168.4.223/24 scope global enp4s0
       valid_lft forever preferred_lft forever
    inet6 fe80::1eef:5e24:4b67:f07f/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Настройка статического маршрута

Чтобы добавить статический маршрут в таблицу маршрутизации, выполните команду ip route add. Чтобы удалить маршрут, выполните команду ip route del. Ниже показан общий формат команды ip route:

ip route [ add | del | change | append | replace ] destination-address

Чтобы отобразить текущую таблицу IP-маршрутизации, выполните команду ip route от имени пользователя root. Ниже приведен пример.

# ip route

default via 192.168.0.1 dev enp3s0 proto dhcp metric 100
default via 192.168.0.1 dev enp4s0 proto dhcp metric 101
192.168.0.0/16 dev enp3s0 proto kernel scope link src 192.168.202.248 metric 100
192.168.0.0/16 dev enp4s0 proto kernel scope link src 192.168.203.12 metric 101
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown

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

ip route add 192.168.2.1 via 10.0.0.1 [dev interface-name]

В предыдущей команде 192.168.2.1 — это IP-адрес в десятично-точечной нотации, 10.0.0.1 — следующий прыжок, а interface-name — выходной интерфейс для входа в следующий прыжок.

Чтобы добавить для сети статический маршрут, то есть IP-адрес, представляющий диапазон IP-адресов, выполните следующую команду от имени пользователя root:

ip route add 192.168.2.0/24 via 10.0.0.1 [dev interface-name]

В предыдущей команде 192.168.2.1 — это IP-адрес целевой сети, 10.0.0.1 — префикс сети, а interface-name — имя сетевой карты.

Настройка сети с помощью файла ifcfg

ПРИМЕЧАНИЕ.
Настройка сети в файле ifcfg не вступает в силу немедленно. После изменения файла (например, ifcfg-enp3s0) нужно выполнить команду nmcli con reload;nmcli con up enp3s0 от имени пользователя root, чтобы перезагрузить файл конфигурации и активировать подключение для вступления изменения в силу.

Настройка статической сети Ниже сетевой интерфейс enp4s0 используется в качестве примера для описания того, как настроить статическую сеть, изменив файл ifcfg от имени пользователя root. Файл ifcfg-enp4s0 создается в каталоге /etc/sysconfig/network-scripts/. Измените следующие параметры в этом файле:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.0.10
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp4s0static
UUID=08c3a30e-c5e2-4d7b-831f-26c3cdc29293
DEVICE=enp4s0
ONBOOT=yes

Настройка динамической сети Ниже сетевой интерфейс em1 используется в качестве примера для описания того, как настроить динамическую сеть, изменив файл ifcfg. Файл ifcfg-em1 создается в каталоге /etc/sysconfig/network-scripts/. Измените следующие параметры в этом файле:

DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes

Чтобы настроить интерфейс для отправки разных имен хостов на DHCP-сервер, добавьте в файл ifcfg следующее:

DHCP_HOSTNAME=hostname

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

PEERDNS=no

Чтобы настроить интерфейс для использования определенного DNS-сервера, установите для параметра PEERDNS значение no и добавьте в файл ifcfg следующее:

DNS1=ip-address
DNS2=ip-address

ip-address — это IP-адрес DNS-сервера. Это позволяет сетевому сервису обновлять файл /etc/resolv.conf, используя указанный DNS-сервер.

Конфигурация шлюза по умолчанию При определении шлюза по умолчанию проанализируйте файл /etc/sysconfig/network, а затем файл ifcfg и используйте последнее считанное значение GATEWAY в качестве маршрута по умолчанию в таблице маршрутизации.

Когда NetworkManager используется для управления хостами в динамической сетевой среде, рекомендуется настроить шлюз по умолчанию для назначения DHCP.

Настройка имени хоста#

Существует три типа имен хостов: static, transient и pretty.

  • static: статическое имя хоста, которое может быть задано пользователями и сохранено в файле /etc/hostname.
  • transient: динамическое имя хоста, поддерживаемое ядром. Начальное значение — статическое имя хоста. Значение по умолчанию — localhost. Это значение можно изменить, когда работает сервер mDNS или DHCP.
  • pretty: гибкое имя хоста, которое можно задавать в любой форме (включая специальные символы и пробелы). На статические и динамические имена хостов распространяются общие ограничения для доменных имен.

ПРИМЕЧАНИЕ.
Статические и динамические имена хостов могут содержать только буквы (a–z и A–Z), цифры (0–9), дефисы (-), символы подчеркивания (_) и точки (.). Имена хостов не могут начинаться или заканчиваться точкой (.), а также содержать две последовательные точки (.). Имя хоста может содержать не более 64 символов.

Настройка имени хоста с помощью команды hostnamectl#

Просмотр всех имен хостов Выполните следующую команду, чтобы просмотреть текущее имя хоста:

$ hostnamectl status

ПРИМЕЧАНИЕ.
Если в команде не указан параметр, по умолчанию используется параметр status.

Задание всех имен хостов Выполните следующую команду от имени пользователя root, чтобы задать все имена хостов:

# hostnamectl set-hostname name

Задание конкретного имени хоста Выполните следующую команду от имени пользователя root, чтобы задать конкретное имя хоста:

# hostnamectl set-hostname name [option...]

В качестве option можно указать один или несколько из параметров –pretty, –static и –transient.

Если –static или –transient используется вместе с –pretty, имена хостов типа static или transient будут упрощены до имен хостов типа pretty с заменой пробелов дефисами (-) и удалением специальных символов.

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

# hostnamectl set-hostname "Stephen's notebook" --pretty

Сброс определенного имени хоста Чтобы выполнить сброс конкретное имя хоста и восстановить его в формате по умолчанию, выполните следующую команду от имени пользователя root:

# hostnamectl set-hostname "" [option...]

В предыдущей команде "" — это пустая строка символов, а в качестве option можно указать один или несколько из параметров –pretty, –static и –transient.

Удаленное изменение имени хоста Чтобы изменить имя хоста в удаленной системе, выполните команду hostnamectl с параметром -H или –host от имени пользователя root.

# hostnamectl set-hostname -H [username]@hostname new_hostname

В предыдущей команде hostname обозначает имя настраиваемого удаленного хоста, username — определенное пользователем имя, а new_hostname — новое имя хоста. Команда hostnamectl используется для подключения к удаленной системе по протоколу SSH.

Настройка имени хоста с помощью команды nmcli

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

$ nmcli general hostname

Чтобы присвоить статическому хосту имя host-server, выполните следующую команду от имени пользователя root:

# nmcli general hostname host-server

Чтобы система могла обнаружить изменение статического имени хоста, выполните следующую команду от имени пользователя root для перезагрузки сервиса hostnamed:

# systemctl restart systemd-hostnamed

Настройка объединения сетевых интерфейсов#

Выполнение команды nmcli

  • Чтобы создать объединяющую связь (также называемую объединяющим логическим интерфейсом) с именем mybond0, выполните следующую команду:

    $ nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup
    
  • Чтобы добавить ведомый интерфейс, выполните следующую команду:

    $ nmcli con add type bond-slave ifname enp3s0 master mybond0
    

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

    $ nmcli con add type bond-slave ifname enp4s0 master mybond0
    Connection 'bond-slave-enp4s0' (05e56afc-b953-41a9-b3f9-0791eb49f7d3) successfully added.
    
  • Для включения объединяющей связи выполните следующую команду, чтобы сначала включить ведомый интерфейс:

    $ nmcli con up bond-slave-enp3s0
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
    
    $ nmcli con up bond-slave-enp4s0
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
    

    Затем выполните следующую команду, чтобы включить объединяющую связь:

    $ nmcli con up mybond0
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/16)
    

Настройка объединения сетевых интерфейсов с помощью командной строки#

Проверка установки модуля ядра объединения интерфейсов

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

# modprobe --first-time bonding

Выполните следующую команду от имени пользователя root, чтобы отобразить информацию о модуле:

# modinfo bonding

Для получения сведений о дополнительных командах выполните команду modprobe –help от имени пользователя root.

Создание интерфейса объединения каналов

Чтобы создать интерфейс объединения каналов, можно создать файл с именем ifcfg-bondN в каталоге /etc/sysconfig/network-scripts/ от имени пользователя root (заменив N фактическим номером интерфейса, например 0).

Запишите соответствующее содержимое в файл конфигурации в соответствии с типом объединяемого интерфейса, например сетевой интерфейс. Пример файла конфигурации интерфейса выглядит следующим образом.

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"

Создание ведомого интерфейса

После создания интерфейса объединения каналов необходимо добавить инструкции MASTER и SLAVE в файл конфигурации ведомого интерфейса.

Например, для объединения двух сетевых интерфейсов enp3s0 и enp4s0 в канальном режиме файлы конфигурации имеют следующий вид.

TYPE=Ethernet
NAME=bond-slave-enp3s0
UUID=3b7601d1-b373-4fdf-a996-9d267d1cac40
DEVICE=enp3s0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
NAME=bond-slave-enp4s0
UUID=00f0482c-824f-478f-9479-abf947f01c4a
DEVICE=enp4s0
ONBOOT=yes
MASTER=bond0
SLAVE=yes

Активация объединения каналов

Чтобы активировать объединение каналов, необходимо включить все ведомые интерфейсы. Выполните следующую команду от имени пользователя root:

# ifup enp3s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
# ifup enp4s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)

ПРИМЕЧАНИЕ.
Если интерфейс находится в состоянии up, выполните команду ifdown enp3s0, чтобы изменить состояние на down. В этой команде enp3s0 обозначает фактическое имя сетевой карты.

После этого включите все ведомые интерфейсы, чтобы включить объединение (не устанавливайте их в состояние Down).

Чтобы NetworkManager мог обнаруживать изменения, внесенные системой, выполните следующую команду от имени пользователя root после каждого изменения:

# nmcli con load /etc/sysconfig/network-scripts/ifcfg-device

Выполните следующую команду от имени пользователя root, чтобы проверить состояние объединенного интерфейса:

# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:aa:ad:4a brd ff:ff:ff:ff:ff:ff
3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:aa:da:e2 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 86:a1:10:fb:ef:07 brd ff:ff:ff:ff:ff:ff
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:29:35:4c brd ff:ff:ff:ff:ff:ff

Создание нескольких объединяющих связей

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

  • Создайте несколько файлов ifcfg-bondN, содержащих инструкцию BONDING_OPTS, чтобы сетевые скрипты могли создавать требуемые интерфейсы объединения.
  • Создайте или отредактируйте существующий файл конфигурации интерфейса, который необходимо объединить, и добавьте инструкцию SLAVE.
  • Используйте инструкцию MASTER, чтобы назначить интерфейс, который необходимо объединить, т. е. ведомый интерфейс, интерфейсу объединения каналов.

Ниже приведен пример файла конфигурации интерфейса объединения каналов.

DEVICE=bondN
NAME=bondN
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"

В этом примере замените N номером объединенного интерфейса. Например, для создания двух интерфейсов нужно создать два файла конфигурации ifcfg-bond0 и ifcfg-bond1 с правильными IP-адресами.

Отличия IPv6 от IPv4#

Ограничения#

  • chrony поддерживает глобальные адреса, но не адреса, предназначенные только для коммуникаций в пределах одного сегмента местной сети или магистральной линии (адрес link-local).
  • Firefox поддерживает доступ к глобальному адресу по протоколу HTTP или HTTPS, но не поддерживает доступ к адресу link-local.

Описание конфигурации#

Настройка MTU устройства интерфейса

В сценарии IPv6 минимальное значение MTU всего пути маршрутизации используется в качестве значения PMTU текущего канала. На основе значения PMTU сторона-источник определяет, следует ли фрагментировать пакеты. Другим устройствам на всем пути не требуется фрагментировать пакеты. Это снижает нагрузку на промежуточные устройства маршрутизации. Минимальное значение PMTU IPv6 — 1280.

Настройка MTU устройства интерфейса Если для MTU интерфейса с настроенным IPv6-адресом установлено значение меньше 1280 (минимальное значение PMTU IPv6), IPv6-адрес интерфейса будет удален, а добавить его снова будет невозможно. Поэтому в сценариях IPv6 значение MTU устройства интерфейса должно быть больше или равно 1280. Выполните следующие команды от имени пользователя root, чтобы просмотреть подробные сведения.

# ip addr show enp3s0
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:62:xx:xx brd ff:ff:ff:ff:xx:xx
    inet 10.41.125.236/16 brd 10.41.255.255 scope global noprefixroute dynamic enp3s0
       valid_lft 38663sec preferred_lft 38663sec
    inet6 2001:222::2/64 scope global
       valid_lft forever preferred_lft forever
# ip link set dev enp3s0 mtu 1200
# ip addr show enp3s0
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1200 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:62:xx:xx brd ff:ff:ff:ff:xx:xx
    inet 10.41.125.236/16 brd 10.41.255.255 scope global noprefixroute dynamic enp3s0
       valid_lft 38642sec preferred_lft 38642sec
# ip addr add 2001:222::2/64 dev enp3s0
RTNETLINK answers: No buffer space available
# ip link set dev enp3s0 mtu 1500
# ip addr show enp3s0
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:62:xx:xx brd ff:ff:ff:ff:xx:xx
    inet 10.41.125.236/16 brd 10.41.255.255 scope global noprefixroute dynamic enp3s0
       valid_lft 38538sec preferred_lft 38538sec
# ip addr add 2001:222::2/64 dev enp3s0
# ip addr show enp3s0
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:62:xx:xx brd ff:ff:ff:ff:xx:xx
    inet 10.41.125.236/16 brd 10.41.255.255 scope global noprefixroute dynamic enp3s0
       valid_lft 38531sec preferred_lft 38531sec
    inet6 2001:222::2/64 scope global
       valid_lft forever preferred_lft forever

Автонастройка IPv6-адреса с отслеживанием состояния#

Обзор Адреса IPv6 и IPv4 можно получить через протокол DHCP в качестве пользователя root. Существуют методы настройки IPv6-адреса: автонастройка без отслеживания состояния и автонастройка с отслеживанием состояния.

  • Автонастройка без отслеживания состояния

    DHCP-сервер для управления не требуется. Устройство получает префикс сети в соответствии с объявлением маршрутизатора (Router Advertisement, RA), либо префиксу адреса link-local назначается фиксированное значение fe80::. Идентификатор интерфейса получается автоматически на основе значения IPV6_ADDR_GEN_MODE в файле ifcfg.

    1. Если IPv6_ADDR_GEN_MODE имеет значение stable-privacy, устройство определяет случайный идентификатор интерфейса на основе сведений об устройстве и сетевой среде.
    2. Если IPv6_ADDR_GEN_MODE имеет значение EUI64, устройство определяет идентификатор интерфейса на основе MAC-адреса устройства.
  • Автонастройка с отслеживанием состояния: DHCP-сервер управляет IPv6-адресами и арендует их на DHCPv6-сервере по протоколу DHCPv6.

    При автоматической настройке с отслеживанием состояния DHCPv6-сервер может классифицировать клиентов по классу поставщика, настроенному на клиентах, и назначать разным типам клиентов IPv6-адреса из разных сегментов. В сценариях IPv4 клиент может использовать параметр -V команды dhclient, чтобы задать поле vendor-class-identifier. DHCP-сервер классифицирует клиентов на основе поля vendor-class-identifier в файле конфигурации. Если тот же метод применяется для классификации клиентов в сценариях IPv6, такая классификация не работает.

    dhclient -6 <interface> -V <vendor-class-identifier string> <interface>
    

    Это связано с тем, что DHCPv6 сильно отличается от DHCP. vendor-class-option в DHCPv6 заменяет vendor-class-identifier в DHCP. Однако для параметра -V команды dhclient нельзя задать vendor-class-option.

Установка класса поставщика для dhclient при автонастройке IPv6-адреса с отслеживанием состояния

  • Добавьте на клиенте параметр класса поставщика с помощью файла конфигурации.

    Файл конфигурации клиента (/etc/dhcp/dhclient6.conf): расположение файла можно настроить. Вам нужно указать файл конфигурации, используя параметр -cf команды dhclient.

    option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
    interface "enp3s0" {
            send dhcp6.vendor-class <Enterprise-ID number> <vendor class string length> <vendor class string>;
    }
    

    ПРИМЕЧАНИЕ.
    - \<Enterprise-ID number\>: 32-значное целое число, указывающее идентификатор предприятия. Предприятие регистрируется через IANA.
    — \<vendor class string length\>: 16-значное целое число, указывающее длину строки класса поставщика.
    — \<vendor class string\>: строка символов устанавливаемого класса поставщика, например HWHW.

    На клиенте:

    dhclient -6 <interface> -cf /etc/dhcp/dhclient6.conf
    
  • Файл конфигурации DHCPv6-сервера (/etc/dhcp/dhcpd6.conf) нужно указать с помощью параметра -cf команды dhcpd.

    option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
    subnet6 fc00:4:12:ffff::/64 {
            class "hw" {
                    match if substring ( option dhcp6.vendor-class, 6, 10 ) = "HWHW";
            }
            pool6 {
                    allow members of "hw";
                    range6 fc00:4:12:ffff::ff10 fc00:4:12:ffff::ff20;
            }
            pool6 {
                    allow unknown clients;
                    range6 fc00:4:12:ffff::100 fc00:4:12:ffff::120;
            }
    }
    

    ПРИМЕЧАНИЕ.
    Начальная позиция подстроки (option dhcp6.vendor-class, 6, 10) равна 6, так как подстрока содержит <Enterprise-ID number\> длиной четыре байта и <string length\> длиной два байта. Конечная позиция подстроки равна 6+<vendor class string length\>. В этом примере строкой класса поставщика является HWHW, а длина строки равна 4. Таким образом, конечной позицией подстроки является 6 + 4 = 10. Вы можете указывать <vendor class string\> и <vendor class string length\> в соответствии с предъявляемыми потребностями.

    На сервере:

    dhcpd -6 -cf /etc/dhcp/dhcpd6.conf <interface>
    

Ядро с поддержкой системных вызовов, связанных с сокетами#

Обзор Длина IPv6-адреса увеличена до 128 бит, что указывает на наличие достаточного количества IPv6-адресов для выделения. Заголовок IPv6-адреса стал проще по сравнению с заголовком IPv4-адреса, кроме того, улучшена функция автоматической настройки IPv6. IPv6-адреса подразделяются на следующие виды: для одноадресной передачи (unicast), многоадресной передачи (multicast) и произвольной передачи (anycast). Типовые адреса для одноадресной передачи включают в себя адреса link-local, уникальные локальные адреса и глобальные адреса. Поскольку существует достаточное количество глобальных IPv6-адресов, уникальные локальные адреса не используются (ранее они назывались локальными адресами для сетевого узла или адресами site-local, но от них отказались в 2004 году). В настоящее время основными адресами для одноадресной передачи являются адрес link-local и глобальный адрес. Текущее ядро поддерживает системный вызов сокетов. Адрес link-local и глобальный адрес, использующие адреса для одноадресной передачи, различаются.

Различия между адресом link-local и глобальным адресом во время вызова сокета Документ RFC 2553 “Основные расширения интерфейса сокетов для IPv6” (Basic Socket Interface Extensions for IPv6) определяет структуру данных sockaddr_in6 следующим образом.

struct sockaddr_in6 {     
    uint8_t         sin6_len;       /* length of this struct */     
    sa_family_t     sin6_family;    /* AF_INET6 */     
    in_port_t       sin6_port;      /* transport layer port # */     
    uint32_t        sin6_flowinfo;  /* IPv6 flow information */     
    struct in6_addr sin6_addr;      /* IPv6 address */     
    uint32_t        sin6_scope_id;  /* set of interfaces for a scope */ 
}; 

ПРИМЕЧАНИЕ.
sin6_scope_id: 32-разрядное целое число. Для адреса link-local это значение идентифицирует индекс указанного интерфейса. Для link-range sin6_addr это значение идентифицирует индекс указанного интерфейса. Для site-range sin6_addr это значение используется в качестве идентификатора сайта (использование адреса site-local было прекращено).

Когда для связи с сокетом используется адрес link-local, требуется указать индекс интерфейса, соответствующий этому адресу, при формировании адреса назначения. Для преобразования имени интерфейса в номер индекса интерфейса обычно можно использовать функцию if_nametoindex. Ниже приведены подробные сведения.

int port = 1234;
int sk_fd;
int iff_index = 0;
char iff_name[100] = "enp3s0";
char * ll_addr[100] = "fe80::123:456:789";
struct sockaddr_in6 server_addr;

memset(&server_addr,0,sizeof(structsockaddr_in6));
iff_index=if_nametoindex(iff_name);

server_addr.sin6_family=AF_INET6;
server_addr.sin6_port=htons(port);
server_addr.sin6_scope_id=iff_index;
inet_pton(AF_INET6, ll_addr, &(server_addr.sin6_addr));

sk_fd=socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
connect(sk_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in6));

Настройка устойчивости процесса управляющей программы dhclient для IPv4-адресов#

Обзор Если при использовании сервиса NetworkManager для управления сетевыми сервисами файл конфигурации ifcfg-<interface-name\> интерфейса настроен для получения IP-адреса в режиме DHCP, сервис NetworkManager запускает процесс управляющей программы dhclient для получения IP-адреса с DHCP-сервера.

dhclient предоставляет параметр -1, позволяющий определить, пытается ли процесс dhclient устойчивым образом запрашивать IP-адрес либо завершает работу после истечения времени ожидания запроса до получения ответа от DHCP-сервера. Для процесса управляющей программы dhclient для IPv4-адресов можно задать PERSISTENT_DHCLIENT в файле конфигурации ifcfg-<interface-name\>, чтобы определить, следует ли устанавливать свойство устойчивости процесса dhclient для IPv4-адресов.

Ограничения

  1. Если текущий процесс dhclient остановлен, сетевой сервис не может запустить его автоматически. Поэтому требуется обеспечить надежность работы.
  2. Если параметр PERSISTENT_DHCLIENT настроен, убедитесь, что соответствующий DHCP-сервер существует. Если при запуске сетевого сервиса DHCP-сервер недоступен, а процесс dhclient постоянно пытается отправлять пакеты запросов, но не получает никакого ответа, сетевой сервис приостанавливается до истечения времени ожидания сетевого сервиса. Сетевой сервис запускает процессы dhclient для IPv4-адресов у нескольких сетевых карт в последовательном режиме. Если для сетевой карты настроена устойчивость, однако DHCP-сервер не готов, сетевой сервис будет приостановлен при получении IPv4-адреса для этой сетевой карты. В результате сетевая карта не может получить IPv4- или IPv6-адрес.

Описанные выше ограничения применяются к особым сценариям. Вам требуется обеспечить надежность работы.

Различия в конфигурации между IPv4 DHCP и IPv6 DHCPv6 Вы можете настроить параметр ifcfg-<interface-name\> в интерфейсе, чтобы включить IPv4 и IPv6 для динамического получения IP-адресов с использованием DHCP или DHCPv6. Конфигурация выглядит следующим образом.

BOOTPROTO=none|bootp|dhcp
DHCPV6C=yes|no
PERSISTENT_DHCLIENT=yes|no|1|0
  • BOOTPROTO: none означает, что адрес IPv4 настроен статически. bootp|dhcp позволяет DHCP-клиенту динамически получать IPv4-адрес.

  • DHCPV6C: значение no указывает, что IPv6-адрес настроен статическим образом, а значение yes указывает, что DHCPv6 dhclient может получать IPv6-адрес динамически.

  • PERSISTENT_DHCLIENT: значение no|0 указывает, что процесс IPv4 dhclient настроен как неустойчивый. Если dhclient отправляет пакет запроса на DHCP-сервер и не получает никакого ответа, dhclient завершает работу через определенный период времени с кодом выхода 2. Значение yes|1 указывает, что процесс IPv4 dhclient настроен для устойчивой работы. Процесс dhclient неоднократно отправляет пакеты запросов на DHCP-сервер. Если параметр PERSISTENT_DHCLIENT не настроен, для IPv4 dhclient по умолчанию установлено значение yes|1.

    ПРИМЕЧАНИЕ.
    Настройка PERSISTENT_DHCLIENT применяется только для IPv4 и не применяется для процессов dhclient -6, связанных с IPv6. По умолчанию настройка устойчивости не выполняется для IPv6.

Различия между конфигурациями IPv4 и IPv6 при использовании команды iproute#

Обзор IPv4 и IPv6 — это два разных стандарта протокола. Поэтому команды iproute используются по-разному. В этом разделе описаны различия между командами для IPv4 и IPv6 в пакете iproute.

Для выполнения команд iproute вам нужны права root.

Жизненный цикл IPv6-адреса

Примечания.

  • preferred_lft: предпочтительное время существования. Срок действия preferred_lft адреса не истек, и его можно использовать для обычного взаимодействия. Если существует несколько адресов в состоянии preferred, адрес выбирается на основе механизма ядра.
  • valid_lft: действительное время существования. Адрес нельзя использовать для создания подключений в течение периода [preferred_lft, valid_lft]. Существующие подключения продолжают действовать.

Команды имеют следующий формат:

ip link set IFNAME mtu MTU

Минимальный PMTU для IPv6 равен 1280. Если задано значение MTU меньше 1280, IPv6-адреса будут потеряны. Другие устройства не могут проверять связь с IPv6-адресом.

Команда ip addr#
  1. Команды имеют следующий формат:

    ip [-6] addr add IFADDR dev IFNAME
    

    Вы можете добавить параметр -6 или не добавлять IPv6-адрес. Команда ip addr определяет принадлежность адреса к IPv4 или IPv6 в зависимости от его типа.

    Если указан параметр -6, а IFADDR является IPv4-адресом, возвращается сообщение об ошибке.

  2. Команды имеют следующий формат:

    ip [-6] addr add IFADDR  dev IFNAME [home|nodad]
    

    [home|nodad] действителен только для IPv6-адресов.

    • home: указывает домашний адрес, определенный в документе RFC 6275. (Этот адрес получается мобильным узлом из домашнего канала и является постоянным адресом мобильного узла. Если мобильный узел остается в одном домашнем канале, взаимодействие между различными объектами осуществляется нормальным образом.)
    • nodad: указывает, что DAD не выполняется при добавлении этого IPv6-адреса. (RFC 4862) Если для нескольких интерфейсов на устройстве настроен один и тот же IPv6-адрес с помощью параметра nodad, этот IPv6-адрес используется в порядке следования интерфейсов. Нельзя добавить к одному интерфейсу IPv6-адрес как с параметром nodad, так и без него, потому что эти два IP-адреса одинаковы. В противном случае отображается сообщение “RTNETLINK answers: File exists” (Ответ RTNETLINK: файл существует).
  3. Команды имеют следующий формат:

    ip [-6] addr del IFADDR dev IFNAME
    

    Вы можете добавить параметр -6 или не удалять IPv6-адрес. Команда ip addr del определяет, используется ли адрес IPv4 или IPv6, в зависимости от типа адреса.

  4. Команды имеют следующий формат:

    ip [-6] addr show dev IFNAME [tentative|-tentative|deprecated|-deprecated|dadfailed|-dadfailed|temporary]
    
    • Если параметр -6 не указан, отображаются как IPv4-адреса, так и IPv6-адреса. Если параметр -6 указан, отображаются только IPv6-адреса.
    • [tentative|-tentative|deprecated|-deprecated|dadfailed|-dadfailed|temporary]. Эти параметры предназначены только для IPv6. Вы можете фильтровать и просматривать адреса на основе состояния IPv6-адреса.
      1. tentative (только для IPv6): перечисляет только те адреса, которые не прошли проверку дублирования адресов (DAD).
      2. -tentative (только для IPv6): перечисляет только адреса, которые не проходят процесс DAD.
      3. deprecated (только для IPv6): перечисляет только устаревшие адреса.
      4. -deprecated (только для IPv6): перечисляет только те адреса, которые не являются устаревшими.
      5. dadfailed (только для IPv6): перечисляет только те адреса, которые не проходят проверку DAD.
      6. -dadfailed (только для IPv6): перечисляет только те адреса, которые не приводят к ошибкам проверки DAD.
      7. temporary (только для IPv6): перечисляет только временные адреса.
Command ip route#
  1. Команды имеют следующий формат:

    ip [-6] route add ROUTE [mtu lock MTU]
    
    • Параметр -6: вы можете как добавить, так и не добавлять параметр -6 при добавлении маршрута IPv6. Команда ip route определяет, используется ли адрес IPv4 или IPv6, в зависимости от типа адреса.

    • mtu lock MTU: specifies the MTU of the locked route. Если MTU не заблокирован, значение MTU может быть изменено ядром во время процесса PMTUD. Если MTU заблокирован, попытка выполнения PMTUD не предпринимается. Бит DF не устанавливается ни для одного из пакетов IPv4, а пакеты IPv6 сегментируются на основе MTU.

  2. Команды имеют следующий формат:

    ip [-6] route del ROUTE
    

    Вы можете выбрать, нужно ли добавлять параметр -6, при удалении маршрута IPv6. Команда ip route определяет, используется ли адрес IPv4 или IPv6, в зависимости от типа адреса.

Команда ip rule#
  1. Команды имеют следующий формат:

    ip [-6] rule list
    

    Параметр -6: если параметр -6 установлен, выводятся маршруты на основе политики IPv6. Если параметр -6 не установлен, выводятся маршруты на основе политики IPv4. Поэтому вам нужно настроить параметр -6 в соответствии с конкретным типом протокола.

  2. Команды имеют следующий формат:

    ip [-6] rule [add|del] [from|to] ADDR table TABLE pref PREF
    

    Параметр -6: этот параметр необходимо настроить для записей маршрутизации на основе политики IPv6. В противном случае отображается сообщение об ошибке “Error: Invalid source address.” (Неверный исходный адрес). Соответственно, параметр -6 не может быть установлен для записей маршрутизации на основе политики IPv4. В противном случае отображается сообщение об ошибке “Error: Invalid source address.” (Неверный исходный адрес).

Различия в конфигурации сервиса NetworkManager#

Обзор#

Сервис NetworkManager использует определение логического интерфейса ifup/ifdown для расширенной настройки сети. Большинство параметров задаются в файлах конфигурации /etc/sysconfig/network и /etc/sysconfig/network-scripts/ifcfg-<interface-name\>. Первый отвечает за глобальную настройку, а второй — за настройку указанной сетевой карты. Когда две эти настройки конфликтуют, применяется настройка из второго файла.

Различия в конфигурации#

Различия конфигурации в /etc/sysconfig/network:

Различия в /etc/sysconfig/network-scripts/ifcfg-<interface-name\>:

Часто задаваемые вопросы#

iscsi-initiator-utils не поддерживает IPv6-адрес fe80#

Симптом#

Когда клиент использует IPv6-адрес для входа на iSCSI-сервер, выполните команду iscsiadm -m node -p ipv6address -l. Если используется глобальный адрес, замените ipv6address в примере команды глобальным адресом. Однако адрес link-local (IPv6-адрес, начинающийся с fe80) использовать нельзя, так как текущий механизм iscsi-initiator-utils не поддерживает вход на iSCSI-сервер с использованием адреса link-local.

Возможная причина#

Если вы входите в систему, используя формат iscsiadm -m node -p fe80::xxxx -l, возвращается ошибка времени ожидания входа. Это связано с тем, что при использовании адреса link-local необходимо указать интерфейс. В противном случае функция iscsi_io_tcp_connect не может вызвать функцию подключения и выдается стандартный код ошибки 22.

Если вы используете для входа в систему формат iscsiadm -m node -p fe80::xxxx%enp3s0 -l, функция iscsi_addr_match сравнит адрес fe80::xxxx%enp3s0 с адресом fe80::xxxx в информации об узле, возвращаемой сервером. Результат сравнения не совпадает, что приводит к ошибке входа.

Поэтому текущий механизм iscsi-initiator-utils не поддерживает вход на сервер iSCSI с использованием адреса link-local.

Потеря IPv6-адреса после отключения сетевой карты#

Симптом#

Выполните команду ip link down+up NIC или ifconfig down+up NIC, чтобы отключить сетевую карту, а затем включить ее для подключения к сети. Проверьте IP-адрес, настроенный на сетевой карте. Оказывается, что IPv4-адрес не теряется, а настроенный IPv6-адрес теряется.

Возможная причина#

Согласно логической схеме обработки в ядре, если сетевая карта переходит в отключенное состояние, все адреса IPv4 и IPv6 будут сброшены. После того как сетевая карта переходит в рабочее состояние, IPv4-адрес автоматически восстанавливается, а также восстанавливается автоматически настроенный link-local адрес IPv6 на сетевой карте. Однако другие IPv6-адреса по умолчанию теряются. Чтобы сохранить эти IPv6-адреса, выполните команду sysctl -w net.ipv6.conf.\< имя сетевой карты \>.keep_addr_on_down=1.

Долгое добавление или удаление IPv6-адреса для интерфейса объединения с несколькими IPv6-адресами#

Симптом#

Когда пользователи выполняют следующую команду для добавления или удаления (включая сброс) IPv6-адреса, время ожидания линейно возрастает вместе с количеством IPv6-адресов, настроенных в интерфейсе объединения. X — младшие 16 битов, которые изменяются динамически. Например, для добавления 3000 IPv6-адресов или их удаления из интерфейса объединения, который уже имеет четыре физических сетевых карты, использующих один поток, требуется около пяти минут, тогда как у одной физической сетевой карты это занимает менее 10 секунд.

ip a add/del 192:168::18:X/64 dev DEVICE
Возможная причина#

Когда IPv6-адрес добавляется к интерфейсу объединения, создается IPv6-адрес многоадресной передачи, который синхронизируется со всеми физическими сетевыми картами. Требуемое время возрастает с увеличением количества IPv6-адресов. В итоге это занимает слишком много времени.

Решение#

IPv6-адрес для многоадресной передачи создается путем объединения младших 24 битов IPv6-адреса и 33-33-ff. Если адресов для многоадресной передачи слишком много, добавление или удаление адреса занимает много времени. Если таких адресов немного, требуемое время не увеличивается.

Рекомендуется сделать так, чтобы младшие 24 бита IPv6-адреса совпадали со старшими 24 битами IPv6-адреса. Таким образом, одна сетевая карта может взаимодействовать с внешними устройствами, используя только один IP-адрес в сегменте сети.

Задержка при передаче журнала rsyslog в сценарии, где используются как IPv4-адреса, так и IPv6-адреса#

Симптом#

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

Возможная причина#

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

Решение#

Вы можете отключить механизм буферных очередей, настроив прямой режим (Direct) от имени пользователя root. Добавьте следующую информацию в начало нового файла конфигурации удаленной передачи, находящегося в каталоге /etc/rsyslog.d на сервере удаленной передачи rsyslog:

$ActionQueueType Direct
$MainMsgQueueType Direct

ПРИМЕЧАНИЕ.
— В прямом режиме размер очереди уменьшается на 1. Поэтому для вывода следующего журнала в очереди резервируется один журнал.
— Прямой режим снижает производительность rsyslog на сервере.