Guest Wi-Fi using CLI
This page provides a script that creates an additional separated guest network and a new guest firewall zone for your OpenWrt device. That is, to create a guest WLAN , that only has Internet access but cannot access your existing LAN .
Step by step
Take your time, to read this whole page, before starting any configuration. Get at least a rough idea, of what below’s code is configuring.
Create the guest WLAN as additional config on either your 2,4 or 5 GHz radio which should typically match @wifi-iface[0] or @wifi-iface[1] . The new guest networks will share the channel/frequency with your probably already existing WLANs.
Copy the whole following code block as is into a SSH command prompt of your OpenWrt device and press enter. Alternatively, create and run it as shell script on your OpenWrt device.
# Configuration parameters NET_ID="guest" WIFI_DEV="$(uci -q get wireless.@wifi-iface[0].device)" # Fetch upstream zone . /lib/functions/network.sh network_flush_cache network_find_wan NET_IF FW_WAN="$(fw3 -q network "$")" # Set up guest WLAN uci -q batch _dev set network.$_dev=device set network.$_dev.type=bridge set network.$_dev.name=br-$ delete network.$ set network.$=interface set network.$.proto=static set network.$.device=br-$ set network.$.ipaddr=192.168.3.1 set network.$.netmask=255.255.255.0 commit network delete wireless.$ set wireless.$=wifi-iface set wireless.$.device=$ set wireless.$.mode=ap set wireless.$.network=$ set wireless.$.ssid=$ set wireless.$.encryption=none commit wireless delete dhcp.$ set dhcp.$=dhcp set dhcp.$.interface=$ set dhcp.$.start=100 set dhcp.$.limit=150 set dhcp.$.leasetime=1h set dhcp.$.netmask=255.255.255.0 commit dhcp delete firewall.$ set firewall.$=zone set firewall.$.name=$ set firewall.$.network=$ set firewall.$.input=REJECT set firewall.$.output=ACCEPT set firewall.$.forward=REJECT delete firewall.$_$ set firewall.$_$=forwarding set firewall.$_$.src=$ set firewall.$_$.dest=$ delete firewall.$_dns set firewall.$_dns=rule set firewall.$_dns.name=Allow-DNS-$ set firewall.$_dns.src=$ set firewall.$_dns.dest_port=53 add_list firewall.$_dns.proto=tcp add_list firewall.$_dns.proto=udp set firewall.$_dns.target=ACCEPT delete firewall.$_dhcp set firewall.$_dhcp=rule set firewall.$_dhcp.name=Allow-DHCP-$ set firewall.$_dhcp.src=$ set firewall.$_dhcp.dest_port=67 set firewall.$_dhcp.proto=udp set firewall.$_dhcp.family=ipv4 set firewall.$_dhcp.target=ACCEPT commit firewall EOF /etc/init.d/network reload /etc/init.d/dnsmasq restart /etc/init.d/firewall restart
Explanation of this config code
All the changes will be visible in the web interface afterwards.
a dhcp configuration is created for the “guest” network (assuming that 192.168.3.1/24 is not conflicting with something else on your home network)
Customization
There are endless of personal customization options.
Be aware that there are no special Internet firewall restrictions active for your guests in this default config. If you want to restrict your weird guests to http(s) protocol or block UDP or do whatever fancy restriction, you have to add some additional customized firewall rules yourself.
Also you may have to find individual rules/network setups for your personal situations, e.g. if your guests would like access to your printer or need to stream stuff from their smartphones to your Smart-TV. Unfortunately there is not a single one-fits-all solution for that.
You could go even further and split of a LAN -jack using a custom VLAN configuration and link that split-of LAN jack to that guest net as well, if your guests prefer a wired connection.
Manual rollback
If you ever want to get rid of the customization created by this script, simply open your OpenWrt web interface.
On demand usage
You may not have guests hanging out in your house all week long. You do not have to delete the whole config, when your guests are leaving. You can just enter the OpenWrt web interface and simply enable or disable the guest WLAN at will.
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
Настройка сети в 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