6. Сетевые интерфейсы

В ПАК “Фортикс” поддерживаются следующие типы сетевых интерфейсов:

  • ether – интерфейс Ethernet;

  • bond – интерфейс, объединяющий интерфейсы в один логический;

  • bridge – интерфейс-сетевой мост;

  • dummy – интерфейс-“заглушка”;

  • fortun – туннельный криптографический интерфейс fortun;

  • gre – туннельный интерфейс gre;

  • ifb – интерфейс для выполнения QoS;

  • loopback – интерфейс “петля”;

  • vlan – интерфейс 802.1Q;

  • vxlan – туннельный интерфейс VxLAN;

  • wg – туннельный интерфейс WireGuard.

6.1. Общая настройка

Для определения интерфейса в конфигурации необходимо указать его уникальное имя (строка длиной от 1 до 15 символов), которое выбирается произвольно (исключение: интерфейсы типа ether, loopback), и тип. Для интерфейсов типа ether предусмотрено автоматическое присвоение имени в формате en<n>, где <n> – число, соответствующее номеру порта маршрутизатора ПАК “Фортикс”.

В заводской конфигурации ПАК “Фортикс” настроен один интерфейс en0 типа ether и один интерфейс типа loopback:

interface {
  ether en0 {
    enable
    ipv4 address 192.168.0.1/24
  }
  loopback lo enable
}

Для изменения IP-адреса интерфейса применяются следующие команды:

# del interface <interface-type> <interface-name> ipv4|ipv6 address
# set interface <interface-type> <interface-name> ipv4|ipv6 address <address>
# commit

где

  • <interface-type> – тип интерфейса;

  • <interface-name> – имя интерфейса;

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6;

  • <address> – IPv4-адрес в формате A.B.C.D/mask или IPv6-адрес в формате A:B:...:H/mask в зависимости от уровня конфигурации.

Пример применения команд для изменения IP-адреса интерфейса en0 типа ether с 192.168.0.1/24 на 192.168.122.184/24:

> configure

# del interface ether en0 ipv4 address
# set interface ether en0 ipv4 address 192.168.122.184/24
# commit

Для настройки получения IP-адреса по протоколу DHCP применяются команды:

# del interface <interface-type> <interface-name> ipv4|ipv6
# set interface <interface-type> <interface-name> ipv4|ipv6 dhcp
# commit

где

  • <interface-type> – тип интерфейса;

  • <interface-name> – имя интерфейса;

  • ipv4|ipv6 – уровень конфигурации IPv4/IPv6.

Пример применения команд для настройки получения IP-адреса интерфейса en0 типа ether по протоколу DHCP:

# del interface ether en0 ipv4
# set interface ether en0 ipv4 dhcp
# commit

Настройка интерфейсов осуществляется на следующем уровне конфигурации:

[edit interface <interface-type> <interface-name>]

где

  • <interface-type> – тип интерфейса;

  • <interface-name> – имя интерфейса.

На данном уровне конфигурации доступны следующие основные настройки интерфейсов (общие для всех типов):

  • description <description> – задать текстовое описание интерфейса, где<description> – строка;

  • enable – перевести интерфейс в состояние UP (сделать доступным);

  • egress – перейти на уровень конфигурации выходной дисциплины;

  • ingress – перейти на уровень конфигурации входной дисциплины;

  • ipv4 – перейти на уровень конфигурации IPv4;

  • ipv6 – перейти на уровень конфигурации IPv6;

  • mac-addr <mac-address> – задать MAC-адрес, где <mac-address> – MAC-адрес в формате xx:xx:xx:xx:xx:xx;

  • mtu <mtu-value> – задать размер MTU, где <mtu-value> – число от 1 до 65535;

  • no-arp – отключить ARP;

  • no-link-detect – отключить детектирование несущей для управления маршрутами;

  • no-multicast – отключить мультикаст;

  • promisc – использовать режим promisc;

  • rps – использовать принудительное распределение по ядрам процессора на приёме.

6.2. Просмотр состояния интерфейсов

Для просмотра текущего состояния интерфейса и его статистики применяется команда:

> show interface <interface-type> <interface-name>

где

  • <interface-type> – тип интерфейса;

  • <interface-name> – имя интерфейса.

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

  • show interface (show interface * *) – вывести информацию о всех интерфейсах;

  • show interface * en0 – вывести информацию об интерфейсе с именем en0;

  • show interface ether * – вывести информацию о всех интерфейсах типа ether;

  • show interface ether en0 – вывести информацию об интерфейсе en0 типа ether.

Для изменения формата вывода или детализации в команде show указываются следующие уточняющие параметры:

  • brief – параметр, при указании которого информация представляется в краткой табличной форме;

  • detail – параметр, при указании которого информация представляется детализированно;

  • long – параметр, при указании которого информация представляется в развернутом виде;

  • device – параметр, при указании которого представляется информация об устройстве;

  • link – параметр, при указании которого представляется информация о подключении (carrier);

  • qdisc – параметр, при указании которого представляется информация о дисциплинах обслуживания трафика;

  • stat – параметр, при указании которого представляется информация о статистике;

  • stat reset – параметр, при указании которого информация о статистике сбрасывается.

Пример применения команды для просмотра информации о всех интерфейсах в краткой табличной форме:

> show interface * * brief
Interface        Status  VRF             Addresses
----------       ------  ---             ---------
en0:             up      default         192.168.122.184/24
lo:              up      default
tun0:            up      default         10.0.0.2/24

6.3. Конфигурирование интерфейсов

При выполнении команды commit (применении конфигурации-копии candidate как текущей конфигурации running) осуществляется проверка консистентности конфигурации. В случае проблем консистентности команда commit не выполняется и на экран выводится диагностическое сообщение.

Примечание

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

Для просмотра журнала модуля конфигурации применяется команда:

> show journal service config

Для просмотра ошибок модуля конфигурации применяется команда:

> show journal service config priority err

6.4. Интерфейс default

В схеме конфигурирования ПАК “Фортикс” определён специальный безымянный интерфейс default, который не соответствует никакому реальному или виртуальному интерфейсу. Данный интерфейс предназначен для определения настроек по умолчанию для всех интерфейсов: если какие-либо настройки некоторого интерфейса не заданы явно, используются настройки интерфейса default.

Настройка интерфейса default осуществляется на следующем уровне конфигурации:

[edit interface default]

На данном уровне конфигурации доступны следующие настройки:

  • ipv4 accept-local on|off – разрешить/запретить приём пакетов с адресом отправителя текущей системы;

  • ipv4 accept-redirects on|off – разрешить/запретить приём (обработку) ICMP-redirect сообщений;

  • ipv4 arp-filter on|off – разрешить/запретить ответ на ARP-запросы от других интерфейсов;

  • ipv4 proxy-arp on|off – включить/выключить механизм проксирования ARP-запросов;

  • ipv4 rp-filter loose|none|strict – использовать механизм проверки адреса источника, где loose – параметр, при указании которого адрес источника каждого входящего пакета проверяется на соответствие FIB, и, если адрес источника недоступен через какой-либо интерфейс, пакет отбрасывается, none – параметр, при указании которого проверка адреса источника не осуществляется, strict – параметр, при указании которого адрес источника каждого входящего пакета проверяется на соответствие FIB, и, если интерфейс не является наилучшим обратным путём, пакет отбрасывается (см. RFC 3704);

  • ipv4 send-redirects on|off – разрешить/запретить отправку ICMP-redirect сообщений IPv4;

  • ipv6 accept-redirects on|off – разрешить/запретить приём (обработку) redirect сообщений IPv6 ;

  • ipv6 hop-limit <hop-limit-value> – задать hop-limit для IPv6, где <hop-limit-value> – число от 0 до 255, по умолчанию – 64;

  • ipv6 ra – перейти на уровень конфигурации IPv6 RA (объявления маршрутизатора) клиента;

  • ipv6 mtu <mtu-value> – задать MTU для IPv6, где <mtu-value> – число от 0 до 65535, по умолчанию – 1280.

Все вышеуказанные настройки могут быть переопределены на каждом интерфейсе и/или заданы на интерфейсе default. При этом больший приоритет имеют явно заданные в конфигурации настройки интерфейса относительно настроек интерфейса default.

Пример применения команды для настройки интерфейса default:

# set interface default ipv4 rp-filter none

6.5. Интерфейсы типа bond

Настройка интерфейсов типа bond осуществляется на следующем уровне конфигурации:

[edit interface bond <bond-name>]

где <bond-name> – строка длиной от 1 до 15 символов.

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

  • slave <interface-name> – задать подчинённый интерфейс, где <interface-name> – имя существующего интерфейса, возможно определение нескольких настроек данного уровня конфигурации;

  • mode <mode-name> – задать режим работы, где <mode-name> принимает одно из значений active-backup, balance-alb, balance-rr, balance-tlb, balance-xor, broadcast, ieee-802.3ad.

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

  • monitor <monitor-name> – задать режим мониторинга состояния подчинённых интерфейсов, где <monitor-name> принимает одно из значений arp, mii;

  • primary <interface-name> – задать основной подчинённый интерфейс, где <interface-name> – имя существующего интерфейса;

  • primary-reselect <primary-reselect-name> – задать режим выбора основного подчинённого интерфейса, где <primary-reselect-name> принимает одно из значений always, better, failure;

  • xmit-hash-policy <xmit-hash-policy-name> – задать функцию распределения на подчинённые интерфейсы, где <xmit-hash-policy-name> принимает одно из значений encap2+3, encap3+4, layer2, layer2+3, layer3+4, vlan+srcmac;

  • all-slaves-active – использовать режим приёма с неактивных портов.

Пример применения команд для настройки интерфейса типа bond:

# edit interface bond bond0
[edit interface bond bond0]
# set slave en0
# set slave en1
# set mode balance-rr
# set enable
# commit
# top

6.6. Интерфейсы типа bridge

Настройка интерфейсов типа bridge осуществляется на следующем уровне конфигурации:

[edit interface bridge <bridge-name>]

где <bridge-name> – строка длиной от 1 до 15 символов.

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

  • port <interface-name> – задать порт интерфейса, объединяемого в мост, где <interface-name> – имя существующего интерфейса, возможно определение нескольких настроек данного уровня конфигурации, для каждой из которых указывается:

    • cost <cost-value> – “стоимость” порта, где <cost-value> – число от 1 до 65535;

    • prio <priority-value> – приоритет порта, где <priority-value> – число от 0 до 63.

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

  • stp – использовать STP;

  • ageing-time <ageing-time-value> – задать время жизни MAC-адресов в таблицах, где <ageing-time-value> – число секунд от 0.00 до 600.00, по умолчанию – 300;

  • forward-delay <forward-delay-value> – задать задержку перед переходом в новое состояние после изменения сетевой топологии, где <forward-delay-value> – число секунд от 0.00 до 60.00, по умолчанию – 15;

  • group-fwd lldp|lacp|stp – использовать пересылку LLDP/LACP/STP-кадров;

  • hello-time <hello-time-value> – задать интервал между рассылками сообщений Hello протокола STP, где <hello-time-value> – число секунд от 0.00 до 60.00, по умолчанию – 2;

  • max-age <max-age-value> – задать максимальное время жизни сообщений протокола STP, где <max-age-value> – число секунд от 0.00 до 120.00, по умолчанию – 20;

  • no-conntrack – отключить отслеживание соединений TCP/IP.

Пример применения команд для настройки интерфейса типа bridge:

# edit interface bridge br0
[edit interface bridge br0]
# set port en0
# set port en1
# set enable
# commit
# top

6.7. Интерфейсы типа dummy

Настройка интерфейсов типа dummy осуществляется на следующем уровне конфигурации:

[edit interface dummy <dummy-name>]

где <dummy-name> – строка длиной от 1 до 15 символов.

Интерфейсы типа dummy (интерфейсы-заглушки) не имеют специфичных обязательных настроек. В ПАК “Фортикс” возможно создание нескольких интерфейсов данного типа.

6.8. Интерфейсы типа fortun

Использование интерфейсов типа fortun (туннелей) в режиме шифрования описано в разделе 31 Средства криптографической защиты информации (СКЗИ). В настоящем подразделе описаны настройки для использования интерфейса данного типа без криптографической защиты.

Настройка интерфейсов типа fortun осуществляется на следующем уровне конфигурации:

[edit interface fortun <fortun-name>]

где <fortun-name> – строка длиной от 1 до 15 символов.

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

  • ipv4|ipv6 local <address> – задать локальный IP-адрес туннеля, где ipv4|ipv6 – уровень конфигурации IPv4/IPv6, <address> – IPv4-адрес в формате A.B.C.D или IPv6-адрес в формате A:B:...:H в зависимости от уровня конфигурации;

  • ipv4|ipv6 remote <address> – задать удалённый IP-адрес туннеля, где ipv4|ipv6 – уровень конфигурации IPv4/IPv6, <address> – IPv4-адрес в формате A.B.C.D или IPv6-адрес в формате A:B:...:H в зависимости от уровня конфигурации;

  • mode tun|tap – задать режим работы;

  • id <id-value> – задать идентификатор туннеля, где <id-value> – число от 0 до 65535.

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

  • ttl <ttl-value> – задать TTL, где <ttl-value> – число от 0 до 255;

  • tos <hex-value> – задать TOS, где <hex-value> – тип TOS;

  • keepalive – перейти на уровень конфигурации режима пинг-проб.

Пример применения команд для настройки интерфейса типа fortun для использования без криптографической защиты:

# edit interface fortun ft0
[edit interface fortun ft0]
# set mode tun
# set id 1
# set ipv4 local 192.168.0.1
# set ipv4 remote 192.168.0.2
# set ipv4 address 10.0.0.1/24
# set enable
# commit
# top

6.9. Интерфейсы типа gre

Настройка интерфейсов типа gre осуществляется на следующем уровне конфигурации:

[edit interface gre <gre-name>]

где <gre-name> – строка длиной от 1 до 15 символов.

Примечание

Имя интерфейса gre0 зарезервировано системой и не может быть использовано.

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

  • ipv4|ipv6 local <address> – задать локальный IP-адрес туннеля, где ipv4|ipv6 – уровень конфигурации IPv4/IPv6, <address> – IPv4-адрес в формате A.B.C.D или IPv6-адрес в формате A:B:...:H в зависимости от уровня конфигурации;

  • ipv4|ipv6 remote <address> – задать удалённый IP-адрес туннеля, где ipv4|ipv6 – уровень конфигурации IPv4/IPv6, <address> – IPv4-адрес в формате A.B.C.D или IPv6-адрес в формате A:B:...:H в зависимости от уровня конфигурации;

  • mode tun|tap – задать режим работы.

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

  • key <key-value> – задать ключ, где <key-value> – число от 0 до 4294967295;

  • seq – использовать номера пакетов;

  • csum – использовать контрольные суммы;

  • ttl <ttl-value> – задать TTL, где <ttl-value> – число от 0 до 255;

  • tos <hex-value> – задать TOS, где <hex-value> – тип TOS;

  • keepalive – использовать режим пинг-проб.

Пример применения команд для настройки интерфейса типа gre:

# edit interface gre gre1
[edit interface gre gre1]
# set mode tun
# set ipv4 local 192.168.0.1
# set ipv4 remote 192.168.0.2
# set ipv4 address 10.0.0.1/24
# set enable
# commit
# top

6.10. Интерфейсы типа ifb

Настройка интерфейсов типа ifb осуществляется на следующем уровне конфигурации:

[edit interface ifb <ifb-name>]

где <ifb-name> – строка длиной от 1 до 15 символов.

Интерфейсы типа ifb используются для применения дисциплин QoS (качества обслуживания) на входе. Интерфейсы данного типа не имеют специфичных обязательных настроек. Использование интерфейсов типа ifb подробно описано в разделе 8 Качество обслуживания (QoS).

6.11. Интерфейс типа loopback

Настройка интерфейсов типа loopback осуществляется на следующем уровне конфигурации:

[edit interface loopback lo]

В ПАК “Фортикс” допустимо создание только одного интерфейса типа loopback (с именем lo). Интерфейс данного типа имеет предустановленный адрес, даже если он не задан в конфигурации устройства, при этом возможно добавление других адресов.

При назначении интерфейсу данного типа IP-адреса с маской, отличной от /32, интерфейс будет отвечать на все адреса из указанной подсети. Например, если для интерфейса типа loopback задать IP-адрес 10.0.0.1/24, он будет отвечать на команду ping со всех адресов из диапазона с 10.0.0.1 по 10.0.0.254.

Примечание

Рекомендуется использовать интерфейс типа dummy вместо интерфейса типа loopback.

6.12. Интерфейсы типа vlan

Настройка интерфейсов типа vlan осуществляется на следующем уровне конфигурации:

[edit interface vlan <vlan-name>]

где <vlan-name> – строка длиной от 1 до 15 символов.

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

  • vlan-id <vlan-id-value> – задать идентификатор VLAN, где <vlan-id-value> – число от 1 до 4096;

  • master <master-name> – задать родительский интерфейс, на основе которого создаётся VLAN, где <master-name> – имя существующего интерфейса;

  • proto 802.1Q|802.1ad – задать протокол поддержки VLAN.

Пример применения команд для настройки интерфейса типа vlan:

# edit interface vlan vlan0
[edit interface vlan vlan0]
# set vlan-id 1
# set master en0
# set proto 802.1Q
# set enable
# commit
# top

6.13. Интерфейсы типа vxlan

Настройка интерфейсов типа vxlan осуществляется на следующем уровне конфигурации:

[edit interface vxlan <vxlan-name>]

где <vxlan-name> – строка длиной от 1 до 15 символов.

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

  • vxlan-id <vxlan-id-value> – задать идентификатор VxLAN, где <vxlan-id-value> – число от 0 до 16777215;

  • interface <interface-name> – задать связанный интерфейс, где <interface-name> – имя существующего интерфейса;

  • ipv4|ipv6 remote <address> – задать удалённый адрес туннеля или мультикаст-группу, где ipv4|ipv6 – уровень конфигурации IPv4/IPv6, <address> – IPv4-адрес в формате A.B.C.D или IPv6-адрес в формате A:B:...:H в зависимости от уровня конфигурации;

  • encap – перейти на уровень конфигурации параметров инкапсуляции;

  • ipv4|ipv6 local <address> – задать локальный адрес туннеля, где ipv4|ipv6 – уровень конфигурации IPv4/IPv6, <address> – IPv4-адрес в формате A.B.C.D или IPv6-адрес в формате A:B:...:H в зависимости от уровня конфигурации.

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

  • dont-fragment – использовать DF-бит;

  • ageing-time <ageing-time-value> – задать время жизни записей FDB, где <ageing-time-value> – число секунд от 0 до 600;

  • no-learning – не добавлять в FDB неизвестные адреса;

  • max-address <max-address-number> – задать максимальное число FDB, где <max-address-number> – число от 0 до 4294967295;

  • ttl <ttl-value> – задать TTL, где <ttl-value> – число от 0 до 255;

  • tos <hex-value> – задать TOS, где <hex-value> – тип TOS.

Пример применения команд для настройки интерфейса типа vxlan:

# edit interface vxlan vx1000
[edit interface vxlan vx1000]
# set ipv4 remote 225.0.0.1
# set interface en0
# set vxlan-id 1000
# set encap dport 4789
# set ipv4 local 192.168.1.1
# set enable
# commit
# top

6.14. Интерфейсы типа wg

Интерфейсы типа wg реализуют технологию WireGuard для создания зашифрованных каналов связи. При определении интерфейса данного типа включается настройка локального конца туннеля и одного или более удалённых (peers).

Настройка интерфейсов типа wg осуществляется на следующем уровне конфигурации:

[edit interface wg <wg-name>]

где <wg-name> – строка длиной от 1 до 15 символов.

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

  • key <private-key> – задать закрытый ключ соединения, где <private-key> – значение закрытого ключа/полное имя файла с закрытым ключом или имя файла относительно домашней директории пользователя;

  • port <port-number> – задать порт соединения, где <port-number> – число от 1 до 65535.

Настройка удалённого конца туннеля осуществляется на следующем уровне конфигурации:

[edit interface wg <wg-name> peer <peer-name>]

где

  • <wg-name> – строка длиной от 1 до 15 символов;

  • <peer-name> – имя удалённого конца туннеля.

На данном уровне конфигурации доступны следующие настройки:

  • pubkey <public-key> – задать открытый ключ соединения, где <public-key> – значение открытого ключа/полное имя файла с открытым ключом удалённого конца туннеля или имя файла относительно домашней директории пользователя;

  • allowed-ip <network> – задать подсеть, которой предназначается трафик, где <network> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:...:H[/mask];

  • endpoint addr <address> – задать IP-адрес, с которого ожидается подключение, где <address> – IPv4-адрес в формате A.B.C.D[/mask] или IPv6-адрес в формате A:B:...:H[/mask];

  • endpoint port <port-number> – задать порт, с которого ожидается подключение, где <port-number> – число от 1 до 65535;

  • psk <public-key> – задать дополнительный ключ шифрования для усиления защиты соединения, где <public-key> – значение ключа/полное имя файла с ключом или имя файла относительно домашней директории пользователя;

  • keepalive interval <interval-value> – задать интервал отправки пакетов для проверки активности канала, где <interval-value> – число секунд от 0 до 65535.

Пример конфигурации интерфейса типа wg:

wg wg1 {
  enable
  ipv4 addr 192.168.0.1/24
  peer user {
    allowed-ip 192.168.0.100
    pubkey de1/bde5Yrfv1rtQ3z5QjbaKqetcT+qa5VU+1zLs2qr=
  }
  key ../priv.key
  port 33225
}