Osobna Sieć WiFi dla gości na routerze Mikrotik

Bardzo często zdarza się, że chcemy dać naszym gościom dostęp do WiFi, ale niekoniecznie chcemy im podawać nasze główne hasło, lub dostęp do naszych pozostałych urządzeń.

Rozwiązaniem powyższego problemu może być osobna sieć WiFi dla gości, która będzie spełniała poniższe warunki:

  • osobny SSID GUEST_NETWORK
  • osobne hasło dostępowe WPA guestpassword
  • osobna adresacja IP: 10.1.1.0/24
  • brak możliwości łączenia się gości z siecią lokalną
  • możliwość połączenia gości z internetem

W pierwszym kroku musimy skonfigurować autentykację WPA-PSK i WPA2-PSK dla nowego SSID. Pogrubieniem zaznaczyłem hasło.

/interface wireless security-profiles
add authentication-types=wpa-psk,wpa2-psk comment="for guest access" \
    eap-methods="" mode=dynamic-keys name=guest_access supplicant-identity="" \
    wpa-pre-shared-key=guestpassword wpa2-pre-shared-key=guestpassword

Teraz możemy utworzyć wirtualny interfejs WLAN z naszym nowym SSID. Pogrubiłem nazwę interfejsu (wlan2) oraz nazwę SSID naszej sieci dla gości (GUEST_NETWORK)

/interface wireless
add comment="Secondary SSID for Guest Network" disabled=no keepalive-frames=\
    disabled master-interface=wlan1 \
    multicast-buffering=disabled name=wlan2 security-profile=guest_access ssid=\
    GUEST_NETWORK wds-cost-range=0 wds-default-cost=0 wps-mode=disabled

Aby umożliwić nadawanie adresów IP oraz routing, dodaję nowy bridge (bridge-guest):

/interface bridge
add name=bridge-guest
/interface bridge port
add bridge=bridge-guest interface=wlan2

W kolejnym kroku nadaję naszemu routerowi Mikrotik adres IP w nowej podsieci dla gości

/ip address
add address=10.1.1.1/24 comment="adress in guest pool" interface=bridge-guest \
    network=10.1.1.1

Teraz skonfigurujemy nową pulę adresową dla gości, z której serwer DHCP będzie przyznawał adresy. Podałem DNS-y 8.8.8.8 i 8.8.4.4, z których będą korzystać goście. Bramą domyślną oczywiście jest nasz Mikrotik: 10.1.1.1

/ip dhcp-server network
add address=10.1.1.0/24 comment="Guest network" dns-server=8.8.8.8,8.8.4.4 \
    gateway=10.1.1.1 netmask=24
/ip pool
add name=guest-dhcp-pool ranges=10.1.1.100-10.1.1.254
/ip dhcp-server
add address-pool=guest-dhcp-pool disabled=no interface=bridge-guest name=\
    guest-dhcp-server src-address=10.1.1.1

To już prawie koniec! Teraz musimy ustawić NAT dla nowej podsieci, tak aby goście mieli dostęp do internetu. Zakładam, że wychodzimy do internetu interfejsem bridge-local

/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade for Guest Network" \
    out-interface=bridge-local

W ostatnim kroku musimy skonfigurować firewall, aby nie zezwalał na komunikację z naszą istniejącą siecią LAN. Podsieć o adresacji 192.168.1.0/24 to nasza istniejąca sieć, a 10.1.1.0/24 to nasza nowa sieć dla gości.

/ip firewall filter
add action=drop chain=forward comment=\
    "Drop traffic from Guest Network to Local LAN" dst-address=192.168.1.0/24 \
    src-address=10.1.1.0/24

Na koniec warto sprawdzić kompletność naszej konfiguracji komendą

/export

Sieci typu Mesh

Rozbudowa sieci radiowych nie zawsze należy do łatwych, szczególnie, kiedy w świeżo wyremontowanym czy nowo wykończonym mieszkaniu nie możemy zainstalować nowych kabli.

W takim momencie na pomoc przychodzi protokół Hybrydowej Sieci Mesh, czyli standard 802.11s. Firma Mikrotik zaimplementowała ten standard w formie protokołu HWMP Plus, dzięki któremu nasza sieć typu Mesh wykorzysta zarówno łącza kablowe (Ethernet) jak i radiowe (WDS). W efekcie w całym mieszkaniu lub biurze dostępna będzie sieć Wifi o tej samej nazwie, a podczas przemieszczania się po domu telefony i laptopy będą płynnie przełączały się na kolejne nadajniki naszej sieci, podobnie jak czyni to telefon komórkowy pomiędzy nadajnikami sieci. Doskonały zasięg WiFi w każdym miejscu – brzmi dobrze, prawda?

W przykładzie poniżej używamy statycznych połączeń WDS, które są automatycznie dodawane jako porty sieci Mesh. Używamy w tym przypadków dwóch różnych częstotliwości: jednej do połączeń pomiędzy routerami, oraz drugiej na potrzeby dostępu naszych urządzeń klienckich. To wymaga zastosowania routerów z co najmniej dwoma interfejsami radiowymi. Użycie różnych częstotliwości jest zalecane, gdyż w przeciwnym razie łącza między routerami oraz router – klient będą się wzajemnie zakłócały.

Na każdym urządzeniu wprowadzamy następującą konfigurację:

/interface mesh add disabled=no
/interface mesh port add interface=wlan1 mesh=mesh1
/interface mesh port add interface=wlan2 mesh=mesh1
 
# interfejs dla połączeń międzyrouterowych - 2.4 GHz
/interface wireless set wlan1 disabled=no ssid=mesh frequency=2437 band=2.4ghz-b/g/n mode=ap-bridge \
 wds-mode=static-mesh wds-default-bridge=mesh1
 
# interfejs dla połączeń urządzeń klienckich - telefonów i laptopów - 5 GHz
 /interface wireless set wlan2 disabled=no ssid=mesh-clients frequency=5180 band=5ghz-a/n/ac mode=ap-bridge
 
# statyczny interfejs WDS dla każdego routera, do którego się łączymy 
/interface wireless wds add disabled=no master-interface=wlan1 name=<;opis drugiej strony połączenia> \
 wds-address=<;MAC address drugiej strony połączenia>

W tym wpyadku musimy ręcznie dodawać interfejsy WDS, gdyż użyliśmy trybu statycznego. Alternatywą jest dynamiczna sieć Mesh (wds-mode=dynamic-mesh), gdzie interfejsy WDS tworzona są w pełni automatycznie. Ze względów bezpieczeństwa łącza należy zabezpieczyć odpowiednim protokołem szyfrowania, co na Mikrotiku skonfigurujemy poleceniem /interface wireless security-profile.

Po wykonaniu powyższej konfiguracji i podłączeniu jednego telefonu uzyskamy następujący wynik:

[admin@RouterA] > /interface mesh print
Flags: X - disabled, R - running
0 R name="mesh1" mtu=1500 arp=enabled mac-address=00:0C:42:0C:B5:A4 auto-mac=yes
admin-mac=00:00:00:00:00:00 mesh-portal=no hwmp-default-hoplimit=32
hwmp-preq-waiting-time=4s hwmp-preq-retries=2 hwmp-preq-destination-only=yes
hwmp-preq-reply-and-forward=yes hwmp-prep-lifetime=5m hwmp-rann-interval=10s
hwmp-rann-propagation-delay=1s hwmp-rann-lifetime=22s
 
[admin@RouterA] > /interface mesh port print detail
Flags: X - disabled, I - inactive, D - dynamic
0 interface=wlan1 mesh=mesh1 path-cost=10 hello-interval=10s port-type=auto port-type-used=wireless
1 interface=wlan2 mesh=mesh1 path-cost=10 hello-interval=10s port-type=auto port-type-used=wireless
2 D interface=router_B mesh=mesh1 path-cost=105 hello-interval=10s port-type=auto port-type-used=WDS
3 D interface=router_D mesh=mesh1 path-cost=76 hello-interval=10s port-type=auto port-type-used=WDS

Baza danych FDB (Forwarding Database) zawiera wyłącznie informację o lokalnych adresach MAC, urządzeniach połączonych w inny sposób niż Mesh, oraz najbliżsi sąsiedzi typu Mesh:

[admin@RouterA] /interface mesh fdb print
Flags: A - active, R - root
MESH TYPE MAC-ADDRESS ON-INTERFACE LIFETIME AGE
A mesh1 local 00:0C:42:00:00:AA 3m17s
A mesh1 neighbor 00:0C:42:00:00:BB router_B 1m2s
A mesh1 neighbor 00:0C:42:00:00:DD router_D 3m16s
A mesh1 direct 00:0C:42:0C:7A:2B wlan2 2m56s
A mesh1 local 00:0C:42:0C:B5:A4 2m56s
 
[admin@RouterA] /interface mesh fdb print detail
Flags: A - active, R - root
A mac-address=00:0C:42:00:00:AA type=local age=3m21s mesh=mesh1 metric=0 seqnum=4294967196
A mac-address=00:0C:42:00:00:BB type=neighbor on-interface=router_B age=1m6s mesh=mesh1 metric=132 seqnum=4294967196
A mac-address=00:0C:42:00:00:DD type=neighbor on-interface=router_D age=3m20s mesh=mesh1 metric=79 seqnum=4294967196
A mac-address=00:0C:42:0C:7A:2B type=direct on-interface=wlan2 age=3m mesh=mesh1 metric=10 seqnum=0
A mac-address=00:0C:42:0C:B5:A4 type=local age=3m mesh=mesh1 metric=0 seqnum=0

W tym momencie możemy przetestować naszą sieć poleceniem ping:

[admin@RouterA] > /ping 00:0C:42:00:00:CC
00:0C:42:00:00:CC 64 byte ping time=108 ms
00:0C:42:00:00:CC 64 byte ping time=51 ms
00:0C:42:00:00:CC 64 byte ping time=39 ms
00:0C:42:00:00:CC 64 byte ping time=43 ms
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 39/60.2/108 ms

Router A musi znaleźć optymalną ścieżkę do routera C, więc pierwszy pakiet potrzebuje odrobinę więcej czasu. Teraz w bazie FDB pojawi się również adres MAC Routera C (00:0C:42:00:00:CC) i będzie miał typ „mesh”.

Warto sprawdzić, czy protokół ARP poprawnie działa w naszej sieci, używając polecenia ping z adresem IP routera C:

[admin@RouterA] > /ping 10.4.0.3
10.4.0.3 64 byte ping: ttl=64 time=163 ms
10.4.0.3 64 byte ping: ttl=64 time=46 ms
10.4.0.3 64 byte ping: ttl=64 time=48 ms
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 46/85.6/163 ms