Короткий ответ

Гостевая сеть — отдельный L2 (пример: 10.0.40.0/24), SSID только туда, client isolation на AP, на шлюзе drop guest→10.0.10.0/24, 10.0.30.0/24, 10.0.99.0/24. Интернет (DNS/HTTP/HTTPS) — да. Корпоративный DC, SMB, RDP, mgmt — нет. Не сажайте guest в 10.0.10.0/24 с «паролем на SSID». Не выключайте firewall, чтобы «гости печатали».

WAN 203.0.113.10 к гостям отношения не имеет: дыра внутренняя.

Симптомы и как отличить

С телефона на Guest: ping 10.0.10.10, открывается внутренний портал, RDP. DHCP выдаёт 10.0.10.0/24 и шлюз офиса. На MikroTik один WLAN в том же bridge, что ether LAN. На AP нет isolation / «Guest network» флажка.

Тест с guestДолжноСейчас плохо
ping 10.0.10.10failsuccess
https://example.comsuccess
ping другого гостяfail (isolation)success
WinBox 10.0.10.1failsuccess

Отличие от «нет сегментации серверов»: там сотрудники видят серверы. Здесь недоверенные устройства видят корпоратив.

Возможные причины

  1. SSID на том же VLAN/bridge, что LAN.
  2. Нет AP isolation: гости ходят L2 друг к другу и к проводным, если мост общий.
  3. На шлюзе accept guest→LAN «для принтера».
  4. CAPsMAN forwarding в локальный bridge LAN.
  5. Клиент после captive portal попадает в корпоративный пул.
  6. IPv6 RA с корпоративного сегмента на том же эфире.

Диагностика

1. Адрес, который получил гость

На телефоне/ноутбуке: IP, маска, gw, DNS. Если 10.0.10.x — это LAN, не guest.

2. RouterOS / CAPsMAN

/interface wireless print
/caps-man security print
/caps-man datapath print
/interface bridge port print
/ip address print
/ip firewall filter print where src-address=10.0.40.0/24

datapath local forwarding в bridge LAN — гости в L2 с ПК. Нужен отдельный VLAN или отдельный bridge.

3. Ubuntu + отдельная AP

AP должна тегировать VLAN guest на trunk. На шлюзе:

ip -br addr | grep -E '40|guest|vlan'
sudo nft list ruleset

Нет SVI guest — AP, скорее всего, бриджует в LAN.

4. Client isolation

На точке: опция isolation / «Block intra-BSS». Проверка: два телефона на Guest, ping друг друга. Success без isolation — гости могут атаковать чужие сессии (особенно без клиентского FW).

tcpdump на корпоративном SVI при заходе гостя: ARP/DHCP корпоративного пула.

Не сканируйте чужие телефоны посетителей портсканом. Тестируйте только свои стендовые устройства.

Решение

Целевая сеть guest: 10.0.40.0/24 (пример). DNS: публичный резолвер или внутренний только рекурсия без зоны AD; лучше отдельный unbound без записей DC.

Сценарий A. RouterOS 7, гостевой WLAN

Отдельный datapath/VLAN, адрес 10.0.40.1/24, DHCP только этот пул.

/ip firewall filter add chain=forward connection-state=established,related action=accept place-before=0
/ip firewall filter add chain=forward src-address=10.0.40.0/24 dst-address=10.0.10.0/24 action=drop comment="guest not to LAN"
/ip firewall filter add chain=forward src-address=10.0.40.0/24 dst-address=10.0.30.0/24 action=drop
/ip firewall filter add chain=forward src-address=10.0.40.0/24 dst-address=10.0.99.0/24 action=drop
/ip firewall filter add chain=forward src-address=10.0.40.0/24 dst-address=10.0.40.1 action=accept comment="DHCP/DNS gw"
/ip firewall filter add chain=forward src-address=10.0.40.0/24 out-interface-list=WAN protocol=udp dst-port=53 action=accept
/ip firewall filter add chain=forward src-address=10.0.40.0/24 out-interface-list=WAN protocol=tcp dst-port=80,443 action=accept
/ip firewall filter add chain=forward src-address=10.0.40.0/24 out-interface-list=WAN action=drop comment="guest egress tight"

Wireless: isolation / forwarding=no между клиентами (в CAPsMAN datapath client-to-client forwarding выкл).

Сценарий B. nftables

sudo cp /etc/nftables.conf /root/nftables.conf.bak.guest
# iif guest0 ip daddr { 10.0.10.0/24, 10.0.30.0/24, 10.0.99.0/24 } counter drop
# iif guest0 oif wan tcp dport { 80, 443 } accept
# iif guest0 oif wan udp dport 53 accept
sudo nft -c -f /etc/nftables.conf

Default drop прочего egress гостей (SMTP 25, VPN-обход, 445).

Сценарий C. Нужен принтер гостям

Не открывайте всю LAN. Выделенный print-VLAN или один IP МФУ с allow tcp 9100 на этот хост, плюс изоляция. Лучше гостевой портал «скинь на email». Любой allow guest→LAN фиксируйте в матрице с владельцем.

Сценарий D. Проводной «гостевой» порт в переговорке

Тот же VLAN 40, не untagged LAN. 802.1X ещё лучше. Порт «просто access LAN» в переговорке = тот же инцидент.

Концепция pfSense/OPNsense: optional Guest interface, rules: allow WAN 80/443/53, deny RFC1918. Не enable «allow private networks» на guest.

Связка: сегментация офиса, серверный VLAN.

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

Со своего тестового телефона на Guest (не сканируйте устройства посетителей):

  1. IP из 10.0.40.0/24.
  2. Сайт в интернете открывается.
  3. ping 10.0.10.10 fail, Test-NetConnection 10.0.10.10 -Port 445 fail.
  4. ping 10.0.99.1 fail.
  5. Второй тестовый клиент на Guest не пингуется (isolation).
  6. С LAN сотрудники работают как раньше.

На шлюзе counters drop guest→LAN растут при ваших тестах.

Если не помогло

  • Гость получил IPv6 из корпоративного RA — режьте ip6, отключите RA на guest или отдельный prefix без маршрута в LAN.
  • DNS отдаёт внутренние A-записи — split DNS с guest-резолвера убрать.
  • Local forwarding на одной AP обошёл VLAN.
  • «Корпоративный» SSID с тем же паролем, что Guest, путаница.
  • VPN на телефоне гостя в LAN — это уже учётные данные, не Wi‑Fi; отзыв.

Профилактика

  • Два SSID минимум: corp (802.1X) и guest (PSK/портал) на разных VLAN.
  • Регламент: принтер для гостей не в DC VLAN.
  • Квартальный тест с телефона из ящика IT.
  • Client isolation по умолчанию.
  • Captive portal не в AD-зоне.

FAQ

Можно ли гостей пустить в интернет через тот же NAT, что LAN?

Да, NAT на WAN 203.0.113.10 общий бывает. Фильтр forward разный. Не путайте NAT с доступом в LAN.

Нужен ли отдельный белый IP гостям?

Обычно нет. Отдельный VLAN важнее.

Client isolation ломает Chromecast в переговорке

Для corp VLAN isolation часто выкл. Для guest — вкл. Не смешивайте медиа-гостей с guest-интернетом посетителей.

Открыть RDP «только одной ВМ» гостям

Плохая идея. Демо-стенд в DMZ 10.0.30.0/24 с точечным allow, не DC.

Wi‑Fi printer в guest

Тогда сотрудники с corp не увидят его без маршрута. Держите печать в corp или отдельном print-VLAN, гостей туда не пускайте без заявки.