/etc/config/network: как настроить сеть в OpenWrt через конфигурационный файл

Команда cat /etc/config/network на роутере с OpenWrt возвращает пустой файл или непонятную структуру — значит, конфигурация сети либо была повреждена, либо устройство работает на минимальных дефолтных настройках после прошивки. Файл /etc/config/network — это центральный узел всей сетевой подсистемы OpenWrt: именно здесь описываются интерфейсы, мосты, VLAN, статические маршруты и параметры переключателя (switch). Ошибка в одном блоке config interface способна полностью отрезать роутер от сети, включая доступ по SSH.

Этот материал разбирает структуру файла, синтаксис UCI, типовые секции и безопасный порядок правки, чтобы изменения не привели к потере связи с устройством. Информация актуальна для современных версий OpenWrt, где сетевой стек построен на netifd, а управление ведётся через подсистему UCI (Unified Configuration Interface).

Что такое /etc/config/network и зачем он нужен

Файл /etc/config/network хранится в текстовом виде и читается демоном netifd при загрузке системы и при выполнении команды /etc/init.d/network restart. В отличие от классических дистрибутивов Linux, где сеть настраивается через /etc/network/interfaces или Netplan, OpenWrt использует единый формат UCI для всех подсистем — сети, беспроводных интерфейсов, фаервола и DHCP.

Ключевая особенность: веб-интерфейс LuCI при сохранении настроек сети правит именно этот файл. Поэтому ручное редактирование и работа через графический интерфейс полностью эквивалентны — они изменяют одни и те же данные. Это позволяет свободно комбинировать оба подхода.

Типичные задачи, которые решаются правкой этого файла:

  • 🌐 назначение статического IP-адреса на WAN или LAN вместо DHCP;
  • 🔀 создание моста (bridge) между Ethernet-портами и Wi-Fi;
  • 🏷️ настройка VLAN для разделения трафика провайдера (например, IPTV и интернет);
  • 🛣️ добавление статических маршрутов до удалённых подсетей;
  • 🔌 поднятие PPPoE-соединения с логином и паролем провайдера.

Синтаксис UCI: как устроен файл

Файл состоит из секций. Каждая секция начинается с ключевого слова config, за которым следует тип секции и, опционально, её имя. Внутри секции располагаются параметры двух видов: option для одиночных значений и list для списков. Комментарии начинаются с символа #.

config interface 'lan'

option device 'br-lan'

option proto 'static'

option ipaddr '192.168.1.1'

option netmask '255.255.255.0'

list dns '192.168.1.1'

Здесь секция типа interface с именем lan описывает локальный интерфейс: он привязан к устройству br-lan, использует статический протокол и адрес 192.168.1.1 с маской /24. Имена секций в одинарных кавычках обязательны, если вы хотите ссылаться на них из других конфигов — например, фаервол OpenWrt привязывает зоны именно к именам интерфейсов из этого файла.

Безымянные секции тоже допустимы — например, config route или config switch_vlan часто пишутся без имени. Для работы с ними из командной строки используются позиционные индексы.

Чем отличаются option и list

Option задаёт одиночный параметр и перезаписывает предыдущее значение при повторе. List добавляет элемент в список: несколько строк list dns создадут список из нескольких DNS-серверов. Порядок list-строк сохраняется и влияет на приоритет.

Основные секции файла

Структура конкретного файла зависит от аппаратной платформы роутера: на устройствах со встроенным коммутатором будут секции switch, на платформах с DSA — секции device и bridge-vlan. Ниже — типовой набор, который встречается чаще всего.

Тип секцииНазначениеКлючевые параметры
interfaceЛогический сетевой интерфейс (lan, wan, wan6)proto, device, ipaddr, netmask, gateway
deviceФизическое или виртуальное устройство, включая мостыname, type, ports, macaddr
switch / switch_vlanНастройка встроенного коммутатора (старые платформы)device, vlan, ports, vid
routeСтатический IPv4-маршрутinterface, target, netmask, gateway
globalsГлобальные параметры, например префикс ULA для IPv6ula_prefix, packet_steering

Параметр proto в секции interface определяет способ получения адреса. Наиболее употребимые значения: static (ручная настройка), dhcp (клиент DHCP), pppoe (туннель провайдера), none (интерфейс без адреса, например для моста). Набор доступных протоколов зависит от установленных пакетов — PPPoE требует соответствующего модуля, который в типовых сборках присутствует.

⚠️ Внимание: при смене proto с static на dhcp или наоборот старые параметры (ipaddr, netmask) в файле могут остаться. Лишние опции обычно игнорируются, но для чистоты конфигурации их лучше удалить — это упрощает диагностику при сбоях.

Типовые примеры конфигурации

Ниже — несколько рабочих шаблонов, которые можно адаптировать под свою сеть. Перед применением сверьте имена физических портов (eth0, eth1, wan, lan1 и т.п.) с выводом команды ip link — они различаются между моделями роутеров.

Мост для локальной сети с объединением портов:

config device

option name 'br-lan'

option type 'bridge'

list ports 'lan1'

list ports 'lan2'

config interface 'lan'

option device 'br-lan'

option proto 'static'

option ipaddr '192.168.1.1'

option netmask '255.255.255.0'

option ip6assign '60'

WAN-интерфейс через PPPoE, если провайдер выдаёт доступ по логину и паролю:

config interface 'wan'

option device 'wan'

option proto 'pppoe'

option username 'ваш_логин'

option password 'ваш_пароль'

option ipv6 'auto'

Статический маршрут до удалённой подсети через шлюз в локальной сети:

config route

option interface 'lan'

option target '10.10.0.0'

option netmask '255.255.0.0'

option gateway '192.168.1.254'

Безопасное редактирование и применение изменений

Править файл можно встроенным редактором vi (он есть в базовой системе OpenWrt) или через утилиту uci, которая изменяет конфигурацию программно. Второй способ предпочтительнее для автоматизации и снижает риск синтаксических ошибок. Пример установки статического адреса через UCI:

uci set network.lan.ipaddr='192.168.2.1'

uci commit network

/etc/init.d/network restart

Команда uci commit записывает изменения на постоянное хранилище, а перезапуск сервиса network применяет их. Обратите внимание: до выполнения commit изменения, сделанные через uci set, хранятся во временной области и откатываются командой uci revert network. Это встроенный механизм страховки.

☑️ Безопасная правка /etc/config/network

Выполнено: 0 / 5
⚠️ Внимание: при редактировании по SSH есть риск потерять соединение после /etc/init.d/network restart, если новая конфигурация содержит ошибку. В OpenWrt предусмотрен механизм failsafe mode: при проблемах с загрузкой роутер можно запустить в аварийном режиме с адресом 192.168.1.1 и откатить правки. Порядок входа в failsafe зависит от модели и версии загрузчика — сверьтесь с официальной документацией OpenWrt для вашего устройства.

Ещё один защитный приём — команда luci-reload не относится сюда, а вот связка uci commit с последующей проверкой через logread позволяет увидеть ошибки netifd до того, как вы потеряете доступ. Сообщения о неудачном поднятии интерфейса видны в системном журнале.

📊 Как вы чаще настраиваете сеть в OpenWrt?
Только через веб-интерфейс LuCI
Правлю /etc/config/network вручную
Использую команды uci в терминале
Комбинирую все способы

Типичные ошибки и их диагностика

Самая частая проблема — интерфейс не поднимается после правок. Проверка начинается с команды ifstatus lan (или имя нужного интерфейса): она показывает состояние, полученные адреса и причину сбоя, если netifd её зафиксировал. Поле up: false вместе с текстом ошибки сужает поиск до конкретной секции.

Другой распространённый сценарий — конфликт привязки устройства. Если в секции interface указано device, которого не существует (опечатка в имени порта или мост не создан), интерфейс останется неактивным без явной ошибки в файле. Сверьте имена с выводом ip link и bridge link.

  • 🧩 опечатка в имени секции — фаервол или DHCP «не видят» интерфейс, потому что ссылаются на другое имя;
  • 🔁 дублирование option вместо list — второй DNS-сервер перезаписывает первый;
  • 🚧 отсутствие секции device для моста — br-lan не создаётся, и LAN остаётся без адреса;
  • 📡 неверный proto для провайдера — PPPoE-логин в секции с proto 'dhcp' работать не будет.

Если файл повреждён настолько, что восстановить его вручную сложно, можно сгенерировать базовую конфигурацию заново командой /bin/config_generate — она создаёт дефолтный вариант под текущую платформу. Предварительно сохраните старый файл, чтобы перенести из него нестандартные настройки.

Резервное копирование и перенос конфигурации

Файл /etc/config/network входит в стандартный список сохраняемых файлов OpenWrt, поэтому он автоматически попадает в архив резервной копии, создаваемый через LuCI или командой sysupgrade -b. При обновлении прошивки с сохранением настроек файл также переживает перезапись системы.

Однако переносить файл один-в-один между разными моделями роутеров нельзя: имена портов и структура коммутатора привязаны к конкретному железу. Конфигурация секций switch и device с одного роутера почти наверняка не заработает на другом — переносите только логические секции interface с ручной корректировкой привязок к портам.

Для ручного бэкапа достаточно скопировать файл по SCP или в локальный каталог:

cp /etc/config/network /root/network.backup

или с компьютера:

scp root@192.168.1.1:/etc/config/network ./network.backup

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

Чем отличается /etc/config/network от /etc/network/interfaces?

Файл /etc/network/interfaces используется в Debian-подобных системах и читается ifupdown. В OpenWrt этот механизм не применяется — сетью управляет netifd, который читает только /etc/config/network в формате UCI.

Можно ли редактировать файл, пока работает LuCI?

Да, но с оговоркой: если в LuCI открыта страница сетевых настроек и вы нажмёте «Сохранить», веб-интерфейс перезапишет файл своей версией и затрёт ручные правки. Сначала применяйте изменения в одном месте, потом переходите к другому.

Как откатить изменения, если роутер перестал отвечать?

Если доступ по SSH ещё есть — выполните cp /root/network.bak /etc/config/network и перезапустите сеть. При полной потере связи используйте failsafe mode: роутер загрузится с минимальной конфигурацией и адресом 192.168.1.1, после чего файл можно исправить. Порядок входа в failsafe зависит от модели.

Что означает параметр ip6assign в секции lan?

Он задаёт размер IPv6-префикса, который делегируется на этот интерфейс из полученного от провайдера пула. Значение 60 означает выделение префикса /60. Если IPv6 от провайдера не используется, параметр можно опустить.

Как добавить второй IP-адрес на один интерфейс?

Стандартный способ — создать alias-секцию: config interface 'lan2' с тем же device, proto 'static' и другим адресом. Либо добавить дополнительный адрес через ip addr add для временных задач — такая настройка не переживёт перезапуск сети.