Бесшовный Wi-Fi на основе MikroTik CAPsMAN и Hotspot с разделением сетей

Создание Wi-Fi при помощи Caps-Man и Hot Spot задача не новая, благо MikroTik позволяет делать всё это достаточно гибко и быстро. Всегда всё ограничивалось стандартным Hot Spot с гостями или без, но в этот раз, задача стояла несколько иначе, соответственно и подхода требовала иного.

Русскоязычный онлайн-курс по MikroTik от нашего коллеги Дмитрия Скромнова. Здесь можно изучить MikroTik и RouterOS самостоятельно по курсу «Настройка оборудования MikroTik». Курс основан на официальной программе MTCNA, но содержит больше информации. Это 162 видеоурока и большая практическая задача, разбитая на 45 лабораторных работ. Время на изучение неограниченно – все материалы передаются бессрочно и их можно пересматривать сколько нужно. Первые 25 уроков можно посмотреть бесплатно, оставив заявку на странице курса.

Задача

Нужно было организовать Hot Spot для «своих» и доступ по паролю для гостей, при этом в разных логических сетях. Маршрутизация между гостями и «местными» аборигенами должна отсутствовать как класс, все доступы со всех сторон должны быть наглухо закрыты. Использовать нужно было как 5 ГГц, так 2,4 ГГц, при чём для своих должны работать оба диапазона. Настраивать 5 ГГц для гостевого доступа я не стал.

Решение

В качестве точек были взяты wAP ac, а контроллером выступал развёрнутый в одном из наших кластеров CHR.

Info:
В качестве «железного» контроллера классно использовать CRS125-24G-1S-RM. На таком у нас крутилось порядка 500 лизов, а онлайна до сотни. Но у такого решения две проблемы — отсутствие PоE портов и 100 онлайна для него — это прям ввсссёёё…

Имея опыт построения предидущих решений, не имея CRS125 но при этом с кучей ресурсов в кластерах, решение было очевидно — CHR. При стоимости в 40 баксов за гигабитные интерфейсы — это прям панацея. Для телефонии у нас жили отдельные PоE коммутаторы, которые собственно и пошли в дело.

И так, что попало в руки:

  • wAP ac — 5 шт;
  • CHR P1 — 1 шт;
  • PоE коммутатор — 1 шт.

Рассмотрим схему построения сети.

Схема hotspot сети с использованием CHR
Схема hotspot сети с использованием CHR

Настройку коммутатора рассматривать не буду, там всё просто — получили 2 VLAN от CHR — отдали 2 VLAN в порт точки. Всё!
Так как для читателя — рецепт готов, то начать лучше с конфигурации самих точек доступа, а потом перейти к конфигурации контроллера, но для начала разберём адреса и сети:

172.16.0.0/24 (vlan100 ) - сеть управления [man.bgp.your.area];
172.20.0.0/24 (vlan200 ) - сеть доступа для «своих» [hotspot.wi.fi];
172.21.0.0/24 (public) - сеть доступа для «гостей» [public.wi.fi];
172.30.0.0/24 (vlan300) - сеть аплинка [bgp.your.area];

172.16.0.1 - адрес контроллера в сети управления [h.man.bgp.your.area];
172.16.0.251 - адрес первого вышестоящего маршрутизатора в сети управления [a.man.bgp.your.area];
172.16.0.252 - адрес второго вышестоящего маршрутизатора в сети управления [b.man.bgp.your.area];
172.16.0.254 - адрес VRRP интерфейса вышестоящих маршрутизаторов в сети управления [v.man.bgp.your.area];

172.30.0.10 - адрес контроллера в сети аплинка [h.bgp.your.area];
172.30.0.251 - адрес первого вышестоящего маршрутизатора в сети аплинка [a.bgp.your.area];
172.30.0.252 - адрес второго вышестоящего маршрутизатора в сети аплинка [b.bgp.your.area];
172.30.0.254 - адрес VRRP интерфейса вышестоящих маршрутизаторов в сети аплинка [v.bgp.your.area];

172.31.0.3 - адрес первого DNS сервера [a.dns.your.area];
172.31.0.4 - адрес второго DNS сервера [b.dns.your.area];
172.31.0.8 - адрес первого NTP сервера [a.ntp.your.area];
172.31.0.9 - адрес второго NTP сервера [b.ntp.your.area];

172.20.0.1 - адрес контроллера в сети для своих [hotspot.wi.fi];
172.21.0.1 - адрес контроллера в сети для гостей [public.wi.fi];

172.16.0.101-172.16.0.105 - адреса точек доступа в сети управления.

Info:
Естественно, в вашем конкретном случае IP сетей и сервисов скорее всего будут иными, поэтому все адреса и сети нужно будет изменить.

И так, рассмотрим конфигурацию точки доступа.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Устанавливаем уникальные для точек доступа переменные, остальная часть
# конфигурации стандартна для всех.

# Системное имя точки доступа.
:global sysID "spot1.hotspot.wi.fi"
# Адрес точки доступа в сети управления.
:global manIP "172.16.0.101/24"
 
 
# Основные настройки.
# Устанавливаем ID системы.
/system identity
set name=$sysID
 
# Конфигурация VLAN.
/interface vlan
add interface=ether1 name=vlan200 vlan-id=200
add interface=ether1 name=vlan100 vlan-id=100
 
# Конфигурация Bridge интерфейса. На этот интерфейс мы "приземляем" 
# беспроводные интерфейсы.
/interface bridge
add fast-forward=no name=bridge protocol-mode=none
 
# Добавляем на Bridge VLAN сети доступа для «своих» [hotspot.wi.fi].
/interface bridge port
add bridge=bridge interface=vlan200
 
# Устанавливаем IP адреса в сети доступа и сети управления.
/ip address
add address=$manIP comment="Management network" interface=vlan100
 
# Настройка CAP. Здесь мы устанавливаем на какой Bridge конфигурируются
# беспроводные интерфейсы, указываем IP и имя CAPs контроллера, выбираем
# беспроводные интерфейсы.
/interface wireless cap
set bridge=bridge caps-man-addresses=172.20.0.1 caps-man-names=hotspot.wi.fi discovery-interfaces=bridge enabled=yes interfaces=5GHz-WAN,2GHz-WAN
 
# Добавляем IP DNS сервера, которым для точек доступа является CAPs контроллер.
/ip dns
set allow-remote-requests=yes servers=172.20.0.1
 
# Важно настроить firewall для разграничения сетей и ограничения доступа
# клиентов к служебным сервисам.

# Для начала создаем адрес листы.
/ip firewall address-list
# Адрес контроллера в сети управления [h.man.bgp.your.area].
add address=172.16.0.1 list="Allowed" comment=hotspot.wi.fi Management network local
# Адрес первого вышестоящего маршрутизатора в сети управления
# [a.man.bgp.your.area].
add address=172.16.0.251 list="Allowed" comment=a.man.bgp.your.area
# Адрес второго вышестоящего маршрутизатора в сети управления
# [b.man.bgp.your.area].
add address=172.16.0.252 list="Allowed" comment=b.man.bgp.your.area
# Адрес VRRP интерфейса вышестоящих маршрутизаторов в сети управления
# [v.man.bgp.your.area].
add address=172.16.0.254 list="Allowed" comment=v.man.bgp.your.area
# Адрес первого NTP сервера [a.ntp.wi.fi].
add address=172.31.0.8 list="Allowed" comment=a.ntp.wi.fi
# Адрес второго NTP сервера [b.ntp.wi.fi].
add address=172.31.0.9 list="Allowed" comment=b.ntp.wi.fi
 
 
# Теперь добавляем правила фильтра.
/ip firewall filter
# Запрещаем любой трафик в сеть управления
add action=drop chain=input comment="Drop any to MAN except Allowed" dst-address=172.16.0.0/24 in-interface-list=all log=yes log-prefix=DROP_MAN src-address=0.0.0.0/0 src-address-list=!Allowed
 
# Добавляем маршрут для серверов NTP
/ip route
add check-gateway=ping distance=10 dst-address=172.31.0.0/27 gateway=172.16.0.1 scope=10
 
# Отключаем лишние сервисы, остальным устанавливаем только доступ из сети
# управления.
/ip service
set api disabled=yes
set www disabled=yes
set telnet disabled=yes
set api-ssl disabled=yes	
set ftp address=172.16.0.0/24
set ssh address=172.16.0.0/24
set winbox address=172.16.0.0/24
 
# Отключаем MAC сервер на беспроводных интерфейсах. 	
/tool mac-server
set [find default=yes] disabled=yes
/tool mac-server mac-winbox
add interface=ether1
add interface=vlan100
add disabled=yes interface=bridge
add disabled=yes interface=2GHz-WAN
add disabled=yes interface=5GHz-WAN
set [find default=yes] disabled=yes
 
# Устанавливаем часовой пояс.
/system clock
set time-zone-name=Europe/Moscow
# Устанавливаем NTP сервера.
/system ntp client
set enabled=yes primary-ntp=172.31.0.8 secondary-ntp=172.31.0.9
 
# Настраиваем логирование.
/system logging action
add disk-file-count=10 disk-file-name=log/auth disk-lines-per-file=4096 name=auth target=disk
add disk-file-count=10 disk-file-name=log/info disk-lines-per-file=4096 name=info target=disk
add disk-file-count=10 disk-file-name=log/error disk-lines-per-file=4096 name=error target=disk
add disk-file-count=10 disk-file-name=log/syslog disk-lines-per-file=4096 name=syslog target=disk
add disk-file-count=10 disk-file-name=log/warning disk-lines-per-file=4096 name=warning target=disk
add disk-file-count=10 disk-file-name=log/firewall disk-lines-per-file=4096 name=firewall target=disk
 
/system logging
set 0 action=info topics=info,!firewall,!account,!system
set 1 action=error
set 2 action=warning
add action=firewall topics=firewall
add action=auth topics=account
add action=syslog topics=system,!account

Теперь переходим к контроллеру.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# Основные настройки.
# Устанавливаем ID системы.
/system identity
set name=hotspot.wi.fi
 
# Конфигурация интерфейсов. Так как это CHR и работает он внутри кластера,
# для ВМ каждый VLAN представляет из себя отдельный интерфейс.
# В ином случае, скорее всего был бы один интерфейс и 3 VLAN.
/interface ethernet
# интерфейс сети управления[man.bgp.your.area].
set [ find default-name=ether1 ] loop-protect=on name=V100
# интерфейс сети доступа  для «своих» [hotspot.wi.fi].
set [ find default-name=ether2 ] loop-protect=on name=V200
# интерфейс сети аплинка [bgp.your.area].
set [ find default-name=ether3 ] loop-protect=on name=V300
 
# Конфигурация Bridge интерфейсов. На эти интерфейсы мы "приземляем"
# наши сети доступа.
/interface bridge
# сеть доступа для «своих» [hotspot.wi.fi].
add name=bridge-local
# сеть доступа для «гостей» [public.wi.fi].
add name=bridge-public
 
# Добавляем на Bridge интерфейс сети доступа для «своих» [hotspot.wi.fi].
/interface bridge port
add bridge=bridge-local interface=V200
 
# Устанавливаем IP адреса в сетях доступа, аплинка и управления.
/ip address
add address=172.30.0.10/24 comment="Uplink network" interface=V300 network=172.30.0.0
add address=172.16.0.1/24 comment="Management network" interface=V100 network=172.16.0.0
add address=172.20.0.1/24 comment="Hotspot network local" interface=bridge-local network=172.20.0.0
add address=172.21.0.1/24 comment="Hotspot network public" interface=bridge-public network=172.21.0.0
 
# Пулы адресов для сетей доступа.
/ip pool
add name=hotspot.wi.fi ranges=172.20.0.2-172.20.0.99
add name=public.wi.fi ranges=172.21.0.2-172.21.0.99
 
# Сервера DHCP для сетей доступа.
/ip dhcp-server
add add-arp=yes address-pool=hotspot.wi.fi disabled=no interface=bridge-local name=hotspot.wi.fi
add add-arp=yes address-pool=public.wi.fi disabled=no interface=bridge-public name=public.wi.fi
 
# Конфигурации серверов DHCP для сетей доступа.
/ip dhcp-server network
add address=172.20.0.0/24 comment=hotspot.wi.fi dns-server=172.20.0.1 domain=hotspot.wi.fi gateway=172.20.0.1 ntp-server=172.31.0.8,172.31.0.9
add address=172.21.0.0/24 comment=public.wi.fi dns-server=172.21.0.1 domain=public.wi.fi gateway=172.21.0.1 ntp-server=172.31.0.8,172.31.0.9
 
# Добавляем IP адреса наших DNS серверов.
/ip dns
set allow-remote-requests=yes servers=172.31.0.3,172.31.0.4
# Статические записи DNS (опционально).
/ip dns static
add address=172.20.0.1 name=hotspot.wi.fi ttl=5m
add address=172.21.0.1 name=public.wi.fi ttl=5m
add address=172.30.0.251 name=a.bgp.your.area ttl=5m
add address=172.30.0.252 name=b.bgp.your.area ttl=5m
add address=172.30.0.254 name=v.bgp.your.area ttl=5m
 
# Теперь переходим к конфигурации hotspot.
# Создаём профиль.
/ip hotspot profile
set [ find default=yes ] dns-name=hotspot.wi.fi hotspot-address=172.20.0.1 http-cookie-lifetime=1w name=hotspot.wi.fi
 
# Определяем пул и интерфейс hotspot.
/ip hotspot
add address-pool=hotspot.wi.fi disabled=no interface=bridge-local name=hotspot.wi.fi
 
# Конфигурация пользователя. Здесь выбираем созданный пул, указываем время
# жизни сессии (неделя), максимальное кол-во пользователей (100), время
# жизни cookie и имя конфигурации (local).
/ip hotspot user profile
set [ find default=yes ] address-pool=hotspot.wi.fi keepalive-timeout=1w mac-cookie-timeout=1d name=local shared-users=100
 
# Указываем имена и пароли пользователей hotspot.
/ip hotspot user
add name=user1 password=password1
add name=user2 password=password2
 
# Переходим к конфигурации firewall для активации NAT, разграничения сетей
# и ограничения доступа клиентов к служебным сервисам.
# Для начала создаем адрес листы.
/ip firewall address-list
# Адрес первого вышестоящего маршрутизатора в сети аплинка [a.bgp.your.area].
add address=172.30.0.251 list="Main GW"  comment=a.bgp.your.area
# Адрес второго вышестоящего маршрутизатора в сети аплинка [b.bgp.your.area].
add address=172.30.0.252 list="Main GW"  comment=b.bgp.your.area
# Адрес VRRP интерфейса вышестоящих маршрутизаторов в сети аплинка [v.bgp.your.area].
add address=172.30.0.254 list="Main GW"  comment=v.bgp.your.area
# Адрес первого вышестоящего маршрутизатора в сети аплинка [a.bgp.your.area].
add address=172.30.0.251 list="Services" comment=a.bgp.your.area
# Адрес второго вышестоящего маршрутизатора в сети аплинка [b.bgp.your.area].
add address=172.30.0.252 list="Services" comment=b.bgp.your.area
# Адрес VRRP интерфейса вышестоящих маршрутизаторов в сети аплинка [v.bgp.your.area].
add address=172.30.0.254 list="Services" comment=v.bgp.your.area
# Адрес первого DNS сервера [a.dns.your.area].
add address=172.31.0.3 list="Services" comment=a.dns.your.area
# Адрес второго DNS сервера [b.dns.your.area].
add address=172.31.0.4 list="Services" comment=b.dns.your.area
# Адрес первого NTP сервера [a.ntp.your.area].
add address=172.31.0.8 list="Services" comment=a.ntp.your.area
# Адрес второго NTP сервера [b.ntp.your.area].
add address=172.31.0.9 list="Services" comment=b.ntp.your.area
# Адрес первого вышестоящего маршрутизатора в сети управления [a.man.bgp.your.area].
add address=172.16.0.251  list="Allowed"  comment=a.man.bgp.your.area
# Адрес второго вышестоящего маршрутизатора в сети управления [b.man.bgp.your.area].
add address=172.16.0.252  list="Allowed"  comment=b.man.bgp.your.area
# Адрес VRRP интерфейса вышестоящих маршрутизаторов в сети управления [v.man.bgp.your.area].
add address=172.16.0.254  list="Allowed"  comment=v.man.bgp.your.area
# Адрес первой точки доступа в сети управления [spot1.hotspot.wi.fi].
add address=172.16.0.101  list="Allowed"  comment=spot1.hotspot.wi.fi
# Адрес второй точки доступа в сети управления [spot2.hotspot.wi.fi].
add address=172.16.0.102  list="Allowed"  comment=spot2.hotspot.wi.fi
# Адрес третьей точки доступа в сети управления [spot3.hotspot.wi.fi].
add address=172.16.0.103  list="Allowed"  comment=spot3.hotspot.wi.fi
# Адрес четвертой точки доступа в сети управления [spot4.hotspot.wi.fi].
add address=172.16.0.104  list="Allowed"  comment=spot4.hotspot.wi.fi
# Адрес пятой точки доступа в сети управления [spot5.hotspot.wi.fi].
add address=172.16.0.105  list="Allowed"  comment=spot5.hotspot.wi.fi
 
 
# Теперь добавляем правила фильтра.
/ip firewall filter
# Закрываем доступ к устройствам в сети аплинка.
add action=drop chain=forward comment="Hide uplink devices" dst-address=172.30.0.0/24 dst-address-list="!Main GW" log=yes log-prefix=DROP_Inner-Lan src-address=0.0.0.0/0
# Закрываем доступ к устройствам в сетях управления и доступа.
add action=drop chain=forward comment="Hide Allowed devices" dst-address-list=Allowed log=yes log-prefix=DROP_Allowed src-address=0.0.0.0/0 src-address-list=!Services
# Закрываем доступ из сети доступа для "своих" к устройствам в сети для "гостей".
add action=drop chain=input comment="Hide hotspot devices" dst-address=172.20.0.0/24 dst-address-list=!Allowed log=yes log-prefix=DROP_public src-address=172.21.0.0/24 src-address-list=!Allowed
# Закрываем доступ из сети доступа для "своих" к устройствам в сети для "гостей".
add action=drop chain=forward comment="Hide hotspot devices" dst-address=172.20.0.0/24 dst-address-list=!Allowed log=yes log-prefix=DROP_public src-address=172.21.0.0/24 src-address-list=!Allowed
# Закрываем доступ из сети доступа для "гостей" к устройствам в сети для "своих".
add action=drop chain=input comment="Hide hotspot devices" dst-address=172.21.0.0/24 dst-address-list=!Allowed log=yes log-prefix=DROP_public src-address=172.20.0.0/24 src-address-list=!Allowed
# Закрываем доступ из сети доступа для "гостей" к устройствам в сети для "своих".
add action=drop chain=forward comment="Hide hotspot devices" dst-address=172.21.0.0/24 dst-address-list=!Allowed log=yes log-prefix=DROP_public src-address=172.20.0.0/24 src-address-list=!Allowed
 
# Теперь настраиваем NAT.
/ip firewall nat
# Настраиваем NAT в сети для "своих".
add action=masquerade chain=srcnat comment="Main NAT local" out-interface=V300 src-address=172.20.0.0/25
# Настраиваем NAT в сети для "гостей".
add action=masquerade chain=srcnat comment="Main NAT guest" out-interface=V300 src-address=172.21.0.0/25
#  Настраиваем NAT в сети управления для сервисов.
add action=masquerade chain=srcnat comment="Allow all from V100 to Services" dst-address-list=Services out-interface=V300 src-address=172.16.0.0/24
 
 
# Маршрут по умолчанию на вышестоящий маршрутизатор.
/ip route
add check-gateway=ping distance=1 gateway=172.30.0.254
 
# Отключаем лишние сервисы, остальным устанавливаем только доступ из сети
# управления.
/ip service
set api disabled=yes
set www disabled=yes
set telnet disabled=yes
set api-ssl disabled=yes	
set ftp address=172.16.0.0/24
set ssh address=172.16.0.0/24
set winbox address=172.16.0.0/24
 
# Отключаем MAC сервер на лишних интерфейсах. 	
/tool mac-server
set [find default=yes] disabled=yes
/tool mac-server mac-winbox
add interface=V100
set [find default=yes] disabled=yes
 
 
# Переходим к настройке CAPsMAN.
# Добавляем все каналы Wi-Fi.
/caps-man channel
add band=2ghz-b/g/n frequency=2412 name=CH1
add band=2ghz-b/g/n frequency=2417 name=CH2
add band=2ghz-b/g/n frequency=2422 name=CH3
add band=2ghz-b/g/n frequency=2427 name=CH4
add band=2ghz-b/g/n frequency=2432 name=CH5
add band=2ghz-b/g/n frequency=2437 name=CH6
add band=2ghz-b/g/n frequency=2442 name=CH7
add band=2ghz-b/g/n frequency=2447 name=CH8
add band=2ghz-b/g/n frequency=2452 name=CH9
add band=2ghz-b/g/n frequency=2457 name=CH10
add band=2ghz-b/g/n frequency=2462 name=CH11
add band=2ghz-b/g/n frequency=2467 name=CH12
add band=2ghz-b/g/n frequency=2472 name=CH13
add band=5ghz-a/n/ac frequency=5180 name=CH36
add band=5ghz-a/n/ac frequency=5200 name=CH40
add band=5ghz-a/n/ac frequency=5220 name=CH44
add band=5ghz-a/n/ac frequency=5240 name=CH48
add band=5ghz-a/n/ac frequency=5260 name=CH52
add band=5ghz-a/n/ac frequency=5280 name=CH56
add band=5ghz-a/n/ac frequency=5300 name=CH60
add band=5ghz-a/n/ac frequency=5320 name=CH64
add band=5ghz-a/n/ac frequency=5500 name=CH100
add band=5ghz-a/n/ac frequency=5520 name=CH104
add band=5ghz-a/n/ac frequency=5540 name=CH108
add band=5ghz-a/n/ac frequency=5560 name=CH112
add band=5ghz-a/n/ac frequency=5580 name=CH116
add band=5ghz-a/n/ac frequency=5600 name=CH120
add band=5ghz-a/n/ac frequency=5620 name=CH124
add band=5ghz-a/n/ac frequency=5640 name=CH128
add band=5ghz-a/n/ac frequency=5660 name=CH132
add band=5ghz-a/n/ac frequency=5680 name=CH136
add band=5ghz-a/n/ac frequency=5700 name=CH140
add band=5ghz-a/n/ac frequency=5745 name=CH149
add band=5ghz-a/n/ac frequency=5765 name=CH153
add band=5ghz-a/n/ac frequency=5785 name=CH157
add band=5ghz-a/n/ac frequency=5805 name=CH161
add band=5ghz-a/n/ac frequency=5825 name=CH165
 
# Настраиваем пути (datapath) для каждой сети. Именно здесь мы разделяем
# сети для своих и гостей. Делается это путём присоединения к конкретному
# Bridge интерфейсу (bridge-public) и отключением локального форвардинга
# (local-forwarding=no). Как только мы отключаем локальный форвардинг,
# беспроводные интерфейсы на точках доступа которым назначен этот путь,
# перестают добавляться к локальному мосту на точке доступа, а добавляются
# к указанному в пути мосту на контроллере.
/caps-man datapath
# Путь 1. Этот путь мы используем для конфигурации 2G интерфейсов
# (сеть для своих).
add bridge=bridge-local local-forwarding=yes name=datapath1
# Путь 2. Этот путь мы используем для конфигурации 5G интерфейсов
# (сеть для своих).
add bridge=bridge-local local-forwarding=yes name=datapath2
# Путь 3. Этот путь мы используем для слейв конфигурации 2G интерфейсов
# (сеть для гостей).
# Важно указать VLAN в котором будет принят интерфейс от точки доступа
# (vlan-id=1), иначе ничего работать не будет
add bridge=bridge-public local-forwarding=no name=datapath3 vlan-id=1
 
# Создаём профиль безопасности, который будет использован для гостевой сети.
# Указываем тип аутентификации (wpa2-psk), шифрование (aes-ccm,tkip),
# имя правила (public) и пароль для доступа к сети (PublicNetwork@wi.fi)
/caps-man security
add authentication-types=wpa2-psk encryption=aes-ccm,tkip name=public passphrase=PublicNetwork@wi.fi
 
# Создаём конфигурации для каждого типа Wi-Fi интерфейсов.
/caps-man configuration
# Конфигурации 2G интерфейсов. Указываем канал (CH10), страну (russia),
# используемый путь (datapath1), режим работы (ap), имя конфигурации
# (2G-config), цепочки прием/передача (0,1,2) и SSID сети (hs2.wi.fi).
add channel=CH10 country=russia datapath=datapath1 mode=ap name=2G-config rx-chains=0,1,2 ssid=hs2.wi.fi tx-chains=0,1,2
# Конфигурации 5G интерфейсов. Указываем канал (CH36), страну (russia),
# используемый путь (datapath2), режим работы (ap), имя конфигурации
# (5G-config), цепочки прием/передача (0,1,2) и SSID сети (hs5.wi.fi).
add channel=CH36 country=russia datapath=datapath2 mode=ap name=5G-config rx-chains=0,1,2 ssid=hs5.wi.fi tx-chains=0,1,2
# Конфигурации 2G интерфейсов гостевой сети. Указываем канал (CH10),
# страну (russia), используемый путь (datapath3), режим работы (ap),
# имя конфигурации (2G-config-pub), цепочки прием/передача (0,1,2),
# профиль безопасности (public) и SSID сети (public.wi.fi).
add channel=CH10 country=russia datapath=datapath3 mode=ap name=2G-config-pub rx-chains=0,1,2 security=public ssid=public.wi.fi tx-chains=0,1,2
 
# Воизбежании возможных казусов связанных с разными версиями ПО оборудования,
# включаем менеджер. Указываем директорию где лежать актуальные версии ПО
# (/firmware/caps) и устанавливаем политику обновлений (require-same-version).
# При такой политике, контроллер должен обновлять точки доступа до
# используемой им версии ПО.
/caps-man manager
set enabled=yes package-path=/firmware/caps upgrade-policy=require-same-version
 
# Настройка провижинга точек доступа. Так как мы заранее не знаем какой
# пул MAC адресов будет использован, да и чтобы не плодить правила, будем
# искать точки по имени с использованием элементарного регулярного выражения
# (spot([0-9]+).hotspot.wi.fi). Теперь все точки доступа, системное имя
# которых соответствует этому выражнению (spot0.hotspot.wi.fi - 
# spot9.hotspot.wi.fi), будут управляться нашим контроллером в
# соответствии с профилем устройства.
/caps-man provisioning
# Создаём профиль провижинга, где разрешаем динамическое создание точки
# (create-dynamic-enabled), поддерживаемые стандарты для 2G устройств
# (b,gn), регулярное выражение обнаружения, мастер конфигурацию (2G-config),
# правило нейминга устройств (prefix-identity) и слейв конфигурацию
# (2G-config-pub). Слейв конфигурация создаёт на беспроводных интерфейсах
# точек доступа виртуальный интерфейс, который мы используем для
# гостевого доступа.
add action=create-dynamic-enabled hw-supported-modes=b,gn identity-regexp="spot([0-9]+).hotspot.wi.fi" master-configuration=2G-config name-format=prefix-identity slave-configurations=2G-config-pub
# Создаём профиль провижинга, где разрешаем динамическое создание точки
# (create-dynamic-enabled), поддерживаемые стандарты для 5G устройств (an,ac),
# регулярное выражение обнаружения, мастер конфигурацию (5G-config) и
# правило нейминга устройств (prefix-identity).
add action=create-dynamic-enabled hw-supported-modes=an,ac identity-regexp="spot([0-9]+).hotspot.wi.fi" master-configuration=5G-config name-format=prefix-identity
 
 
 
# Устанавливаем часовой пояс.
/system clock
set time-zone-name=Europe/Moscow
# Устанавливаем NTP сервера.
/system ntp client
set enabled=yes primary-ntp=172.31.0.8 secondary-ntp=172.31.0.9
 
# Настраиваем логирование.
/system logging action
add disk-file-count=10 disk-file-name=log/auth disk-lines-per-file=4096 name=auth target=disk
add disk-file-count=10 disk-file-name=log/info disk-lines-per-file=4096 name=info target=disk
add disk-file-count=10 disk-file-name=log/error disk-lines-per-file=4096 name=error target=disk
add disk-file-count=10 disk-file-name=log/syslog disk-lines-per-file=4096 name=syslog target=disk
add disk-file-count=10 disk-file-name=log/warning disk-lines-per-file=4096 name=warning target=disk
add disk-file-count=10 disk-file-name=log/firewall disk-lines-per-file=4096 name=firewall target=disk
 
/system logging
set 0 action=info topics=info,!firewall,!account,!system
set 1 action=error
set 2 action=warning
add action=firewall topics=firewall
add action=auth topics=account
add action=syslog topics=system,!account

Вот такая конфигурация у нас получилась. О настройке страницы авторизации Hotspot изложено в статье MikroTik Hotspot страница авторизации, CSS и HTML файлы.

Для удобного доступа к гостевой сети я отискал сайтик, который из SSID и пароля генерирует QR-code, отсканировав который при помощи камеры смартфона, можно выполнить подключение к сети. Эти QR мы распечатали и расклеили по территории.

Wi-Fi QR-code
Wi-Fi QR-code

UPD: Для тех, у кого hotspot не переадресовывает на страницу авторизации да и вообще даже после мануальной терапии работает всё из рук вон плохо, спешу сообщить, что в MikroTik Router OS v 6.41 + hotspot не работает переадресация на страницу авторизации в том случае, когда в профиле сервера hotspot установлено имя DNS. Не понятно в чём причина, но даже страница авторизации hotspot не открывается автоматически. Лечится банальным отключением.

1
/ip hotspot profile set [find default=yes] dns-name=""

Научиться строить профессиональные Wi-Fi сети на базе MikroTik можно из русскоязычного онлайн-курса для самостоятельного изучения от Дмитрия Скромнова. Данный курс по MikroTik и RouterOS основан на официальной программе MTCNA, однако содержит намного больше полезной информации. 162 видеоурока и большая практическая задача, разбитая на 45 лабораторных работ. Время на изучение неограниченно – все материалы передаются бессрочно и их можно пересматривать сколько нужно. Первые 25 уроков можно посмотреть бесплатно, оставив заявку на странице курса.

Бесшовный Wi-Fi на основе MikroTik CAPsMAN и Hotspot с разделением сетей
Метки:                                                         

4 мыслей о “Бесшовный Wi-Fi на основе MikroTik CAPsMAN и Hotspot с разделением сетей

  • 23.09.2018 в 00:10
    Permalink

    Добрый день, научился создавать хотспот и роуминг. Никак не пойму как привязать хостпот к роумингу. МБ неправильно прокидываю порты в бридж меню. А есть скрипт для обычного микротика (RB 951UI-2nd) чтоб хотспот и роуминг вместе работали?

    Ответить
    • 23.09.2018 в 20:28
      Permalink

      Не совсем понятен вопрос конечно… Всегда существует две сущности — это контроллер и точка доступа (несколько точек доступа). Контроллер выполняет функции hotspot и CAPsMAN. Обьеденять обе сущности в одно устройство можно, к тому же если устройство достаточно мощное.
      Когда точек много, то все они используют один контроллер (hotspot и CAPsMAN). Создавать на каждой точке их не нужно.
      Представленный скрипт может отработать некорректно только в двух случаях, когда устройство уже имеет конфигурацию или имеет старую версию ПО. Перед выполнением скрипта стоит сделать две вещи — сбросить устройство и проверить нейминг портов. Они должны иметь имена ether1, ether2 и тд.

      Ответить
  • 30.04.2019 в 14:53
    Permalink

    И где же там собственно бесшовный роуминг? Капсман много чего делает, все это в статье расписано детально, но вот роуминга handover там нет.

    Ответить
    • 06.05.2019 в 21:49
      Permalink

      Здравствуйте! А где было написано что здесь реализован 802.11r/802.11k или речь в статье идёт о Zero-Handoff? Стандарты 802.11a/b/g/n/ac, вообще не предусматривают возможности сообщить клиенту о ближайших AP и уровне их загрузки. В случае с MikroTik этот функционал реализован иначе, да, с небольшими «прорехами» в обслуживании при переходе от точки к точке, но тем не менее, сеть клиента «ведёт» и у вас нет необходимости переключать точки руками на клиенте при переходе из одного помещения в другое.

      Ответить

Добавить комментарий для Вячеслав Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.