Настройка сети в OpenWRT
В этой статье я расскажу о том как настроить сеть в OpenWRT. В частности расскажу о том как сделать несколько SSID на одной радиокарте, настроить WPA2-Enterprise, поднять VLAN и как настроить программный свитча(swconfig).
UCI
Все настройки будем проводить через консоль так как она не ограничена в возможностях в отличии от веб интерфейса. Для настроек системы в OpenWRT используется подсистема UCI(Unified Configuration Interface), которая позволяет централизовано настраивать всевозможные сервисы начиная с сервиса монтирования файловых систем и заканчивая сервисом QoS. Все настройки UCI находятся в директории «/etc/config/» и имеют одинаковый синтаксис. Для управления системой UCI используется программа uci. С помощью неё можно редактировать конфигурационные файлы, просматривать текущие настройки и прочее. uci очень удобно использовать для конфигурирования системы из скриптов. Так-же есть возможность писать расширения для uci. Синтаксис конфигурационных файлов такой:
config 'example' 'test' option 'string' 'some value' option 'boolean' '1' list 'collection' 'first item' list 'collection' 'second item'
config ‘example’ ‘test’ — начало секции, example — тип по которому uci поймет как трактовать опции в этой секции, test — идентификатор секции. option или list определяет тип настроек, list — составные настройки(например список интерфейс для прослушивания apache’ем). string, boolean, collection — названия переменных.
Настройка сетевых интерфейсов
config interface lan option ifname eth1 option proto static option ipaddr 192.168.0.10 option netmask 255.255.255.0 option gateway 192.168.0.1 option dns 192.168.0.1
Где lan это роль данного интерфейса. Нужна она для того что-бы можно было абстрагироваться от названия интерфейсов. Например можно в фаерволе указать что разрешить весь входящий трафик c lan.
Пример добавления статического маршрута:
config route option interface lan option target 10.1.1.1 option netmask 255.255.255.255 option gateway 192.168.0.100
config interface guest option ifname "eth1.123" option type bridge option proto static option netmask 255.255.255.0 option ipaddr 192.168.2.2
Создаст интерфейс «br-guest» и включит в него интерфейс eth1.123(123 vlan-id на интерфейсе eth1). Ниже будет пример как добавить в этот бридж беспроводной интерфейс.
Так как чипсеты используемые в роутерах обычно имеют 1-2 ethernet порта, а хочется побольше, то используется отдельных контроллер для ethernet. Он подключается одним портом в главный чипсет, а остальными наружу. Непосредственно в сетевой системе такой программный коммутатор никак не представлен. Коммутатор можно настроить через утилиту swconfig, либо через uci. Предположим у нас есть один ethernet порт eth0 подключенный к 5-му порту управляемого коммутатора:
config 'switch' 'eth0' option 'enable' '1' option 'enable_vlan' '1' option 'reset' '1' config 'switch_vlan' option 'vlan' '0' option 'device' 'eth0' option 'ports' '0 1 2 5t' config 'switch_vlan' option 'vlan' '1' option 'device' 'eth0' option 'ports' '3 5t' config 'switch_vlan' option 'vlan' '124' option 'device' 'eth0' option 'ports' '6t 5t'
Здесь eth0 — название интерфейса куда подключен коммутатор. В первой секции включаем коммутатор и включаем поддержку теггированного(трафика с вланом) трафика. Каждая секция switch_vlan отвечает за определенный VLAN указанный в опции vlan. Этот тег будет использоваться для добавления метки для портов указанных в секции ports. Буква t у порта обозначает что трафик в этот порт должен быть передан теггированным(с меткой), в остальные перечисленные порты он попадет без метки. Запись ‘0 1 2 5t’ нужно читать так: передай нетегированный трафик с портов 0, 1, 2 в порт 5 с меткой 0. Так как VLAN с меткой 0 это тоже самое что трафик без метки, то на нашем порту eth0 мы получим трафик с портов 0, 1, 2 без всяких вланов. В следующей секции написано: ports=’3 5t’, vlan=1. Это значит что нетегированный трафик с порта 3 придет на eth0 с vlan-id=1(не рекомендую использовать vlan-id=1). В последней секции написано vlan=124, port=«6t 5t» — это значит что трафик пришедший на порт6 с тегом 124 придет на eth0 с тегом 124.
В network можно настроить подключения типа PPTP, PPPoE и даже 6to4.
Настройка wi-fi:
Конфигурационный файл находиться тут — /etc/config/wireless.
Настройка радио интерфейсов разделена на две части: настройки уровня phy(физика) и настройка интерфейса. Минимальные настройки выглядят так:
config 'wifi-device' 'radio0' option 'type' 'mac80211' option 'channel' '6' config 'wifi-iface' option 'device' 'radio0' option 'network' 'guest' option 'mode' 'ap' option 'ssid' 'guest' option 'encryption' 'none'
В первой секции мы указали что тип чипсета/драйвера — mac80211(определяется при загрузке), используемый канал — 6. Так-же можно указать используемые стандарты, мощность передатчика, используемые антенны и прочее. Во второй секции уже описываем сам интерфейс. Интерфейсов может быть несколько, например с разными SSID. В опции device необходимо указать идентификатор секции с описание устройства, в данном случае radio0. network=guest значит что нужно прикрепить это устройство к интерфейсу guest использующемся в network. Так как у нас(смотри выше) в описание сети написано что interface=guest это бридж, то этот беспроводной интерфейс добавить в бридж br-guest.
Пример настройки multi-ssid с шифрованием wpa2-enterprise+ccmp:
config 'wifi-iface' option 'device' 'radio1' option 'network' 'wlan' option 'mode' 'ap' option 'ssid' 'super' option 'encryption' 'wpa2' option 'server' '192.168.0.11' option 'port' '1812' option 'key' 'secret' config 'wifi-iface' option 'device' 'radio1' option 'network' 'wlan' option 'mode' 'ap' option 'ssid' 'puper' option 'encryption' 'wpa2' option 'server' '192.168.0.11' option 'port' '1812' option 'key' 'secret'
OpenWRT создаст два интерфейса с разными ssid(super и puper) и будет их авторизовывать через RADIUS-сервер 192.168.0.11. key — это ключ RADIUS’а. Обычно можно поднимать до 4 SSID, зависит от радиокарты. Отмечу так-же что OpenWRT для каждого wifi устройства автоматически создает устройства типа monitor, с помощью которых можно ловить заголовки уровня 802.11.
Ссылки по теме:
wiki.openwrt.org/doc/uci
wiki.openwrt.org/doc/uci/network
wiki.openwrt.org/doc/uci/wireless
wiki.openwrt.org/doc/uci/network/switch
Коммутатор (Switch)
: Эта страница предполагает что вы знаете “что это ? ” и “зачем это надо?”.
Если ваше устройство имеет более чем 1 LAN порт, это значит что существует специальное подключение между различными портами, называемое коммутатором. Скорее всего, схема внутренних портов будет такая (на примере ASUS WL-500g):
Если вы хотите изменить настройки подключения портов, нужно настроить коммутатор вашего роутера(читаем network.interfaces)
Настройка UCI, swconfig
Предположим
5-ти портовый коммутатор с подключенными внешними портами 0-3, 4 не подключен, и 5 подключен к ЦПУ в eth1 интерфейс (в итоге 6-ть портов, где 4-ый не считается )
Настройка
Коммутатор
config 'switch' 'eth1' option 'enable' '1' option 'enable_vlan' '1' option 'reset' '1'
VLAN: настройка коммутатора
Заметки
Здесь eth1 — название интерфейса куда подключен коммутатор. В первой секции включаем коммутатор и включаем поддержку теггированного(трафика с вланом) трафика. Каждая секция switch_vlan отвечает за определенный VLAN указанный в опции vlan. Этот тег будет использоваться для добавления метки для портов указанных в секции ports. Буква t у порта обозначает что трафик в этот порт должен быть передан теггированным(с меткой), в остальные перечисленные порты он попадет без метки. Запись ‘0 1 2 5t’ нужно читать так: передай нетегированный трафик с портов 0, 1, 2 в порт 5 с меткой 0. Так как VLAN с меткой 0 это тоже самое что трафик без метки, то на нашем порту eth0 мы получим трафик с портов 0, 1, 2 без всяких вланов. В следующей секции написано: ports=’3 5t’, vlan=1. Это значит что нетегированный трафик с порта 3 придет на eth0 с vlan-id=1(не рекомендую использовать vlan-id=1).
В документе, который описывает стандарт 801.2q, говорится, что значения VID 0 и 4095 не могут использоваться для теггированного трафика, так как эти значения зарезервированы: VID 0 ‘родной’ vlan по умолчанию — оставляя диапазон из 4094 доступных значений, хотя VID 1 обычно зарезервирован для управления сетью (например, как у Dell 2708). Это означает, что vlan0 можно использовать как VLAN внутри или между устройствами, но им нельзя тегировать пакеты.
The config sections
config 'switch_vlan' option 'vlan' '0' option 'device' 'eth1' option 'ports' '0 1 2 5t' config 'switch_vlan' option 'vlan' '1' option 'device' 'eth1' option 'ports' '3 5t' config 'switch_port' option 'port' '3' option 'pvid' '1'
VLAN: interface/network config
Разделы интерфейса VLAN выглядят как обычные разделы интерфейсов, кроме того что вместо eth1 (или eth0 , или как угодно ещё), указано eth1.0 , eth1.1 , и так далее, где цифра после . является номером VLAN . (это верно для ядра версии 2.6; в ядре 2.4 сделано по-другому).
Следующий пример описывает двух-интерфейсный роутер, где eth0 отведён под WAN и eth1 работает как пяти портовый свитч, сконфигурированный, как указано выше. Это находится в /etc/config/network
config 'interface' 'lan' option 'ifname' 'eth1.0' option 'proto' 'static' option 'ipaddr' '192.168.1.1' option 'netmask' '255.255.255.0' option 'defaultroute' '0' option 'peerdns' '0' option 'nat' '1' config 'interface' 'extranet' option 'ifname' 'eth1.1' option 'proto' 'dhcp' config 'interface' 'wan' option 'ifname' 'eth0.2' option 'proto' 'pppoe' option 'username' 'szabozsolt-em' option 'password' 'M3IuWBt4'
Конечно же, если у вас на eth0 лишь свитч на пять портов (и никаких других интерфейсов), вы можете сделать интерфейс wan в eth0.1 и lan eth0.0 соответственно совпадающей с switch , switch_vlan и switch_port разделами.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website. OK More information about cookies
Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.
Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International