.. _ifacegl: Сетевые интерфейсы ================== В ПАК “Фортикс” поддерживаются следующие типы сетевых интерфейсов: - ``ether`` – интерфейс Ethernet; - ``bond`` – интерфейс, объединяющий интерфейсы в один логический; - ``bridge`` – интерфейс-сетевой мост; - ``dummy`` – интерфейс-“заглушка”; - ``fortun`` – туннельный криптографический интерфейс fortun; - ``gre`` – туннельный интерфейс gre; - ``ifb`` – интерфейс для выполнения QoS; - ``loopback`` – интерфейс “петля”; - ``vlan`` – интерфейс 802.1Q; - ``vxlan`` – туннельный интерфейс VxLAN; - ``wg`` – туннельный интерфейс WireGuard. Общая настройка --------------- Для определения интерфейса в конфигурации необходимо указать его уникальное имя (строка длиной от 1 до 15 символов), которое выбирается произвольно (исключение: интерфейсы типа ``ether``, ``loopback``), и тип. Для интерфейсов типа ``ether`` предусмотрено автоматическое присвоение имени в формате ``en``, где ```` – число, соответствующее номеру порта маршрутизатора ПАК “Фортикс”. В заводской конфигурации ПАК “Фортикс” настроен один интерфейс ``en0`` типа ``ether`` и один интерфейс типа ``loopback``: :: interface { ether en0 { enable ipv4 address 192.168.0.1/24 } loopback lo enable } Для изменения IP-адреса интерфейса применяются следующие команды: :: # del interface ipv4|ipv6 address # set interface ipv4|ipv6 address
# commit |noindent| где - ```` – тип интерфейса; - ```` – имя интерфейса; - ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6; - ``
`` – 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 ipv4|ipv6 # set interface ipv4|ipv6 dhcp # commit |noindent| где - ```` – тип интерфейса; - ```` – имя интерфейса; - ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6. Пример применения команд для настройки получения IP-адреса интерфейса ``en0`` типа ``ether`` по протоколу DHCP: :: # del interface ether en0 ipv4 # set interface ether en0 ipv4 dhcp # commit Настройка интерфейсов осуществляется на следующем уровне конфигурации: :: [edit interface ] |noindent| где - ```` – тип интерфейса; - ```` – имя интерфейса. На данном уровне конфигурации доступны следующие основные настройки интерфейсов (общие для всех типов): - ``description `` – задать текстовое описание интерфейса, где\ ```` – строка; - ``enable`` – перевести интерфейс в состояние UP (сделать доступным); - ``egress`` – перейти на уровень конфигурации выходной дисциплины; - ``ingress`` – перейти на уровень конфигурации входной дисциплины; - ``ipv4`` – перейти на уровень конфигурации IPv4; - ``ipv6`` – перейти на уровень конфигурации IPv6; - ``mac-addr `` – задать MAC-адрес, где ```` – MAC-адрес в формате ``xx:xx:xx:xx:xx:xx``; - ``mtu `` – задать размер MTU, где ```` – число от 1 до 65535; - ``no-arp`` – отключить ARP; - ``no-link-detect`` – отключить детектирование несущей для управления маршрутами; - ``no-multicast`` – отключить мультикаст; - ``promisc`` – использовать режим promisc; - ``rps`` – использовать принудительное распределение по ядрам процессора на приёме. Просмотр состояния интерфейсов ------------------------------ Для просмотра текущего состояния интерфейса и его статистики применяется команда: :: > show interface |noindent| где - ```` – тип интерфейса; - ```` – имя интерфейса. В качестве типа и имени возможно использование символа ``*``, при указании которого подразумеваются все типы или все имена соответственно, например: - ``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 Конфигурирование интерфейсов ---------------------------- При выполнении команды ``commit`` (применении конфигурации-копии *candidate* как текущей конфигурации *running*) осуществляется проверка консистентности конфигурации. В случае проблем консистентности команда ``commit`` не выполняется и на экран выводится диагностическое сообщение. .. note:: Конфигурирование интерфейсов, в общем случае, осуществляется не в момент выполнения команды ``commit``, а в фоновом режиме. Например, при настройке интерфейса ``bond`` указываются подчинённые интерфейсы, которые на момент выполнения команды ``commit`` могут быть не полностью настроены. В этом случае модуль конфигурации ожидает выполнения всех необходимых условий для применения желаемой конфигурации и только после этого выполняет настройку интерфейса ``bond``. Для просмотра журнала модуля конфигурации применяется команда: :: > show journal service config Для просмотра ошибок модуля конфигурации применяется команда: :: > show journal service config priority err Интерфейс 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 для IPv6, где ```` – число от 0 до 255, по умолчанию – 64; - ``ipv6 ra`` – перейти на уровень конфигурации IPv6 RA (объявления маршрутизатора) клиента; - ``ipv6 mtu `` – задать MTU для IPv6, где ```` – число от 0 до 65535, по умолчанию – 1280. Все вышеуказанные настройки могут быть переопределены на каждом интерфейсе и/или заданы на интерфейсе ``default``. При этом больший приоритет имеют явно заданные в конфигурации настройки интерфейса относительно настроек интерфейса ``default``. Пример применения команды для настройки интерфейса ``default``: :: # set interface default ipv4 rp-filter none Интерфейсы типа bond -------------------- Настройка интерфейсов типа ``bond`` осуществляется на следующем уровне конфигурации: :: [edit interface bond ] |noindent| где ```` – строка длиной от 1 до 15 символов. На данном уровне конфигурации доступны следующие обязательные настройки: - ``slave `` – задать подчинённый интерфейс, где ```` – имя существующего интерфейса, возможно определение нескольких настроек данного уровня конфигурации; - ``mode `` – задать режим работы, где ```` принимает одно из значений ``active-backup``, ``balance-alb``, ``balance-rr``, ``balance-tlb``, ``balance-xor``, ``broadcast``, ``ieee-802.3ad``. На данном уровне конфигурации доступны следующие необязательные настройки: - ``monitor `` – задать режим мониторинга состояния подчинённых интерфейсов, где ```` принимает одно из значений ``arp``, ``mii``; - ``primary `` – задать основной подчинённый интерфейс, где ```` – имя существующего интерфейса; - ``primary-reselect `` – задать режим выбора основного подчинённого интерфейса, где ```` принимает одно из значений ``always``, ``better``, ``failure``; - ``xmit-hash-policy `` – задать функцию распределения на подчинённые интерфейсы, где ```` принимает одно из значений ``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 Интерфейсы типа bridge ---------------------- Настройка интерфейсов типа ``bridge`` осуществляется на следующем уровне конфигурации: :: [edit interface bridge ] |noindent| где ```` – строка длиной от 1 до 15 символов. На данном уровне конфигурации доступны следующие обязательные настройки: - ``port `` – задать порт интерфейса, объединяемого в мост, где ```` – имя существующего интерфейса, возможно определение нескольких настроек данного уровня конфигурации, для каждой из которых указывается: - ``cost `` – “стоимость” порта, где ```` – число от 1 до 65535; - ``prio `` – приоритет порта, где ```` – число от 0 до 63. На данном уровне конфигурации доступны следующие необязательные настройки: - ``stp`` – использовать STP; - ``ageing-time `` – задать время жизни MAC-адресов в таблицах, где ```` – число секунд от 0.00 до 600.00, по умолчанию – 300; - ``forward-delay `` – задать задержку перед переходом в новое состояние после изменения сетевой топологии, где ```` – число секунд от 0.00 до 60.00, по умолчанию – 15; - ``group-fwd lldp|lacp|stp`` – использовать пересылку LLDP/LACP/STP-кадров; - ``hello-time `` – задать интервал между рассылками сообщений Hello протокола STP, где ```` – число секунд от 0.00 до 60.00, по умолчанию – 2; - ``max-age `` – задать максимальное время жизни сообщений протокола STP, где ```` – число секунд от 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 Интерфейсы типа dummy --------------------- Настройка интерфейсов типа ``dummy`` осуществляется на следующем уровне конфигурации: :: [edit interface dummy ] |noindent| где ```` – строка длиной от 1 до 15 символов. Интерфейсы типа ``dummy`` (интерфейсы-заглушки) не имеют специфичных обязательных настроек. В ПАК “Фортикс” возможно создание нескольких интерфейсов данного типа. Интерфейсы типа fortun ---------------------- Использование интерфейсов типа ``fortun`` (туннелей) в режиме шифрования описано в разделе :numref:`{number} {name} `. В настоящем подразделе описаны настройки для использования интерфейса данного типа без криптографической защиты. Настройка интерфейсов типа ``fortun`` осуществляется на следующем уровне конфигурации: :: [edit interface fortun ] |noindent| где ```` – строка длиной от 1 до 15 символов. На данном уровне конфигурации доступны следующие обязательные настройки: - ``ipv4|ipv6 local
`` – задать локальный IP-адрес туннеля, где ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6, ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации; - ``ipv4|ipv6 remote
`` – задать удалённый IP-адрес туннеля, где ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6, ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации; - ``mode tun|tap`` – задать режим работы; - ``id `` – задать идентификатор туннеля, где ```` – число от 0 до 65535. На данном уровне конфигурации доступны следующие необязательные настройки: - ``ttl `` – задать TTL, где ```` – число от 0 до 255; - ``tos `` – задать TOS, где ```` – тип 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 Интерфейсы типа gre ------------------- Настройка интерфейсов типа ``gre`` осуществляется на следующем уровне конфигурации: :: [edit interface gre ] |noindent| где ```` – строка длиной от 1 до 15 символов. .. note:: Имя интерфейса ``gre0`` зарезервировано системой и не может быть использовано. На данном уровне конфигурации доступны следующие обязательные настройки: - ``ipv4|ipv6 local
`` – задать локальный IP-адрес туннеля, где ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6, ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации; - ``ipv4|ipv6 remote
`` – задать удалённый IP-адрес туннеля, где ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6, ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации; - ``mode tun|tap`` – задать режим работы. На данном уровне конфигурации доступны следующие необязательные настройки: - ``key `` – задать ключ, где ```` – число от 0 до 4294967295; - ``seq`` – использовать номера пакетов; - ``csum`` – использовать контрольные суммы; - ``ttl `` – задать TTL, где ```` – число от 0 до 255; - ``tos `` – задать TOS, где ```` – тип 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 Интерфейсы типа ifb ------------------- Настройка интерфейсов типа ``ifb`` осуществляется на следующем уровне конфигурации: :: [edit interface ifb ] |noindent| где ```` – строка длиной от 1 до 15 символов. Интерфейсы типа ``ifb`` используются для применения дисциплин QoS (качества обслуживания) на входе. Интерфейсы данного типа не имеют специфичных обязательных настроек. Использование интерфейсов типа ``ifb`` подробно описано в разделе :numref:`{number} {name} `. Интерфейс типа 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. .. note:: Рекомендуется использовать интерфейс типа ``dummy`` вместо интерфейса типа ``loopback``. Интерфейсы типа vlan -------------------- Настройка интерфейсов типа ``vlan`` осуществляется на следующем уровне конфигурации: :: [edit interface vlan ] |noindent| где ```` – строка длиной от 1 до 15 символов. На данном уровне конфигурации доступны следующие обязательные настройки: - ``vlan-id `` – задать идентификатор VLAN, где ```` – число от 1 до 4096; - ``master `` – задать родительский интерфейс, на основе которого создаётся VLAN, где ```` – имя существующего интерфейса; - ``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 Интерфейсы типа vxlan --------------------- Настройка интерфейсов типа ``vxlan`` осуществляется на следующем уровне конфигурации: :: [edit interface vxlan ] |noindent| где ```` – строка длиной от 1 до 15 символов. На данном уровне конфигурации доступны следующие обязательные настройки: - ``vxlan-id `` – задать идентификатор VxLAN, где ```` – число от 0 до 16777215; - ``interface `` – задать связанный интерфейс, где ```` – имя существующего интерфейса; - ``ipv4|ipv6 remote
`` – задать удалённый адрес туннеля или мультикаст-группу, где ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6, ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации; - ``encap`` – перейти на уровень конфигурации параметров инкапсуляции; - ``ipv4|ipv6 local
`` – задать локальный адрес туннеля, где ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6, ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации. На данном уровне конфигурации доступны следующие необязательные настройки: - ``dont-fragment`` – использовать DF-бит; - ``ageing-time `` – задать время жизни записей FDB, где ```` – число секунд от 0 до 600; - ``no-learning`` – не добавлять в FDB неизвестные адреса; - ``max-address `` – задать максимальное число FDB, где ```` – число от 0 до 4294967295; - ``ttl `` – задать TTL, где ```` – число от 0 до 255; - ``tos `` – задать TOS, где ```` – тип 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 Интерфейсы типа wg ------------------ Интерфейсы типа ``wg`` реализуют технологию WireGuard для создания зашифрованных каналов связи. При определении интерфейса данного типа включается настройка локального конца туннеля и одного или более удалённых (peers). Настройка интерфейсов типа ``wg`` осуществляется на следующем уровне конфигурации: :: [edit interface wg ] |noindent| где ```` – строка длиной от 1 до 15 символов. На данном уровне конфигурации доступны следующие обязательные настройки: - ``key `` – задать закрытый ключ соединения, где ```` – значение закрытого ключа/полное имя файла с закрытым ключом или имя файла относительно домашней директории пользователя; - ``port `` – задать порт соединения, где ```` – число от 1 до 65535. Настройка удалённого конца туннеля осуществляется на следующем уровне конфигурации: :: [edit interface wg peer ] |noindent| где - ```` – строка длиной от 1 до 15 символов; - ```` – имя удалённого конца туннеля. На данном уровне конфигурации доступны следующие настройки: - ``pubkey `` – задать открытый ключ соединения, где ```` – значение открытого ключа/полное имя файла с открытым ключом удалённого конца туннеля или имя файла относительно домашней директории пользователя; - ``allowed-ip `` – задать подсеть, которой предназначается трафик, где ```` – IPv4-адрес в формате ``A.B.C.D[/mask]`` или IPv6-адрес в формате ``A:B:...:H[/mask]``; - ``endpoint addr
`` – задать IP-адрес, с которого ожидается подключение, где ``
`` – IPv4-адрес в формате ``A.B.C.D[/mask]`` или IPv6-адрес в формате ``A:B:...:H[/mask]``; - ``endpoint port `` – задать порт, с которого ожидается подключение, где ```` – число от 1 до 65535; - ``psk `` – задать дополнительный ключ шифрования для усиления защиты соединения, где ```` – значение ключа/полное имя файла с ключом или имя файла относительно домашней директории пользователя; - ``keepalive interval `` – задать интервал отправки пакетов для проверки активности канала, где ```` – число секунд от 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 }