Статья участвует в Конкурсе статей по настройке оборудования Mikrotik с операционной системой RouterOS
У меня появилась задача расширить зону покрытия моей домашней wifi-сети. Создает ее роутер от ASUS (потому что с ADSL), расширяет до текущих масштабов тоже ASUS. Дальнейшее расширение я захотел сделать на mikrotik, заодно попытаться второй ASUS заменить так же на mikrotik. Первый бы тоже заменил, но не нашел у микротиков чего-либо для работы с ADSL. До недавнего времени сделать это было нельзя.
Можно было либо:
- С WDS. Мой ASUS согласен на WDS только при использовании WEP-шифрования. Нет, спасибо.
- Исключительно между микротиками. Тоже не подходит, так как нужен ADSL, а следовательно в сети будет не только mikrotik.
Находил в сети советы в стиле "сделайте виртуальный wireless-интерфейс, основному mode поставьте station, виртуальному ap bridge и при одинаковом SSID у Вас всё заработает". Не заработает, так как в официальной wiki написано, что VirtualAP будет функционировать только если мастер "is in ap-bridge, bridge or wds-slave mode", а нам нужен station.
В итоге проблема решилась обновлением routeros до версии 6.35. В ней добавили модуль wireless-rep, который позволяет реализовать желаемое, а так же получить некоторые приятные бонусы. Например, из минироутеров (mAP или RB941-2nD-TC) можно сделать фильтр wifi сети для путешествий.
Всё описанное проверенно и работает на роутерах от mikrotik моделей RBmAP2n, RB941-2nD-TC и RB751U-2HnD, но должно работать на любых роутерах mikrotik с wifi.
Я люблю консоль, поэтому все инструкции будут для нее. Аналогии в winbox или веб-интерфейсе достаточно прозрачны.
Обновление до RouterOS 6.35.
На данный момент эта версия в стадии Release Candidate, поэтому этот пункт имеет смысл. Как только 6.35 станет стабильной - данный пункт можно смело пропускать.
Штатно обновляемся до последней стабильной версии RouterOS. Далее ставим канал обновлений на release-candidate:
/system package update set channel=release-candidate
обновляемся
/system package update install
Пока роутер перезагружается, качаем отсюда архив extra packages для новой версии RouterOS. Из него нас интересует файл, содержащий в названии wireless-rep. Заливаем его на наш роутер и перезагружаем роутер еще раз.
После перезагрузки проверяем, что модуль wireless-rep появился в списке пакетов и активен:
/system package print
Flags: X - disabled # NAME - VERSION SCHEDULED 0 routeros-mipsbe - 6.35rc45 1 system - 6.35rc45 2 X wireless-cm2 - 6.35rc45 3 X ipv6 - 6.35rc45 4 X wireless-fp - 6.35rc45 5 X hotspot - 6.35rc45 6 dhcp - 6.35rc45 7 mpls - 6.35rc45 8 routing - 6.35rc45 9 ppp - 6.35rc45 10 security - 6.35rc45 11 advanced-tools - 6.35rc45 12 X multicast - 6.35rc45 13 wireless-rep - 6.35rc45 |
Настройка собственно репитера
Короткий путь для ленивых
/interface wireless setup-repeater number=wlan1 ssid=My_WIFI passphrase=TheBestPassword
Что делает эта команда?
Согласно официальной вики:
- сбрасывает настройки мастер-интерфейса (wlan1 в нашем случае) (так же как делает reset-configuration)
- убирает виртуальные интерфейсы, привязанные к этому мастер-интерфейсу из всех возможных бриджей (чтоб не оставлять записей об ошибочных портах бриджей)
- удаляет все виртуальные интерфейсы данного мастер-интерфейса
- создает security profile "interfacename-ssid-repeater", если такой security profile уже существует, то не создает новый, а обновляет настройки старого
- настраивает мастер-интерфейс, режим работы выбирается следующим образом: если точка доступа (вышестоящая) поддерживает режим работы bridge (это проприетарный режим работы mikrotik, поэтому только с ними), используется station-bridge, иначе если точка доступа поддерживает WDS, используется station-wds, иначе используется station-pseudobridge (наш случай)
- создает интерфейс virtual AP с таким же SSID и security profile как и мастер
- если мастер-интерфейс не состоит ни в каком бридже, создает новый бридж и добавляет мастер-интерфейс в него
- добавляет интерфейс virtual AP в тот же бридж, что и мастер.
Всё, можно переходить к следующему пункту - Настройка DHCP-relay.
Длинный путь для дотошных
Настраиваем security-profile для нашей wifi сети:
/interface wireless security-profiles add name=MyTestWIFI-repeater mode=dynamic-keys authentication-types=wpa2-psk unicast-ciphers=aes-ccm group-ciphers=aes-ccm wpa2-pre-shared-key="MySuperPassword"
Это настройки для WPA2. Если у Вас по каким-то причинам используется другой протокол - Вы, я надеюсь, знаете, что тут писать.
Настраиваем мастер-интерфейс для подключения к нашей wifi сети, как будто мы просто в режиме station, только указываем mode=station-pseudopridge:
/interface wireless set numbers=wlan1 ssid=MyTestWIFI security-profile=MyTestWIFI-repeater mode=station-pseudobridge
Убираем виртуальные интерфейсы, привязанные к этому мастер-интерфейсу из всех возможных бриджей (чтоб не оставлять записей об ошибочных портах бриджей). Тут, надеюсь, если Вы их настроили, Вы же знаете как их убрать.
Удаляем все виртуальные интерфейсы данного мастер-интерфейса.
Создаем интерфейс virtual AP с таким же SSID и security profile как и мастер, но режим работы указываем ap-bridge:
/interface wireless add copy-from=wlan1 name=wlan2 master-interface=wlan1 mode=ap-bridge
Если мастер-интерфейс не состоит ни в каком бридже, создаем новый бридж и добавляет мастер-интерфейс в него:
/interface bridge add name=wifibridge
/interface bridge port add bridge=wifibridge interface=wlan1
Добавляем интерфейс virtual AP в тот же бридж, что и мастер:
/interface bridge port add bridge=wifibridge interface=wlan2
Настройка DHCP-relay
К этому моменту мы должны получить усиленный сигнал нашей wifi-сети. Но у клиентов в зоне действия нашего репитера, перестанут выдаваться автоматически ip-адреса, то есть не будет работать DHCP. Почему? Это из-за того, что к главной точке доступа мы подключаемся в режиме station-pseudobridge, В этом режиме на интерфейсе происходит трансляция MAC-адресов (по аналогии с NAT, только на канальном уровне). То есть для всей остальной сети все устройства, которые подключаются к wifi через репитер имеют один MAC-адрес. Это не страшно, когда IP-адреса статические. Но для работы DHCP надо сделать следующие настройки:
Назначаем бриджу, в который входят наши беспроводные интерфейсы, адрес из основной сети (адреса из которой раздаются по DHCP).
Либо статически:
/ip address add address=192.168.1.160/24 interface=wifibridge
Или динамически, включив на нем DHCP-клиент (этот способ рекомендую только в случае, если на основном роутере для репитера прописан постоянный dhcp-lease):
/ip dhcp-client add interface=wifibridge
После включения dhcp-клиента назначенный адрес можно посмотреть так:
/ip address print
Теперь мы можем включить DHCP-relay, который в дополнение к трансляции MAC-адресов будет транслировать DHCP-запросы в основную сеть и обратно:
/ip dhcp-relay add dhcp-server=192.168.1.1 interface=wifibridge local-address=192.168.1.160
где 192.168.1.1 - адрес DHCP-сервера в нашей сети (обычно адрес основного роутера), а 192.168.1.160 - адрес назначенный нашему репитеру.
Теперь наш репитер должен полноценно заработать.
Бонус.
Как я писал выше, используя новый модуль wireless-rep мы можем настроить wifi-фильтр для путешествий. Он будет подключаться к внешней wifi-сети (в гостинице, аэропорту или метро), фильтровать трафик и отдавать во внутреннюю сеть или даже заворачивать внутренний трафик в VPN.
Подробно расписывать не буду, делается по аналогии с написанным выше:
Мастер-wifi-интерфейс (wlan1) убираем из каких-либо бриджей, назначаем ему mode=ap-bridge, ssid внутренней сети и отдельный security-profile.
Создаем дочерний wifi-интерфейс (wlan2), который подключаем к необходимой внешней сети.
Дочерний wifi-интерфейс по желанию объединяем в bridge с ethernet-портами.
Настраиваем masquerade в таблице nat фаервола из внутренней сети во внешнюю.
Настраиваем фильтры в таблице filter фаервола, исключая доступ к роутеру из внешней сети.
В результате, приезжая куда-то где есть wifi, мы подключаемся к роутеру через внутренний wifi, настраиваем на нем внешний wifi и пользуемся сетью, сидя за "каменной стеной".
Участник конкурса Иван Прокудин
Просьба всем кто читает статьи, участвующие в конкурсе, ставить оценки.
Александр