Гостьовий Wi-Fi через CLI

Ця сторінка надає скрипт, що створює окрему гостьову мережу та нову зону брандмауера для неї на вашому пристрої OpenWrt.
Іншими словами — створюється гостьова Wi-Fi мережа, яка має доступ до Інтернету, але не може отримати доступ до вашої локальної мережі (LAN).

  • Перед початком уважно прочитайте всю цю сторінку. Сформуйте хоча б загальне уявлення про те, що саме налаштовує код нижче.
  • Створіть гостьову WLAN як додаткову конфігурацію на радіо 2,4 ГГц або 5 ГГц, зазвичай це буде @wifi-iface[0] або @wifi-iface[1]. Нова гостьова мережа буде працювати на тій самій частоті, що й наявні WLAN.
  • Скопіюйте увесь блок коду нижче в SSH-консоль вашого пристрою OpenWrt і натисніть Enter. Або ж створіть shell-скрипт і виконайте його на вашому пристрої OpenWrt.
# 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="$(fw4 -q network ${NET_IF})"
 
# Set up guest WLAN
uci -q batch << EOI
delete network.${NET_ID}_dev
set network.${NET_ID}_dev=device
set network.${NET_ID}_dev.type=bridge
set network.${NET_ID}_dev.name=br-${NET_ID}
delete network.${NET_ID}
set network.${NET_ID}=interface
set network.${NET_ID}.proto=static
set network.${NET_ID}.device=br-${NET_ID}
set network.${NET_ID}.ipaddr=192.168.3.1/24
commit network
delete wireless.${NET_ID}
set wireless.${NET_ID}=wifi-iface
set wireless.${NET_ID}.device=${WIFI_DEV}
set wireless.${NET_ID}.mode=ap
set wireless.${NET_ID}.network=${NET_ID}
set wireless.${NET_ID}.ssid=${NET_ID}
set wireless.${NET_ID}.encryption=none
commit wireless
delete dhcp.${NET_ID}
set dhcp.${NET_ID}=dhcp
set dhcp.${NET_ID}.interface=${NET_ID}
set dhcp.${NET_ID}.start=100
set dhcp.${NET_ID}.limit=150
set dhcp.${NET_ID}.leasetime=1h
commit dhcp
delete firewall.${NET_ID}
set firewall.${NET_ID}=zone
set firewall.${NET_ID}.name=${NET_ID}
set firewall.${NET_ID}.network=${NET_ID}
set firewall.${NET_ID}.input=REJECT
set firewall.${NET_ID}.output=ACCEPT
set firewall.${NET_ID}.forward=REJECT
delete firewall.${NET_ID}_${FW_WAN}
set firewall.${NET_ID}_${FW_WAN}=forwarding
set firewall.${NET_ID}_${FW_WAN}.src=${NET_ID}
set firewall.${NET_ID}_${FW_WAN}.dest=${FW_WAN}
delete firewall.${NET_ID}_dns
set firewall.${NET_ID}_dns=rule
set firewall.${NET_ID}_dns.name=Allow-DNS-${NET_ID}
set firewall.${NET_ID}_dns.src=${NET_ID}
set firewall.${NET_ID}_dns.dest_port=53
add_list firewall.${NET_ID}_dns.proto=tcp
add_list firewall.${NET_ID}_dns.proto=udp
set firewall.${NET_ID}_dns.target=ACCEPT
delete firewall.${NET_ID}_dhcp
set firewall.${NET_ID}_dhcp=rule
set firewall.${NET_ID}_dhcp.name=Allow-DHCP-${NET_ID}
set firewall.${NET_ID}_dhcp.src=${NET_ID}
set firewall.${NET_ID}_dhcp.dest_port=67
set firewall.${NET_ID}_dhcp.proto=udp
set firewall.${NET_ID}_dhcp.family=ipv4
set firewall.${NET_ID}_dhcp.target=ACCEPT
commit firewall
EOI
service network reload
service dnsmasq restart
service firewall restart

Усі зміни будуть видимі у веб-інтерфейсі після застосування:

  • створюється гостьова мережа з іменем “guest”
  • створюється DHCP-конфігурація для гостьової мережі (припускається, що 192.168.3.1/24 не конфліктує з іншими мережами у вашій мережі)
  • створюється зона брандмауера з назвою “guest” для цієї мережі
  • створюється правило переспрямування трафіку з гостьової зони до зони “wan” (але не навпаки)
  • створюється правило брандмауера для доступу гостьової мережі до DHCP-сервісу OpenWrt
  • створюється правило брандмауера для доступу гостьової мережі до DNS-сервісу OpenWrt

Можливості для персоналізації майже безмежні:

  • Зверніть увагу, що за замовчуванням не застосовуються спеціальні обмеження доступу до Інтернету для гостей. Якщо хочете дозволити тільки HTTP(S) або заблокувати UDP — доведеться вручну додати відповідні правила брандмауера.
  • Також ви можете налаштувати винятки, якщо гості повинні мати доступ до вашого принтера чи стрімінгу з телефона на телевізор. На жаль, універсального шаблону для всіх випадків не існує.
  • За бажанням можна навіть виділити один LAN-порт на маршрутизаторі через VLAN і прив’язати його до гостьової мережі, якщо гості хочуть користуватися дротовим підключенням.

Якщо ви колись захочете видалити зміни, створені цим скриптом, зробіть наступне у веб-інтерфейсі OpenWrt:

  • Видаліть гостьовий інтерфейс у вкладці «Інтерфейси»
  • Видаліть гостьову зону брандмауера у вкладці «Брандмауер»
  • Усі правила брандмауера будуть автоматично видалені разом із зоною
  • Конфігурація DHCP також буде автоматично видалена разом з інтерфейсом
  • Потім натисніть «Зберегти та застосувати»

Можливо, гості не знаходяться у вашому домі постійно.
Вам не потрібно повністю видаляти конфігурацію після їхнього відходу.
Просто відкрийте веб-інтерфейс OpenWrt та увімкніть або вимкніть гостьову Wi-Fi мережу в будь-який момент.

  • Last modified: 2025/06/06 14:38
  • by vazaz