(пример реальной конфигурации)
Введение
Здесь приведён результат рабочего конфига MikroTik который получился в результате вынужденного перехода DD-WRT. Настройка роутера разбита на логические этапы. Последовательность приближена к реальной процедуре конфигурирования устройства.
Firewall вынесен в конец, так как обычно дорабатывается в процессе эксплуатации.
Данная заметка является практической реализаций Истории умирающего роутера
1. Базовые настройки системы
Настройка имени устройства для идентификации устройства при его администрировании. Часовой пояс крайне важный момент для правильного отображения времени в логах.
- Код: выделить все
/system identity set name=gete.free-adm.ru
/system clock set time-zone-autodetect=no time-zone-name=Europe/Moscow
Теперь разберёмся с синхронизацией времени на роутере и узлами нашей сети с роутера. Настроим ntp client и ntp server на маршрутизаторе.
- Код: выделить все
/system ntp client set enabled=yes
/system ntp client servers
add address=95.211.123.72
add address=212.1.224.6
add address=212.1.244.6
add address=195.0.1.3
/system ntp server set enabled=yes multicast=yes
Синхронизация времени на устройстве и возможность раздавать время внутрь сети хоть и базовая, но очень важная часть настройки так как взаимодействие с серверами DNS по защищённым протоколам завязано на использование сертификатов, а они имеют сроки действия.
Обратите внимание на заданные мной IP-адреса в качестве источников времени. Чтобы нормально поднялась связь с DNS-серверами время должно быть правильно выставлено
2. Настройка интерфейсов
Теперь назначим роли портам. Интерфейс ether1 смотрит в сторону провайдера и для авторизации на оборудовании провайдера необходим MAC выведенного из эксплуатации роутера. Пример административно назначенного MAC приведён в качестве иллюстрации как можно без звонка в службу поддержки провайдера запустить новое оборудование в полноценную работу.
- Код: выделить все
/interface ethernet
set ether1 comment=wan mac-address=84:1B:5E:7A:9D:CF
set ether2 comment="WS For Admin"
set ether5 comment=Printer
3. LAN (Bridge)
Bridge объединяет LAN-порты в одну сеть. При объединении портов Важно не забыть назначить мосту административно начзаченный MAC.
Причина, по которой в RouterOS 7 (как, впрочем, и в более ранних версиях) настоятельно рекомендуется вручную назначать `admin-mac` для программного моста (bridge) — это обеспечение стабильности и предсказуемости работы вашей сети. Отказ от этой практики и оставление `auto-mac=yes` (настройка по умолчанию) может привести к нескольким неприятным проблемам.
Вот ключевые причины, почему это важно делать именно административно:
- Непредсказуемое изменение MAC-адреса после перезагрузки
Когда `auto-mac=yes`, RouterOS автоматически назначает bridge'у MAC-адрес **первого добавленного в него порта**. Проблема в том, что при загрузке маршрутизатора порядок "поднятия" интерфейсов может меняться. В результате после каждого ребута bridge может получить новый MAC-адрес, что способно вызвать массу сбоев :- Проблемы с DHCP: Устройства могут не получить IP-адрес или получить другой (если привязка в статике была к старому MAC).
- Потеря управления: Изменение MAC приводит к смене IP, что ломает мониторинг (Netwatch, Dude) и может лишить вас доступа к устройству .
- Сброс ARP-кэша: Соседние устройства перестанут "видеть" мост, пока не обновится кэш, вызывая кратковременные обрывы связи.
- Риск "плавающего" MAC при изменении конфигурации
Даже без перезагрузки, если вы решите удалить из bridge'а тот самый порт, чей MAC-адрес был унаследован, или просто деактивируете его, bridge будет вынужден моментально выбрать новый MAC от другого активного порта. Это гарантированно разорвёт все текущие соединения и вызовет сбой в работе сетевых служб . - Критичные баги в новых прошивках (пример 7.17)
Хотя наследственные проблемы были известны давно, в отдельных версиях RouterOS 7 (например, в 7.17) были обнаружены специфические баги. При активном `auto-mac=yes` на bridge, состоящем из VLAN-интерфейсов, MAC-адрес мог начать меняться непрерывно, генерируя шторм случайных локальных адресов и делая работу сети невозможной. Ручная установка `admin-mac` является единственным надёжным способом избежать подобных сюрпризов . - Обеспечение работы протоколов (STP и др.)
Для протоколов связующего дерева (STP/RSTP) критически важна уникальность идентификатора моста (Bridge ID), который базируется на MAC-адресе. Если на двух устройствах в результате автоматического выбора совпадут MAC-адреса (что возможно при похожих конфигурациях), или если MAC внезапно изменится, STP может неверно рассчитать топологию, что приведёт к образованию петель и "широковещательному шторму" .
Как это сделать правильно?
Рекомендуется не просто скопировать текущий MAC, а назначить уникальный статический адрес из диапазона LAA (Locally Administered Address). Его легко отличить от заводского: измените второй символ в MAC-адресе на 2, 6, A или E (например, `02:11:22:33:44:55` или `EE:...`). Это гарантирует, что адрес не будет конфликтовать с физическими портами роутера или другим сетевым оборудованием .
- Код: выделить все
/interface bridge add name=bridge1 comment="For LAN" auto-mac=no admin-mac=EE:FD:74:7E:75:6B
Здесь первый байт первого добавленного в мост интерфейса был изменён на "EE". Данный метод позволяет не придумывать адрес целиком. Теперь наполним созданный мост интерфейсами
- Код: выделить все
/interface bridge port
add bridge=bridge1 interface=ether2 comment="WS For Admin"
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether5 comment=Printer
Резюме: Настройка `admin-mac` — это не просто рекомендация, а базовая гигиена конфигурации MikroTik, которая страхует вас от плавающих багов и неожиданного поведения сети при ребутах.
4. Wi-Fi настройка
Выключаем 2.4 GHz и настраиваем только 5 GHz.
- Код: выделить все
/interface wireless
set [ find default-name=wlan1 ] comment="2.4 GHz" country=russia4 mode=ap-bridge ssid=BR0-2GHz
set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=20/40mhz-eC comment="5 GHz" country=russia4 disabled=\
no installation=indoor mode=ap-bridge ssid=BR0-5GHz wps-mode=disabled
Присоединяем точки доступа в мост bridge1. Если вдруг понадобится WIFi 2.4 GHz, то его можно будет просто включить и он уже будет в мосту.
- Код: выделить все
/interface bridge port
add bridge=bridge1 interface=wlan1 comment="2.4 GHz"
add bridge=bridge1 interface=wlan2 comment=5GHz
- Код: выделить все
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa2-psk mode=dynamic-keys supplicant-identity=MikroTik wpa2-pre-shared-key=passWiFi
5. Списки интерфейсов
Списки интерфейсов применяются в основном при настройке firewall (очень удобно). Сначала создаём нужные нам списки, а затем включаем в них соответствующие интерфейсы.
- Код: выделить все
/interface list
add name=WAN_IF comment="Interface wan"
add name=LAN_IF comment="Interfaces lan"
/interface list member
add interface=ether1 list=WAN_IF
add interface=bridge1 list=LAN_IF
6. Интернет (WAN)
- Код: выделить все
/ip dhcp-client
add interface=ether1 comment="dhcp isp" use-peer-dns=no use-peer-ntp=no
Получение IP от провайдера.
7. Адресация LAN
- Код: выделить все
/ip address
add address=195.0.1.254/24 interface=bridge1 comment="ip on bridge"
Шлюз локальной сети.
8. DHCP сервер
Реализуем полноценный DHCP с возможностью запуска рабочих старнций по сети при помощи протоколов сетевой загрузки PXE -> iPXE -> HTTP.
- Код: выделить все
/ip pool
add comment="pool for lan IPv4" name=LanPool ranges=195.0.1.200-195.0.1.250
- Код: выделить все
/ip dhcp-server
add name=dhcp1 interface=bridge1 address-pool=LanPool lease-time=1d
- Код: выделить все
/ip dhcp-server network
add address=195.0.1.0/24 boot-file-name=efi64/ipxe.efi comment="Main LAN" dns-server=195.0.1.254 domain=free-adm.ru \
gateway=195.0.1.254 netmask=24 next-server=195.0.1.3 ntp-server=195.0.1.254
9. DNS (локальный + DoH)
Настраиваем разрешение имён для интернет при помощи DNS-over-HTTPS. Заворачиваем DNS-запросы в HTTPS
- Код: выделить все
/ip dns
set allow-remote-requests=yes servers=45.90.30.0,45.90.28.0 use-doh-server=https://dns.nextdns.io/XXXXXX verify-doh-cert=yes
XXXXXX - Идентификатор пользовательского профиля получаемого при регистрации на сайте nextdns
Роутер выступает DNS-сервером для клиентов и имитирует DNS-зону для внутренних узлов локальной сети.
- Код: выделить все
/ip dns static
add address=195.0.1.3 name=free-adm.ru
add address=195.0.1.3 comment="apex A" name=free-adm.ru type=A
add address=2000:2cc0:13b1:3333::3 comment="apex AAAA" name=free-adm.ru type=AAAA
add address=195.0.1.254 comment="gateway DNS" name=ns1.free-adm.ru type=A
add address=2000:2cc0:13b1:3333::254 comment="gateway DNS v6" name=ns1.free-adm.ru type=AAAA
add address=195.0.1.254 comment=gateway name=gate.free-adm.ru type=A
add address=2000:2cc0:13b1:3333::254 name=gate.free-adm.ru type=AAAA
...
10. SMB (шары на роутере)
Организация простейшего файлового сервера с использованием внешнего накопителя USB.
- Код: выделить все
/ip smb users add name=serg password=pass123
/ip smb set domain=ENG enabled=yes interfaces=bridge1
/ip smb shares add comment="Shara On Mikritik" directory=/usb1 invalid-users=guest name=samba require-encryption=yes valid-users=serg
11. WireGuard (IPv6 туннель)
- Код: выделить все
/interface wireguard
add name=wg-ipv6 listen-port=13830 mtu=1412 comment="route64 IPv6 over WG"
- Код: выделить все
/interface wireguard peers
add interface=wg-ipv6
endpoint-address=118.91.187.67 endpoint-port=20041
allowed-address=::/1,8000::/1
persistent-keepalive=15s
public-key="3e+...="
IPv6 через внешний туннель.
12. IPv6 адреса и маршруты
- Код: выделить все
/ipv6 address
add address=fe80::1 interface=bridge1
add address=2000:2cc0:f04:189::2 interface=wg-ipv6
add address=2000:2cc0:13b1:3333::254 interface=bridge1
- Код: выделить все
/ipv6 route
add dst-address=2000:2cc0:f04:189::2/128 gateway=wg-ipv6
add dst-address=::/0 gateway=wg-ipv6
- Код: выделить все
/ipv6 nd
set [ find default=yes ] interface=bridge1 mtu=1412 advertise-dns=yes
Раздача IPv6 клиентам.
13. Доступ к роутеру
- Код: выделить все
/ip service
set ssh address=195.0.1.0/24,2000:2cc0:13b1:3333::/64
set winbox address=195.0.1.0/24,2000:2cc0:13b1:3333::/64
set telnet address=195.0.1.0/24
set ftp disabled=yes
set www disabled=yes
set api disabled=yes
set api-ssl disabled=yes
Ограничение доступа только из LAN.
14. Системные настройки
- Код: выделить все
/tool mac-server
set allowed-interface-list=LAN_IF
/tool mac-server mac-winbox
set allowed-interface-list=LAN_IF
/system logging
add topics=wireless,debug
15. ЭТАЛОННЫЙ FIREWALL
Address-list IPv4
- Код: выделить все
/ip firewall address-list
add list=LAN_NET address=195.0.1.0/24 comment="LAN"
add list=ADMIN address=195.0.1.3 comment="Admin host"
add list=SRV_MAIN address=195.0.1.3 comment="Main server"
Address-list IPv6
- Код: выделить все
/ipv6 firewall address-list
add list=LAN_NET address=2000:2cc0:13b1:3333::/64
add list=ADMIN address=2000:2cc0:13b1:3333::3
add list=SRV_MAIN address=2000:2cc0:13b1:3333::3
INPUT (доступ к роутеру)
- Код: выделить все
/ip firewall filter
### 1. Established / Related
add chain=input action=accept connection-state=established,related comment="INPUT: EST/REL"
### 2. Invalid
add chain=input action=drop connection-state=invalid comment="INPUT: DROP invalid"
### 3. LAN → Router (полный доступ)
add chain=input action=accept in-interface-list=LAN_IF comment="INPUT: LAN full access"
### 4. Admin доступ с WAN (ограниченный)
add chain=input action=accept protocol=tcp dst-port=22,8291 src-address-list=ADMIN in-interface-list=WAN_IF comment="INPUT: admin from WAN"
### 5. ICMP (ограниченный)
add chain=input action=accept protocol=icmp comment="INPUT: ICMP allow"
### 6. Остальное с WAN — DROP
add chain=input action=drop in-interface-list=WAN_IF comment="INPUT: DROP WAN"
FORWARD (трафик через роутер)
- Код: выделить все
### 1. Established / Related
add chain=forward action=accept connection-state=established,related comment="FWD: EST/REL"
### 2. Invalid
add chain=forward action=drop connection-state=invalid comment="FWD: DROP invalid"
### 3. LAN → WAN (основное правило)
add chain=forward action=accept in-interface-list=LAN_IF out-interface-list=WAN_IF comment="FWD: LAN → WAN"
### 4. Публикация сервера (DNAT уже есть)
add chain=forward action=accept in-interface-list=WAN_IF dst-address-list=SRV_MAIN comment="FWD: WAN → SRV"
### 5. (опционально) ICMP транзит
add chain=forward action=accept protocol=icmp comment="FWD: ICMP"
### 6. Всё остальное — DROP
add chain=forward action=drop comment="FWD: DROP all"
NAT
- Код: выделить все
/ip firewall nat
### Masquerade
add chain=srcnat action=masquerade out-interface-list=WAN_IF src-address-list=LAN_NET
### DNAT -> сервер
add chain=dstnat action=dst-nat in-interface-list=WAN_IF protocol=tcp dst-port=80,443 to-addresses=195.0.1.3
add chain=dstnat action=dst-nat in-interface-list=WAN_IF protocol=udp dst-port=4662-4665,4672,8999,41641 to-addresses=195.0.1.3
