Настройка маршрутизатора MikroTik hAP RB951Ui-2HnD

Содержание

  1. Содержание
  2. Введение
  3. Сброс к заводским настройкам
  4. Доступ к консоли
  5. Просмотр информации о маршрутизаторе
  6. Управление файлами
  7. Управление конфигурацией маршрутизатора
  8. Управление пакетами
  9. Режимы работы маршрутизатора
  10. Настройка начальных сведений о маршрутизаторе
  11. Настройка пользователей и паролей
  12. Просмотр состояния портов и интерфейсов
  13. Настройка интерфейсов VLAN
  14. Настройка мостовых интерфейсов
  15. Настройка VLAN на коммутируемых портах
  16. Настройка точки доступа WiFi
  17. Настройка IP-адреса, шлюза и статических маршрутов
  18. Настройка клиента PPPoE
  19. Настройка клиента DHCP
  20. Настройка сервера DHCP
  21. Постоянные IP-адреса для DHCP-клиентов
  22. Настройка DNS-записей
  23. Настройка фильтрации пакетов
  24. Настройка NAT
  25. Настройка проброса портов
  26. Настройка NAT-PMP
  27. Настройка UPnP
  28. Настройка SSH, отключение других сервисов
  29. Настройка часов
  30. Настройка SNMP
    1. Включение SNMP
    2. Настройка сообществ SNMP
    3. Настройка пользователей SNMPv3
    4. Просмотр настроек
    5. Проверка настроек
  31. Инструменты
    1. Прослушивание трафика
    2. Просмотр ARP-таблицы
    3. Проверка доступности узла
    4. Трассировка маршрута
    5. SSH-клиент
  32. Дополнительные материалы

Введение

Профессиональным сетевым администраторам эта заметка покажется совершенно бесполезной, т.к. в ней описываются совершенно базовые вещи. Моя профессия связана с Linux-серверами, а не компьютерными сетями, но для общего развития я иногда пытаюсь изучать смежные области. В этой заметке собраны команды, которые могут пригодиться мне самому.

Интерфейс командной строки маршрутизатора НЕ похож на таковой у маршрутизторов Cisco. На маршрутизаторе нет деления на режимы просмотра и настройки, почти любая команда может переводить интерфейс в подрежим, если в ней не указано достаточное количество аргументов для формирования завершённой команды. Для того, чтобы ввести команду, не являющуюся продолжением команды в текущем подрежиме, нужно предварить её символом косой черты. Для просмотра текущих настроек, относящихся к команде, предусмотрено ключевое слово print, которое добавляется в конец команды.

Описываемый маршрутизатор оснащён 5 Ethernet-портами, работающими на скоростях 10 или 100 мегабит/с и WiFi-интерфейсом, работащим на частоте 2,4 гигагерца с максимальной скоростью до 300 мегабит/с. Способен принимать питание PoE на порту 1 и питать другое устройство, подключенное к порту 5.

Аналогичная модель RB951G-2HnD отличается от этого маршрутизатора тем, что её Ethernet-порты способны работать также на скорости 1 гигабит/с, а 5 порт не может питать другое устройство.

Сброс к заводским настройкам

Для сборса настроек маршрутизатора нужно:

  1. отключить от него питание,
  2. нажать кнопку сброса, помеченную текстом RES, канцелярской скрепкой,
  3. подать питание,
  4. подождать несколько секунд, пока не начнёт мигать светодиод, помеченный текстом ACT.

Доступ к консоли

Нужно подключить маршрутизатор к компьютеру, с которого ведётся настройка, любым портом, кроме первого. Первый порт выделен для подключения ко внешней сети и для настройки маршрутизатора в целях безопасноти не используется.

В конфигурации по умолчанию на маршрутизаторе настроен DHCP-сервер, который раздаёт настройки для устройств, подключенных к портам, кроме первого.

Если на компьютере, который используется для настройки маршрутизатора, установлен Linux, то для настройки сетевого интерфейса с помощью DHCP-сервера маршрутизатора можно воспользоваться командой следующего вида:

# dhclient eth0

В приведённой выше команде eth0 - имя сетевого интерфейса, к которому подключен маршрутизатор. Если посмотреть его настройки с помощью команды ip addr show eth0, то можно увидеть, что компьютеру был выдан IP-адрес из сети 192.168.88.0/24:

# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 60:a4:4c:0a:6e:3d brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.88.245/24 brd 192.168.88.255 scope global dynamic eth0
       valid_lft 566sec preferred_lft 566sec
    inet6 fe80::62a4:4cff:fe0a:6e3d/64 scope link 
       valid_lft forever preferred_lft forever

Конкретно в моём случае компьютеру выдался IP-адрес 192.168.88.245, хоть для настройки маршрутизатора это и не имеет особого значения. IP-адрес самого маршрутизатора должен быть 192.168.88.1.

В конфигурации по умолчанию на маршрутизаторе настроен пользователь admin с пустым паролем. Для подключения к маршрутизатору воспользуемся клиентом SSH:

$ ssh admin@192.168.88.1
The authenticity of host '192.168.88.1 (192.168.88.1)' can't be established.
RSA key fingerprint is SHA256:Zskcf2u0CHcyRVhNuB9zfZ5S828TqzL1qCT2tBnmn/E.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.88.1' (RSA) to the list of known hosts.


  MMM      MMM       KKK                          TTTTTTTTTTT      KKK
  MMMM    MMMM       KKK                          TTTTTTTTTTT      KKK
  MMM MMMM MMM  III  KKK  KKK  RRRRRR     OOOOOO      TTT     III  KKK  KKK
  MMM  MM  MMM  III  KKKKK     RRR  RRR  OOO  OOO     TTT     III  KKKKK
  MMM      MMM  III  KKK KKK   RRRRRR    OOO  OOO     TTT     III  KKK KKK
  MMM      MMM  III  KKK  KKK  RRR  RRR   OOOOOO      TTT     III  KKK  KKK

  MikroTik RouterOS 7.14.1 (c) 1999-2024       https://www.mikrotik.com/


Do you want to see the software license? [Y/n]:

Просмотр информации о маршрутизаторе

Для просмотра информации о маршрутизаторе предусмотрена команда:

[stupin@rb951] > /system resource print
                   uptime: 2d5h6m20s
                  version: 7.14.1 (stable)
               build-time: 2024-03-08 12:50:23
         factory-software: 6.34.3
              free-memory: 83.5MiB
             total-memory: 128.0MiB
                      cpu: MIPS 74Kc V4.12
                cpu-count: 1
            cpu-frequency: 600MHz
                 cpu-load: 1%
           free-hdd-space: 109.8MiB
          total-hdd-space: 128.0MiB
  write-sect-since-reboot: 1744
         write-sect-total: 1744
               bad-blocks: 0%
        architecture-name: mipsbe
               board-name: RB951Ui-2HnD
                 platform: MikroTik

Управление файлами

Посмотреть файлы и каталоги, имеющиеся во флеш-памяти маршрутизатора, можно с помощью следующей команды

[stupin@rb951] > /file print
Columns: NAME, TYPE, SIZE, CREATION-TIME
#  NAME                      TYPE       SIZE     CREATION-TIME      
0  user-manager              directory           2024-04-22 06:13:28
1  skins                     directory           1970-01-01 00:00:01
2  user-manager/sqldb        file       80.0KiB  2002-01-01 01:00:03
3  user-manager/logsqldb     file       6.0KiB   2002-01-01 01:00:03
4  um-before-migration.tar   .tar file  17.5KiB  2002-01-01 01:00:03
5  auto-before-reset.backup  backup     22.2KiB  1970-01-01 00:00:07

Создать новый файл можно следующим образом:

[stupin@rb951] > /file add name=test contents="Hello, world!"

Скопировать файл можно следующим образом:

[stupin@rb951] > /file add name=test2 copy-from=test

Удалить файл можно по имени или по номеру:

[stupin@rb951] > /file remove test
[stupin@rb951] > /file remove numbers=5

Кроме этого файлами можно управлять по протоколу SFTP - загружать, удалять, скачивать.

Управление конфигурацией маршрутизатора

Для просмотра текущей конфигурации можно воспользоваться такой командой:

[stupin@rb951] > /export compact

Ключевое слово compact используется по умолчанию и его можно опустить. Оно обозначает, что будут выведены только те настройки, которые отличаются от конфигурации по умолчанию. Его противоположностью является ключевое слово verbose, которое предписывает вывести полную конфигруацию, включая настройки по умолчанию:

[stupin@rb951] > /export verbose

Если собираетесь поделиться конфигурацией, например, при совместном разборе проблемы или при написании статьи для публичных ресурсов, можно указать ключевое слово hide-sensitive, чтобы скрыть информацию, используемую в процессах аутентификации - пароли, хэши праолей, разделяемые ключи и секреты:

[stupin@rb951] > /export hide-sensitive

Копировать конфигурацию с экрана консоли не удобно, поэтому можно сохранить конфигруацию в файл, который потом можно будет скопировать с маршрутизатора, например, по протоколу SFTP:

[stupin@rb951] > /export hide-sensitive file="config"

К имени файла будет добавлено расширение .rsc.

Просматривать и экспортировать можно не только всю конфигруацию целиком, но и часть конфигруации, относящуюся к одному и тому же разделу. Например, для просмотра конфигруации портов на мостовом интерфейсе можно перейти в соответствующий раздел и выполнить команду экспорта внутри него:

[stupin@rb951] > /interface bridge port
[stupin@rb951] interface bridge port> export

Для выхода из раздела конфигурации достаточно ввести команду, состоящую из одной косой черты:

[stupin@rb951] interface bridge port> /
[stupin@rb951] >

Сохранённые в файл настройки можно потом применить с помощью следующей команды:

[stupin@rb951] > /import file-name="config"

Команде можно указать номер строки, с которой нужно начать выполнение импорта, в поле from-line. Для отладки может пригодиться также указать в команде ключевое слово verbose - команды из файла будут выполняться по одной, каждая выполняемая команда будет сначала выведена на экран, а после её выполнения будет выведено сообщение об успешном выполнении или об ошибках выполнения команды.

Для сброса конфигурации к конфигурации по умолчанию предусмотрена команда:

[stupin@rb951] > /system reset-configuration

Этой команде можно указать одно из следующих ключевых слов:

  • keep-users - не удалять пользователей, их пароли и ключи SSH,
  • no-defaults - выполнить полную очистку конфигруации, без применения конфигурации по умолчанию,
  • skip-backup - не выполнять автоматическое сохранение текущей конфигурации перед сбросом,
  • run-after-reset - после сброса выполнить файл с указанным именем, который был получен с помощью команды /export.

Для резервного копирования и восстановления конфигурации маршрутизатора предусмотрены отдельные команды. Сохранить текущую конфигурацию во флеш-память без шифрования можно следующим образом:

[stupin@rb951] > /system backup save name=20240603 dont-encrypt=yes 
Saving system configuration
Configuration backup saved

К имени файла резервной копии добавится расширение .backup.

Для восстановления конфигурации маршрутизатора из резервной копии можно воспользоваться такой командой:

[stupin@rb951] > /system backup load name=20240603.backup password=""
Restore and reboot? [y/N]: 
y
Restoring system configuration
System configuration restored, rebooting now

Управление пакетами

Прошивка маршрутизатора состоит из пакетов: основного и дополнительных. Найти их можно на странице MikroTik Routers and Wireless - Software.

Пакет должен соответствовать архитектуре микропроцессора маршрутизатора. Узнать эту архитектуру можно из поля architecture-name, выдаваемого командой /system resource print.

Посмотреть список уже установленных на маршрутизаторе пакетов можно с помощью такой команды:

[stupin@rb951] > /system package print 
Columns: NAME, VERSION, BUILD-TIME, SIZE
# NAME      VERSION  BUILD-TIME           SIZE     
0 routeros  7.14.1   2024-03-08 12:50:23  9.9MiB   
1 lte       6.48.1   2021-02-03 10:54:22  1944.1KiB

Установить новый пакет в систему можно по SFTP, например, вот так:

$ sftp 192.168.254.1
stupin@192.168.254.1's password: 
Permission denied, please try again.
stupin@192.168.254.1's password: 
Connected to 192.168.254.1.
sftp> ls
20240603.backup           auto-before-reset.backup  skins                     
um-before-migration.tar   user-manager              
sftp> put routeros-7.15-mipsbe.npk 
Uploading routeros-7.15-mipsbe.npk to /routeros-7.15-mipsbe.npk
routeros-7.15-mipsbe.npk                      100%   10MB   1.5MB/s   00:06    
sftp> put wireless-7.15-mipsbe.npk 
Uploading wireless-7.15-mipsbe.npk to /wireless-7.15-mipsbe.npk
wireless-7.15-mipsbe.npk                      100% 1500KB   1.5MB/s   00:00    
sftp> put lte-7.15-mipsbe.npk 
Uploading lte-7.15-mipsbe.npk to /lte-7.15-mipsbe.npk
lte-7.15-mipsbe.npk                                                                100% 1944KB   1.5MB/s   00:01 
sftp> quit

Закачанные пакеты появятся в системе после перезагрузки маршрутизатора:

[stupin@rb951] > /system reboot 
Reboot, yes? [y/N]: 
y
system will reboot shortly

После перезагрузки можно увидеть, что в системе появились новые пакеты, а имевшиеся ранее обновились:

[stupin@rb951] > /system package print 
Columns: NAME, VERSION, BUILD-TIME, SIZE
# NAME      VERSION  BUILD-TIME           SIZE     
0 routeros  7.15     2024-05-29 12:44:08  10.1MiB  
1 lte       7.15     2024-05-29 12:44:08  1944.1KiB
2 wireless  7.15     2024-05-29 12:44:08  1500.1KiB

Установленные в систему пакеты можно отключать с помощью следующей команды:

[stupin@rb951] > /system package disable lte 

Если после отключения пакета посмотреть список установленных пакетов, то можно увидеть, что пакет не отключен, а его отключение только запланировано:

[stupin@rb951] > /system package print 
Columns: NAME, VERSION, SCHEDULED, BUILD-TIME
# NAME      VERSION  SCHEDULED              BUILD-TIME         
0 routeros  7.15                            2024-05-29 12:44:08
1 lte       7.15     scheduled for disable  2024-05-29 12:44:08
2 wireless  7.15                            2024-05-29 12:44:08

Отключение пакета произойдёт только после перезагрузки маршрутизатора. После перезагрузки отключенные пакеты будут обозначены буквой X:

[stupin@rb951] > /system package print
Flags: X - DISABLED
Columns: NAME, VERSION, BUILD-TIME, SIZE
#   NAME      VERSION  BUILD-TIME           SIZE     
0   routeros  7.15     2024-05-29 12:44:08  10.1MiB  
1 X lte       7.15     2024-05-29 12:44:08  1944.1KiB
2   wireless  7.15     2024-05-29 12:44:08  1500.1KiB

Включить отключенный пакет можно с помощью такой команды:

[stupin@rb951] > /system package enable lte 

Так же, как и в случае отключения, включение пакета тоже будет отложено до перезагрузки маршрутизатора:

[stupin@rb951] > /system package print 
Flags: X - DISABLED
Columns: NAME, VERSION, SCHEDULED, BUILD-TIME
#   NAME      VERSION  SCHEDULED             BUILD-TIME         
0   routeros  7.15                           2024-05-29 12:44:08
1 X lte       7.15     scheduled for enable  2024-05-29 12:44:08
2   wireless  7.15                           2024-05-29 12:44:08

Режимы работы маршрутизатора

Маршрутизатор может работать в одном из двух режимов:

  • enterprise - промышленный,
  • home - домашний.

Для просмотра текущего режима предусмотрена команда:

[stupin@rb951] > /system device-mode print    
  mode: enterprise

По умолчанию используется промышленный режим, в котором запрещены только функции контейнеризации - container.

В домашнем режиме запрещены функции scheduler, socks, fetch, bandwidth-test, traffic-gen, sniffer, romon, proxy, hotspot, email, zerotier, container.

Для изменения режима предусмотрена команда:

[stupin@rb951] > /system device-mode update mode=home 
  update: please activate by turning power off or pressing reset or mode 
          button in 4m38s
-- [Q quit|D dump|C-z pause]

Но выполнение команды нужно подтвердить кратковременным нажатием кнопки RES на самом маршрутизаторе в течение 5 минут. После подтверждения маршрутизатор перезагружается. Если подтверждения не поступит, команда будет отменена.

Для изменения списка функций, доступных в режимах, предусмотрены команды следующего вида:

[stupin@rb951] > /system device-mode update mode=home email=yes
      update: please activate by turning power off or pressing reset or mode 
              button in 4m38s
    -- [Q quit|D dump|C-z pause]

[stupin@rb951] > /system device-mode update mode=enterprise zerotier=no
      update: please activate by turning power off or pressing reset or mode 
              button in 4m38s
    -- [Q quit|D dump|C-z pause]

Выполнение таких команд тоже нужно подтвердить кратковременным нажатием кнопки RES на маршрутизаторе до истчения 5 минутного интевала, после которого выполнение команды будет отменено.

Если после перезагрузки посмотреть режим работы маршрутизатора, то будет видно, что кроме строки режима в выводе команды появится дополнительная строчка с состоянием функции, отключенной (или включенной) по сравнению с функциями, разрешёнными выбранным режимом:

[stupin@rb951] > /system device-mode print
   mode: home
  email: yes

Если в конфигурации при загрузке были обнаружено использование отключенных функций, то отключенные функции не будут работать, а при попытке их использования будет выводиться ошибка вида:

failure: configuration flagged, check all router configuration for unauthorized changes and update device-mode

При этом в выводе команды просмотра режима устройства появится дополнительное поле flagged со значением yes, говорящее о том, что конфигурация устройства нарушает наложенные ограничения.

Включение флага является признаком возможного взлома. Необходимо проверить всю конфигурацию маршрутизатора на предмет появления непредусмотренных изменений.

Если в конфигурации не найдено признаков постороннего вмешательства, то флаг можно сбросить с помощи следующей команды:

[stupin@rb951] > /system device-mode update flagged=no

При этом потребуется подтвердить выполнение команды кратковременным нажатием на кнопку RES на корпусе маршрутизатора. После загрузки маршрутизатора флаг будет сброшен.

Настройка начальных сведений о маршрутизаторе

Посмотреть текущее имя маршрутизатора можно следующим образом:

[stupin@MikroTik] > /system identity print 
  name: MikroTik

Поменять это имя можно с помощью такой команды:

[stupin@MikroTik] > /system identity set name=rb951

Это же имя будет выдаваться по SNMP в качестве значения OID'а .1.3.6.1.2.1.1.5.0 - .sysName.0.

Настройка контактов сетевого администратора;

[stupin@rb951] > /snmp set contact=vladimir@stupin.su

Это же значение будет выдаваться по SNMP в качестве значения OID'а .1.3.6.1.2.1.1.4.0 - .sysContact.0.

Настройка местоположения устройства:

[stupin@rb951] > /snmp set location="Ufa"

Это же значение будет выдаваться по SNMP в качестве значения OID'а .1.3.6.1.2.1.1.6.0 - .sysLocation.0.

Посмотреть значения контактов сетевого администратора и местоположения устройства, настроенные последними двумя командами, можно следующим образом:

[stupin@rb951] > /snmp print 
           enabled: yes
           contact: vladimir@stupin.su
          location: Ufa
  engine-id-suffix: 
         engine-id: 80003a8c04
       src-address: ::
       trap-target: 
    trap-community: public
      trap-version: 1
   trap-generators: temp-exception
               vrf: main

Настройка пользователей и паролей

Просмотр существующих пользователей:

[admin@MikroTik] > /user print
Flags: X - disabled 
 #   NAME           GROUP          ADDRESS            LAST-LOGGED-IN      
 0   stupin         full                              jan/01/2002 01:07:32

Добавление нового пользователя:

[admin@MikroTik] > /user add name=stupin password=p4$$w0rd group=full

В качестве группы можно указать одну из существующих: read - чтение, write - запись или full - полные права. В приведённом выше примере мы создаём администратора с полными правами доступа.

Удаление существующего пользователя (очень рекомендуется удалить пользователя по умолчанию admin):

[admin@MikroTik] > /user remove admin

Поменять пароль текущего пользователя можно с помощью команды:

[admin@MikroTik] > /password

Поменять пароль любого пользователя можно, указав его номер и новый пароль в команде следующего вида:

[admin@MikroTik] > /user set 0 password="!={Ba3N!40TуX+GvKBzjTLIUcx/,"

Просмотр состояния портов и интерфейсов

Посмотреть полный список портов и логических интерфейсов можно с помощью такой команды:

[stupin@rb951] > /interface print 
Flags: R - RUNNING; S - SLAVE
Columns: NAME, TYPE, ACTUAL-MTU, L2MTU, MAX-L2MTU, MAC-ADDRESS
 #    NAME         TYPE       ACTUAL-MTU  L2MTU  MAX-L2MTU  MAC-ADDRESS      
 0 RS ether1       ether            1500   1598       2028  CC:2D:E0:CB:84:C1
 1  S ether2       ether            1500   1598       2028  CC:2D:E0:CB:84:C2
 2  S ether3       ether            1500   1598       2028  CC:2D:E0:CB:84:C3
 3 RS ether4       ether            1500   1598       2028  CC:2D:E0:CB:84:C4
 4  S ether5       ether            1500   1598       2028  CC:2D:E0:CB:84:C5
 5 RS wifi1        wlan             1500   1600       2290  CC:2D:E0:CB:84:C6
 6 R  domru        vlan             1500   1594             CC:2D:E0:CB:84:C1
 7 R  domru-pppoe  pppoe-out        1492                                     
 8 R  lan          bridge           1500   1598             CC:2D:E0:CB:84:C1
 9 R  lo           loopback        65536                    00:00:00:00:00:00
10 R  ufanet       vlan             1500   1594             CC:2D:E0:CB:84:C1
11 R  wifi         vlan             1500   1594             CC:2D:E0:CB:84:C1

Активные порты помечены буквой R. Порты, входящие в состав логического интерфейса, помечены буквой S.

В колонке TYPE выводится тип порта или интерфейса. Порты с типом ether мы посмотрели предыдущей командой. Ниже можно найти команды для просмотра портов типа vlan и bridge.

Посмотреть состояние портов Ethernet можно с помощью следующей команды:

[stupin@rb951] > /interface ethernet print
Flags: R - RUNNING; S - SLAVE
Columns: NAME, MTU, MAC-ADDRESS, ARP, SWITCH
#    NAME     MTU  MAC-ADDRESS        ARP      SWITCH 
0    ether1  1500  CC:2D:E0:CB:84:C1  enabled  switch1
1 RS ether2  1500  CC:2D:E0:CB:84:C2  enabled  switch1
2  S ether3  1500  CC:2D:E0:CB:84:C3  enabled  switch1
3  S ether4  1500  CC:2D:E0:CB:84:C4  enabled  switch1
4  S ether5  1500  CC:2D:E0:CB:84:C5  enabled  switch1

Настройка интерфейсов VLAN

Для просмотра списка VLAN-интерфейсов маршрутизатора можно воспользоваться такой командой:

[stupin@rb951] > /interface vlan print
Columns: NAME, MTU, ARP, VLAN-ID, INTERFACE
# NAME           MTU  ARP      VLAN-ID  INTERFACE
0 domru         1500  enabled        4  lan   
1 wifi          1500  enabled        5  lan   
2 ufanet        1500  enabled        3  lan

Приведённые выше VLAN на портах были настроены с помощью следующих команд:

[stupin@rb951] > /interface vlan add name=ufanet interface=ether1 vlan-id=3
[stupin@rb951] > /interface vlan add name=domru interface=ether1 vlan-id=4
[stupin@rb951] > /interface vlan add name=wifi interface=ether1 vlan-id=5

Для удаления интерфейса можно воспользоваться командой следующего вида:

[stupin@rb951] > /interface vlan remove wifi

Настройка мостовых интерфейсов

Для просмотра портов, входящих в состав мостовых интерфейсов, можно воспользоваться такой командой:

[stupin@rb951] > /interface bridge port print 
Flags: I - INACTIVE; H - HW-OFFLOAD
Columns: INTERFACE, BRIDGE, HW, PVID, PRIORITY, HORIZON
#    INTERFACE  BRIDGE  HW   PVID  PRIORITY  HORIZON
0  H ether1     lan     yes     1  0x80      none   
1 IH ether2     lan     yes     1  0x80      none   
2 IH ether3     lan     yes     1  0x80      none   
3  H ether4     lan     yes     1  0x80      none   
4 IH ether5     lan     yes     1  0x80      none   
5    wifi1      lan             1  0x80      none

Неактивные порты помечены буквой I, а порты, для которых имеется поддержка аппаратной коммутации пакетов, отмечены буковй H (та же самая информация дублируется в поле HW). В поле PVID указана метка VLAN, которая назначается пакетам, не имеющим метки.

Для создания нового мостового интерфейса с именем lan можно воспользоваться такой командой:

[stupin@rb951] > /interface bridge add name=lan

Добавить в этот интерфейс порты можно следующим образом:

[stupin@rb951] > /interface bridge port add interface=ether2 bridge=lan

Для удаления портов из мостового интерфейса нужно указать номера строк в таблице, которую выводит команда /interface bridge port print:

[stupin@rb951] > /interface bridge port remove numbers=3,2,1

Для удаления самого мостового интерфейса можно воспользоваться такой командой:

[stupin@rb951] > /interface bridge remove bridge

Однако, будьте внимательны - постарайтесь не удалять мостовой интерфейс, в котором есть порты, помому что в дальнейшем такой порт нельзя будет добавить в другой мостовой интерфейс:

[stupin@rb951] > /interface bridge port add interface=ether2 bridge=lan 
failure: device already added as bridge port

Если это всё же случилось, то можно посмотреть порты, добавленные в какие-либо мостовые интерфейсы следующим образом:

[stupin@rb951] > /interface bridge port print 
Flags: I - INACTIVE; H - HW-OFFLOAD
Columns: INTERFACE, BRIDGE, HW, PVID, PRIORITY, HORIZON
#    INTERFACE     BRIDGE  HW   PVID  PRIORITY  HORIZON
;;; defconf
0 I  ether2        *7              1  0x80      none   
1 I  ether1        lan             1  0x80      none   
2  H ether3        lan     yes     1  0x80      none   
3 IH ether4        lan     yes     1  0x80      none   
4 IH ether5        lan     yes     1  0x80      none   

Из таблицы можно увидеть, что порт ether2 состоит в мостовом интерфейсе *7, соответствующем удалённому ранее мостовому интерфейсу. Чтобы удалить порт из удалённого мостового интерфейса, можно воспользоваться такой командой:

[stupin@rb951] > /interface bridge port remove numbers=0

Настройка VLAN на коммутируемых портах

Настройка VLAN на коммутируемых портах зависит от модели маршрутизатора и имеющихся в нём микросхем коммутации.

CRS1xx/CRS2xx не поддерживают аппаратную фильтрацию VLAN на коммутируемых портах, а для настройки функций VLAN нужно использовать команды группы /interface ethernet switch.

CRS3xx поддерживают аппаратную фильтрацию VLAN на коммутируемых портах, а для настройки VLAN нужно использовать команды групп /interface bridge vlan и /interface bridge port. Часть функций, такие как ACL и QoS, настраиваются командами группы /interface ethernet switch.

На остальных устройствах, имеющих микросхему коммутации, нужно сначала объединить порты с помощью команд группы /interface bridge port, а затем настроить VLAN с помощью команд группы /interface ethernet switch.

На странице Bridging and Switching / Switch Chip Features / Intorduction есть таблица моделей устройств, из которой по модели маршрутизатора можно определить микросхему коммутации, отвечающую за порты устройства. Так, в маршрутизаторе модели RB951Ui-2nD за коммутацию портов ether1-ether5 отвечает микросхема Atheros8227. Также микросхему коммутации, если она есть, можно узнать с помощью команды:

[stupin@rb951] > /interface ethernet switch print 
Columns: NAME, TYPE
# NAME     TYPE        
0 switch1  Atheros-8227

Определить, имеется ли аппаратная поддержка VLAN на коммутируемых портах, можно с помощью таблицы моделей микросхем на той же странице Bridging and Switching / Switch Chip Features / Intorduction. Из строки Vlan table таблицы видно, что микросхема коммутации Atheros8227 поддерживает таблицу коммутации размером 4096 VLAN.

Для управления маршрутизатором через сеть VLAN нужно настроить интерфейс VLAN на мостовом интерфейсе. Для управления тем, какие VLAN будут доходить до мостового интерфейса, используется виртуальный порт switch1-cpu.

Создадим мостовой интерфейс, как это уже было описано в разделе о настройке мостовых интерфейсов:

[stupin@rb951] > /interface bridge add name=lan

Добавим порты в этот мостовой интерфейс:

[stupin@rb951] > /interface bridge port add bridge=lan interface=ether1
[stupin@rb951] > /interface bridge port add bridge=lan interface=ether2
[stupin@rb951] > /interface bridge port add bridge=lan interface=ether3
[stupin@rb951] > /interface bridge port add bridge=lan interface=ether4
[stupin@rb951] > /interface bridge port add bridge=lan interface=ether5
[stupin@rb951] > /interface bridge port add bridge=lan interface=wifi1

Теперь добавим интерфейсы VLAN в мостовой интерфейс:

[stupin@rb951] > /interface vlan add name=ufanet interface=lan vlan-id=3
[stupin@rb951] > /interface vlan add name=domru interface=lan vlan-id=4
[stupin@rb951] > /interface vlan add name=ubiquiti interface=lan vlan-id=5

И теперь можно приступить к настройке коммутации. Сначала добавим VLAN'ы на порты микросхемы коммутации:

[stupin@rb951] > /interface ethernet switch vlan add switch=switch1 vlan-id=0 ports=switch1-cpu,ether1,ether2,ether3,ether4,ether5
[stupin@rb951] > /interface ethernet switch vlan add switch=switch1 vlan-id=3 ports=switch1-cpu,ether1
[stupin@rb951] > /interface ethernet switch vlan add switch=switch1 vlan-id=4 ports=switch1-cpu,ether1
[stupin@rb951] > /interface ethernet switch vlan add switch=switch1 vlan-id=5 ports=switch1-cpu,ether1

Затем настроим режим работы каждого из портов:

[stupin@rb951] > /interface ethernet switch port set switch1-cpu default-vlan-id=0 vlan-mode=secure vlan-header=leave-as-is
[stupin@rb951] > /interface ethernet switch port set ether1 default-vlan-id=0 vlan-mode=secure vlan-header=leave-as-is
[stupin@rb951] > /interface ethernet switch port set ether2 default-vlan-id=0 vlan-mode=secure vlan-header=always-strip
[stupin@rb951] > /interface ethernet switch port set ether3 default-vlan-id=0 vlan-mode=secure vlan-header=always-strip
[stupin@rb951] > /interface ethernet switch port set ether4 default-vlan-id=0 vlan-mode=secure vlan-header=always-strip
[stupin@rb951] > /interface ethernet switch port set ether5 default-vlan-id=0 vlan-mode=secure vlan-header=always-strip

Поле vlan-mode управляет режимом обработки пакетов в зависимости от наличия или отсутствия метки VLAN на входе в порт. Если на порту нужно принимать пакеты без меток, то выбор ограничен двумя вариантами:

  • disabled - пропускать пакеты независимо от наличия и значения метки,
  • fallback - пропустить пакеты без меток и с метками, которых нет в таблице VLAN. Пакеты с метками, найденными в таблице VLAN, пропускать только если в таблице есть выходной порт для этой VLAN.

Если же порт не должен принимать пакеты без меток, то есть два варианта:

  • check - отбрасывать пакеты без меток, а пакеты с метками пропускать только если они есть в таблице VLAN и есть выходной порт для этой VLAN,
  • secure - отбрасывать пакеты без меток, а пакеты с метками пропускать только если они есть в таблице VLAN и для них есть и входной и выходной порт.

Поле vlan-header управляет режимом обработки пакетов в зависимости от наличия или отсуствия метки VLAN на выходе из порта:

  • add-if-missing - к пакетам без метки добавляется метка по умолчанию, указанная в поле default-vlan-id, на выход уходят только пакеты с метками, используется для транк-портов,
  • always-strip - перед выходом из порта с пакета удаляется метка, значение для портов доступа,
  • leave-as-is - отправить пакет, не добавляя и не удаляя метку VLAN, значение для гибридных портов.

VLAN с номерами 2-4094 можно без ограничений использовать на транковых портах и на портах доступа в любых сочетаниях. VLAN с номером 1 не стоит использовать, поскольку некоторое сетевое оборудование воспринимает такие пакеты как пакеты без метки. А вот при желании использовать гибридные порты нужно учитывать ряд ограничений микросхемы коммутации Atheros8227.

Как можно заметить, среди возможных значений поля vlan-header нет значения типа strip-if-default. Из-за этого через гибридный порт можно отправить пакеты без метки только в том случае, если они были приняты без метки на другом порту или были сформированы прямо на мостовом интерфейсе маршрутизатора.

Порты могут принимать пакеты без меток только если поле vlan-mode имеет значение disabled или fallback. Оба эти режима подразумевают, что пакеты без меток и с неизвестными метками будут доходить до выхода из всех остальных портов, в том числе до порта switch1-cpu, делая возможной ситуацию, в которой маршрутизатор будет вынужден принимать пакеты, которые он вынужден будет просто отбросить. Чтобы всё-таки фильтровать пакеты, можно прибегнуть к трюку и использовать в таблице коммутации VLAN с номером 0. Пакеты с этим номером VLAN на выходе гибридных портов будут интерпретироваться как пакеты без метки, но имеющие отмеченный приоритет обслуживания - пакеты формата 802.1Q с нулевым значением VLAN интерпретируются как пакеты формата 802.1p. Таким образом можно будет исключить коммутацию паразитного трафика, но на гибридных портах можно будет использовать только одну VLAN - нулевую, а связать её можно будет только с портами доступа с нулевой VLAN.

На микросхемах коммутации моделей QCA8337 и Atheros8327 в поле vlan-header всегда используется значение leave-as-is, а нужно ли снять метку перед отправкой пакета, определяется по значению поля default-vlan-id, поэтому указывать это поле на транк-порта не нужно. К сожалению это не наш случай.

Для просмотра таблицы коммутации на микросхеме коммутации можно воспользоваться следующей командой:

[stupin@rb951] > /interface/ethernet/switch/host/print 
Flags: D - DYNAMIC
Columns: SWITCH, MAC-ADDRESS, PORTS, TIMEOUT, DROP, MIRROR
#   SWITCH   MAC-ADDRESS        PORTS        TIMEOUT  DROP  MIRROR
0 D switch1  6C:71:D9:59:58:28  switch1-cpu  1m       no    no    
1 D switch1  CC:2D:E0:CB:84:C4  switch1-cpu  3m       no    no    
2 D switch1  34:1C:F0:E9:7F:6E  switch1-cpu  2m30s    no    no    
3 D switch1  CC:2D:E0:CB:84:C1  switch1-cpu  3m30s    no    no    
4 D switch1  E4:8D:8C:D6:C2:13  ether1       3m30s    no    no    
5 D switch1  60:A4:4C:0A:6E:3D  ether4       3m30s    no    no

Посмотреть таблицу коммутации, видимую со стороны маршрутизтора через порт микросхемы коммутации switch1-cpu, можно следующим образом:

[stupin@rb951] > /interface/bridge/host/print 
Flags: D - DYNAMIC; L - LOCAL; E - EXTERNAL
Columns: MAC-ADDRESS, ON-INTERFACE, BRIDGE
#     MAC-ADDRESS        ON-INTERFACE  BRIDGE
0 D   34:1C:F0:E9:7F:6E  wifi1         lan   
1 D E 60:A4:4C:0A:6E:3D  ether4        lan   
2 D   6C:71:D9:59:58:28  wifi1         lan   
3 DL  CC:2D:E0:CB:84:C1  lan           lan   
4 DL  CC:2D:E0:CB:84:C4  ether4        lan   
5 DL  CC:2D:E0:CB:84:C6  wifi1         lan   
6 D E E4:8D:8C:D6:C2:13  ether1        lan   

Настройка точки доступа WiFi

Сначала настраиваем профиль безопасности - алгоритм аутентификации и другие настройки для выбранного алгоритма. В приведённом ниже примере настраивается аутентификация с использованием общего ключа и указывается сам этот ключ:

[stupin@rb951] > /interface wireless security-profiles add name="wifi-profile" mode=dynamic-keys authentication-types=wpa2-psk wpa2-pre-shared-key="p4$$w0rd"

Для просмотра краткого списка профилей (по умолчанию выводится подробности со значениями всех настроенных опций) можно воспользоваться следующей командой:

[stupin@rb951] > /interface wireless security-profiles print brief 
Flags: * - DEFAULT
Columns: NAME, MODE
#   NAME     MODE        
0 * default  none        
1   wlan     dynamic-keys

Профиль по умолчанию невозможно удалить. Для удаления других профилей можно воспользоваться командой с указанием номера удаляемого профиля из таблицы, выведенной предыдущей командой:

[stupin@rb951] > /interface wireless security-profiles remove numbers=1

Включаем WiFi-интерфейс:

[stupin@rb951] > /interface wireless enable wlan1

Для просмотра списка настроенных беспроводных интерфейсов можно воспользоваться командой:

[stupin@rb951] > /interface wireless print 
Flags: X - disabled; R - running 
 0    name="wlan1" mtu=1500 l2mtu=1600 mac-address=CC:2D:E0:CB:84:C6 arp=enabled 
      interface-type=Atheros AR9300 mode=ap-bridge ssid="stupin.su" frequency=auto band=2ghz-b/g/n 
      channel-width=20/40mhz-Ce secondary-frequency="" scan-list=default wireless-protocol=802.11 
      vlan-mode=no-tag vlan-id=1 wds-mode=disabled wds-default-bridge=none wds-ignore-ssid=no 
      bridge-mode=enabled default-authentication=yes default-forwarding=yes default-ap-tx-limit=0 
      default-client-tx-limit=0 hide-ssid=no security-profile=wifi-profile compression=no

Удалить интерфейс из этого списка нельзя, поскольку это аппаратный интерфейс. Однако его можно отклюить с помощью одной из команд:

[stupin@rb951] > /interface wireless disable wlan1
[stupin@rb951] > /interface wireless disable numbers=0

Настроим саму точку доступа, указав интерфейс, профиль безопасности, режим работы, идентификатор и настройки выбора частоты:

[stupin@rb951] > /interface wireless set wlan1 band=2ghz-b/g/n channel-width=20/40mhz-Ce distance=indoors mode=ap-bridge ssid=stupin.su wireless-protocol=802.11 security-profile=wifi-profile frequency-mode=regulatory-domain country=russia3 frequency=auto

Переименовать интерфейс можно следующим образом:

[stupin@rb951] > /interface wireless set wlan1 name=wifi1

Если предполагается добавить интерфейс точки доступа в мостовой интерфейс, который был описан выше, может понадобиться назначить интерфейсу метку VLAN:

[stupin@rb951] > /interface/wireless/set wifi1 vlan-id=5 vlan-mode=use-tag

Для просмотра зарегистрированных на точке доступа клиентов можно воспользоваться следующей командой:

[stupin@rb951] > /interface wireless registration-table print 
Columns: INTERFACE, MAC-ADDRESS, AP, SIGNAL-STRENGTH, TX-RATE, UPTIME
#  INTERFACE  MAC-ADDRESS        AP  SIGNAL-STRENGTH  TX-RATE               UPTIME
0  wifi1      6C:71:D9:59:58:28  no  -39dBm@HT40-7    150Mbps-40MHz/1S/SGI  11m18s
1  wifi1      34:1C:F0:E9:7F:6E  no  -45dBm@1Mbps     300Mbps-40MHz/2S/SGI  9m16s 

Настройка IP-адреса, шлюза и статических маршрутов

Для настройки IP-адреса на интерфейсе можно воспользоваться такой командой:

[stupin@rb951] > /ip address add address=192.168.254.1/24 interface=lan

Или то же самое можно сделать с указанием полной маски, а не длины префикса:

[stupin@rb951] > /ip address add address=192.168.254.1 netmask=255.255.255.0 interface=lan

Для удаления IP-адреса нужно сначала посмотреть список настроенных IP-адресов на интерфейсах маршрутизатора:

[stupin@rb951] > /ip address print 
Flags: D - DYNAMIC
Columns: ADDRESS, NETWORK, INTERFACE
#   ADDRESS           NETWORK        INTERFACE  
0   192.168.254.1/24  192.168.254.0  lan        
1   192.168.253.1/24  192.168.253.0  wifi       
2 D 192.168.90.2/24   192.168.90.0   ufanet     
3 D 192.168.89.2/32   192.168.89.1   domru-pppoe

Затем IP-адрес можно удалить, указав его номер в таблице:

[stupin@rb951] > /ip address remove numbers=1

Настройка клиента PPPoE

Для настройки PPPoE-клиента можно воспользоваться такой командой:

[stupin@rb951] > /interface pppoe-client add name="pppoe-domru" interface=domru disabled=no user="pppoe-user" password="pppoe-p4$$w0rd" add-default-route=yes default-route-distance=1 use-peer-dns=yes

Для просмотра настроенных PPPoE-клиентов можно воспользоваться такой командой:

[stupin@rb951] > /interface pppoe-client print
Flags: X - disabled, I - invalid; R - running 
 0    name="domru-pppoe" max-mtu=auto max-mru=auto mrru=disabled 
      interface=domru user="pppoe-user" password="pppoe-p4$$w0rd" profile=default 
      keepalive-timeout=10 service-name="" ac-name="" add-default-route=yes 
      default-route-distance=1 dial-on-demand=no use-peer-dns=yes 
      allow=pap,chap,mschap1,mschap2 

Удалить настройки клиента можно, указав в следующей команде его номер из таблицы:

[stupin@rb951] > /interface pppoe-client remove numbers=0

Настройка клиента DHCP

Для настройка DHCP-клиента можно воспользоваться следующей командой:

[stupin@rb951] > /ip dhcp-client add interface=ufanet disabled=no add-default-route=yes default-route-distance=2 use-peer-dns=yes

Для просмотра настроенных DHCP-клиентов можно воспользоваться следующей командой:

[stupin@rb951] > /ip dhcp-client print 
Columns: INTERFACE, USE-PEER-DNS, ADD-DEFAULT-ROUTE, STATUS, ADDRESS
# INTERFACE  USE-PEER-DNS  ADD-DEFAULT-ROUTE  STATUS  ADDRESS        
0 ufanet     yes           yes                bound   192.168.90.2/24

Для удаления DHCP-клиента нужно указать в приведённой ниже команде номер из таблицы выше:

[stupin@rb951] > /ip dhcp-client remove numbers=0

Настройка сервера DHCP

Для будущего DHCP-сервера нужно создать именованные диапазоны IP-адресов, из которых он сможет выдавать настройки клиенту:

[stupin@rb951] > /ip pool add name=lan-pool ranges=192.168.254.128-192.168.254.254

Для просмотра именованных диапазонов IP-адресов можно воспользоваться следующей командой:

[stupin@rb951] > /ip pool print 
Columns: NAME, RANGES
#  NAME       RANGES                         
0  lan-pool   192.168.254.128-192.168.254.254
1  wifi-pool  192.168.253.128-192.168.253.254

Для удаления именованных диапазонов IP-адресов нужно указать их номера из вывода приведённой выше команды в команде следующего вида:

[stupin@rb951] > /ip pool remove numbers=0

Для настройки самого сервера нужно указать интерфейс, на котором он будет ожидать входящие запросы и пул IP-адресов, из которого он будет выдавать адреса клиентам:

[stupin@rb951] > /ip dhcp-server add name=lan-dhcp-server interface=lan server-address=192.168.254.1 address-pool=lan-pool

Настроенные DHCP-серверы можно просмотреть с помощью следующей команды:

[stupin@rb951] > /ip dhcp-server print        
Columns: NAME, INTERFACE, ADDRESS-POOL, LEASE-TIME
# NAME              INTERFACE  ADDRESS-POOL  LEASE-TIME
0 lan-dhcp-server   lan        lan-pool      30m       
1 wifi-dhcp-server  wifi       wifi-pool     30m     

Для удаления настроенного DHCP-сервера можно указать его номер из таблицы, выведенной приведённой выше командой, команде такого вида:

[stupin@rb951] > /ip dhcp-server remove numbers=0

Кроме IP-адресов DHCP-сервер может выдавать и другие настройки. Дополнительные настройки выбираются по соответствию выданного IP-адреса определённой сети. Для сопоставления настроек IP-сети можно воспользоваться следующей командой:

[stupin@rb951] > /ip dhcp-server network add address=192.168.254.0/24 domain=lo.stupin.su dns-none=no dns-server=192.168.254.1 gateway=192.168.254.1 ntp-server=192.168.254.1

Для просмотра сетей можно воспользоваться командой следующего вида:

[stupin@rb951] > /ip dhcp-server network print 
Columns: ADDRESS, GATEWAY, DNS-SERVER, DOMAIN
# ADDRESS           GATEWAY        DNS-SERVER     DOMAIN      
0 192.168.253.0/24  192.168.253.1  192.168.253.1  wi.stupin.su
1 192.168.254.0/24  192.168.254.1  192.168.254.1  lo.stupin.su

Для удаления сетей можно указать номер удаляемой сети из вывода вышеприведённой команды в команде, указанной ниже:

[stupin@rb951] > /ip dhcp-server network remove numbers=0

Постоянные IP-адреса для DHCP-клиентов

Посмотреть выданные в настоящее время в аренду адреса можно с помощью команды:

[stupin@rb951] > /ip dhcp-server lease print                       
Flags: D - DYNAMIC
Columns: ADDRESS, MAC-ADDRESS, HOST-NAME, SERVER, STATUS, LAST-SEEN
 #   ADDRESS          MAC-ADDRESS        HOST-NAME          SERVER  STATUS   LAST-SEEN
 0 D 192.168.254.253  E4:8D:8C:D6:C2:12  MikroTik           lan     bound    10m53s   
 1 D 192.168.254.254  60:A4:4C:0A:6E:3D  asus.wi.stupin.su  lan     bound    2m28s 

Буквами D помечены динамически выданные IP-адреса. Для того, чтобы переделать динамические записи в статические, нужно указать номера этих записей из вывода предыдущей команды в следующей:

[stupin@rb951] > /ip dhcp-server lease make-static numbers=1

Для ручного создания статической записи можно воспользоваться командой следующего вида:

[stupin@rb951] > /ip dhcp-server lease add server=lan use-src-mac=yes mac-address=00:22:15:5D:5D:30 address=192.168.254.3

Для удаления статической записи из таблицы нужно указать её номер приведённой ниже команде:

[stupin@rb951] > /ip dhcp-server lease remove numbers=1

Настройка DNS-записей

Для просмотра DNS-записей, настроенных на маршрутизаторе локально, можно воспользоваться следующей командой:

[stupin@rb951] > /ip dns static print        
Columns: NAME, ADDRESS, TTL
 # NAME                  ADDRESS         TTL
 0 eeepc.lo.stupin.su    192.168.254.3   1d 
 1 asus.lo.stupin.su     192.168.254.4   1d 
 2 dlink.lo.stupin.su    192.168.254.6   1d 
 3 usr.lo.stupin.su      192.168.254.7   1d 
 4 ata1.lo.stupin.su     192.168.254.8   1d 
 5 ata2.lo.stupin.su     192.168.254.9   1d 
 6 bbk1.lo.stupin.su     192.168.254.12  1d 
 7 bbk2.lo.stupin.su     192.168.254.20  1d 
 8 tcl.lo.stupin.su      192.168.254.21  1d 
 9 snr.lo.stupin.su      192.168.254.24  1d 
10 acer.lo.stupin.su     192.168.254.27  1d 
11 huawei.lo.stupin.su   192.168.254.28  1d 
12 hp.lo.stupin.su       192.168.254.29  1d 
13 apc1500.lo.stupin.su  192.168.254.32  1d

Для настройки DNS-записей A-типа можно воспользоваться командами следующего вида:

[stupin@rb951] > /ip dns static add name=acer.lo.stupin.su address=192.168.254.27

Записи других типов настраиваются аналогичным образом с той лишь разницей, что необходимо указать поле типа записи type и значения остальных полей, соответствующих типу записи.

Для удаления записей можно воспользоваться следующей командой, указав ей номер строк из таблицы, подлежащих удалению:

[stupin@rb951] > /ip dns static remove numbers=13

Настройка фильтрации пакетов

Прежде чем перейти к описанию собственно настройки фильтрации пакетов, сначала опишу две полезные функции, которые могут пригодиться при настройке фильтрации пакетов.

Первая функция - это именованные списки адресов и сетей. Например, следующим образом можно создать список ata из двух IP-адресов:

[stupin@rb951] /ip firewall address-list list=ata add address=192.168.254.8
[stupin@rb951] /ip firewall address-list list=ata add address=192.168.254.9

Для просмотра настроенных списков IP-адресов и сетей можно воспользоваться следующей командой:

[stupin@rb951] > /ip firewall address-list print
Columns: LIST, ADDRESS, CREATION-TIME
 # LIST       ADDRESS           CREATION-TIME      
 0 ata        192.168.254.8     2024-06-27 22:45:30
 1 ata        192.168.254.9     2024-06-27 22:45:30
 2 apc        192.168.254.32    2024-06-27 22:45:30
 3 tv         192.168.254.12    2024-06-27 22:45:30
 4 tv         192.168.254.20    2024-06-27 22:45:30
 5 tv         192.168.254.21    2024-06-27 22:45:30

Для просмотра только какого-то одного определённого списка можно воспользоваться командой следующего вида:

[stupin@rb951] > /ip firewall address-list print where list=ata
Columns: LIST, ADDRESS, CREATION-TIME
# LIST  ADDRESS        CREATION-TIME      
0 ata   192.168.254.8  2024-06-27 22:45:30
1 ata   192.168.254.9  2024-06-27 22:45:30

Для удаления адреса из списка нужно указать номер строки, выведенный одной из двух приведённых выше команд, в показанной ниже команде:

[stupin@rb951] > /ip firewall address-list remove numbers=3,4,5

Вторая подобная функция - это именованные списки интерфейсов. Для создания нового списка интерфейсов предназначена команда следующего вида:

[stupin@rb951] > /interface list add name=local-interfaces

Для просмотра списков интерфейсов предусмотрена такая команда:

[stupin@rb951] > /interface list print               
Flags: * - BUILTIN
Columns: NAME
#   NAME            
;;; contains all interfaces
0 * all             
;;; contains no interfaces
1 * none            
;;; contains dynamic interfaces
2 * dynamic         
;;; contains static interfaces
3 * static          
4   local-interfaces

Встроенные списки интерфейсов помечены звёздочкой:

  • all - все интерфейсы,
  • none - пустой список,
  • dynamic - только динамические (например, создаваемые после установки подключений по протоколам PPPoE, PPtP и т.п.),
  • static - только статические (постоянные, не пропадающие при разрыве подключений).

Последним в списке фигурирует добавленный нами интерфейс local-interfaces. Для удаления списков, созданных вручную (не встроенных), можно воспользоваться приведённой ниже командой, указав ей номер строки из предыдущей команды:

[stupin@rb951] > /interface list remove numbers=4

Для добавления интерфейсов в список предусмотрена подкоманда:

[stupin@rb951] > /interface list member add list=local-interfaces interface=lan
[stupin@rb951] > /interface list member add list=local-interfaces interface=wifi

Посмотреть пары "список интерфейсов - интерфейс" можно с помощью такой команды:

[stupin@rb951] > /interface list member print                                   
Columns: LIST, INTERFACE
# LIST              INTERFACE
0 local-interfaces  lan      
1 local-interfaces  wifi  

Для удаления интерфейсов из списков предусмотрена приведённая ниже команда, которой нужно указать номер строки из вывода указанной выше команды:

[stupin@rb951] > /interface list member remove numbers=1

Фильтрация трафика в RouterOS основана на подсистеме netfilter из ядра Linux. Понимание устройства netfilter очень полезно для понимания того, как устроена фильтрация трафика в RouterOS.

Как и в Linux, имеется три таблицы: для проставления отметок пакетов - mangle, для преобразования портов и адресов - nat и собственно для фильтрации трафика - filter. В таблице filter осуществляется фильтрация преобразованного трафика. В таблицах nat и filter в качестве условия действий над пакетом могут использоваться метки, назначенные пакету в таблице mangle.

В таблицах mangle есть цепочки правил PREROUTING, INPUT, OUTPUT, FORWARD, POSTROUTING. В таблицах nat есть цепочки правил PREROUTING, INPUT, OUTPUT, POSTROUTING. В таблице filter есть цепочки INPUT, OUTPUT и FORWARD. Трафик каждой цепочки сначала проходит через таблицу mangle, где пакету может быть назначена метка. Затем трафик проходит через таблицу nat, в которой может быть изменён адрес и/или порт отправителя или адрес и/или порт получателя.

Поступивший извне пакет сначала поступает в цепочку PREROUTING, после чего транзитные пакеты уходят в цепочку FORWARD, а предназначенные самому маршрутизатору поступают в цепочку INPUT. Пакеты из маршрутизатора поступают в цепочку OUTPUT, после чего они наравне с пакетами из цепочки FORWARD проходят через цепочку POSTROUTING и отправляются вовне.

В виде схемы это можно отобразить следующим образом:

-> [ mangle PREROUTING ] -> [nat PREROUTING] -.--------------------------------------> [mangle FORWARD] -----------------------------------------.-> [mangle POSTROUTING] -> [nat POSTROUTING] ->
                                               `-> [mangle INPUT] -> [nat INPUT] -> [локальные приложения] -> [mangle OUTPUT] -> [nat OUTPUT] ->-'

Однако, фильтрация трафика в RouterOS и Linux не идентична - у RouterOS имеется ряд дополнительных функций. Одна из них, списки интерфейсов, уже была описана выше. Другая дополнительная функция - поддержка фильтрации трафика на аппаратном уровне. Первым правилом в каждой цепочке следует добавлять правило, задействующее фильтрацию трафика на аппаратном уровне. Следующее правило сообщает оборудованию об установленных TCP-подключениях и UDP-трафике и относящимся к ним подключениям (как отдельное подключение для передачи данных в протоколе FTP, относящееся к управляющему подключению):

[stupin@rb951] > /ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related

Следующим правилом должно следовать аналогичное правило, пропускающее трафик, относящийся к установленым подключениям, для которого отсутствует поддержка фильтрации на аппаратном уровне:

[stupin@rb951] > /ip firewall filter add chain=forward action=accept connection-state=established,related,untracked

Состояние untracked не имеет аналогов в netfilter из Linux. Под неотслеживаемыми пакетами подразумеваются те, что исключаются системой из обработки фильтром для снижения нагрузки на процессор маршрутизатора.

Далее отбрасывается трафик, не связанный с какими-либо новыми, установленными или относящимся к ним подключениям:

[stupin@rb951] >  /ip firewall filter add chain=forward action=drop connection-state=invalid

После этого правила мы будем иметь дело только со вновь устанавливаемыми подключениями.

Далее можно добавлять в цепочки сосбтвенные правила. По умолчанию любая цепочка пропускает пакеты. Можно прибегнуть к одному из двух способов настройки фильтрации пакетов: - запретить нежелательный трафик, а весь остальной трафик пропускать, либо - разрешить только допустимый трафик, а весь остальной трафик запретить.

Во втором случае последним правилом в цепочке должно быть правило, запрещающее весь остальной трафик:

[stupin@rb951] > /ip firewall filter add chain=forward action=drop

Можно разрешить трафик только на основании IP-адресов отправителя и получателя, а также интерфейсов, не обращая внимания на протокол и номера портов:

[stupin@rb951] > /ip firewall filer add chain=forward action=accept src-address=192.168.253.0/24 dst-address=192.168.254.0/24 in-interface=wifi 
[stupin@rb951] > /ip firewall filer add chain=forward action=accept src-address=192.168.254.0/24 dst-address=192.168.253.0/24 in-interface=lan

Вот так можно фильтрвать трафик в зависимости от протокола, номера порта с использованием именованны списков IP-адресов:

[stupin@rb951] > /ip firewall filer add chain=forward action=accept protocol=tcp src-address-list=laptop_lo in-interface=lan dst-port=21,22,25,53,80,110,143,443,587,993,995,5222,522>
[stupin@rb951] > /ip firewall filer add chain=forward action=accept protocol=udp src-address-list=laptop_lo in-interface=lan dst-port=53,123

Для просмотра списка правил можно воспользоваться следующей командой:

[stupin@rb951] > /ip firewall filter print                                 
Flags: X - disabled, I - invalid; D - dynamic 
 0  D ;;; special dummy rule to show fasttrack counters
      chain=forward action=passthrough 

 1    chain=forward action=fasttrack-connection hw-offload=yes connection-state=established,related 

 2    chain=forward action=accept connection-state=established,related,untracked 

 3    chain=forward action=drop connection-state=invalid 

 4    chain=forward action=accept src-address=192.168.253.0/24 dst-address=192.168.254.0/24 in-interface=wifi 

 5    chain=forward action=accept src-address=192.168.254.0/24 dst-address=192.168.253.0/24 in-interface=lan 

 6    chain=forward action=accept protocol=tcp src-address-list=laptop_wi in-interface=wifi 
      dst-port=21,22,25,53,80,110,143,443,587,993,995,5222,5223 

 7    chain=forward action=accept protocol=udp src-address-list=laptop_wi in-interface=wifi dst-port=53,123 

 8    chain=forward action=accept protocol=tcp src-address-list=laptop_lo in-interface=lan dst-port=21,22,25,53,80,110,143,443,587,993,995,5222,522>

 9    chain=forward action=accept protocol=udp src-address-list=laptop_lo in-interface=lan dst-port=53,123 

10    chain=forward action=accept protocol=tcp src-address-list=phone in-interface=wifi dst-port=21,22,25,53,80,110,143,443,587,993,995,5222,5223 

11    chain=forward action=accept protocol=udp src-address-list=phone in-interface=wifi dst-port=53,123 

12    chain=forward action=accept protocol=tcp src-address-list=tv in-interface=lan dst-port=80,443 

13    chain=forward action=accept protocol=udp src-address-list=tv in-interface=lan dst-port=123 

14    chain=forward action=accept protocol=tcp src-address-list=laptop_lo dst-address-list=minecraft in-interface=lan dst-port=34658 

15    chain=forward action=accept protocol=tcp src-address-list=laptop_wi dst-address-list=minecraft in-interface=wifi dst-port=34658  

16    chain=forward action=accept protocol=tcp src-address-list=phone dst-address-list=minecraft in-interface=wifi dst-port=34658 

17    chain=forward action=drop

К сожалению, нельзя вставить новое правило куда-нибудь в середину таблицы - новое правило всегда попадает в её конец. Но можно изменить порядок правил. Для этого можно воспользоваться командой следующего вида:

[stupin@rb951] > /ip firewall filter move 17 destination=14

Правило под номером 17 будет переставлено в строку, где сейчас находится правило 14, а самое нынешнее правило 14 и следующие за ним будут сдвинуты на одну строку ниже.

Настройка NAT

Рассмотрим настройку только одной разновидности NAT - маскарадинга, подходящего для интерфейсов с IP-адресами, назначаемыми динамически. Для настройки трансляций можно воспользоваться командой следующего вида:

[stupin@rb951] > /ip firewall nat add chain=srcnat action=masquerade out-interface=domru-pppoe

Посмотреть настроенные NAT можно с помощью такой команды:

[stupin@rb951] > /ip firewall nat print             
Flags: X - disabled, I - invalid; D - dynamic 
 0 I  ;;; pppoe-domru not ready
      chain=srcnat action=masquerade out-interface=domru-pppoe

 1    chain=srcnat action=masquerade out-interface=ufanet

Удалить настроенный NAT можно, указав номер строки из предыдущей таблицы, в такой команде:

[stupin@rb951] > /ip firewall nat remove numbers=0

Настройка проброса портов

Для того, чтобы сервис, работающий в локальной сети за NAT, был доступен из внешней сети, можно добавить правило трансляции трафика. Например, чтобы запросы, поступающие на UDP-порт 16124 на интерфейс domru-pppoe перенаправлялись на UDP-порт 161 узла 192.168.254.24 в локальной сети, можно добавить такое правило:

[stupin@rb951] > /ip firewall nat add chain=dstnat action=dst-nat in-interface=domru-pppoe protocol=udp dst-port=16124 to-addresses=192.168.254.24 to-ports=161

Чтобы трансляция осуществлялась только для определённого адреса в сети Интернет, например, 62.177.131.282, можно дополнить правило дополнительным критерием:

[stupin@rb951] > /ip firewall nat add chain=dstnat action=dst-nat in-interface=domru-pppoe src-address=62.177.131.282 protocol=udp dst-port=16124 to-addresses=192.168.254.24 to-ports=161

Если в системе настроена фильтрация пакетов, то нужно разрешить оттранслированный трафик. Например, для указанных выше двух правил трансляции портов, правила фильтрации можно добавить следующим образом соответственно:

[stupin@rb951] > /ip firewall filter add chain=forward action=accept in-interface=domru-pppoe out-interface=lan protocol=udp dst-address=192.168.254.24 dst-port=161

[stupin@rb951] > /ip firewall filter add chain=forward action=accept in-interface=domru-pppoe out-interface=lan src-address=62.177.131.282 protocol=udp dst-address=192.168.254.24 dst-port=161

Для того, чтобы не создавать вручную правила для каждого настроенного проброса порта, можно воспользоваться более универсальным решением и разрешить трафик для всех подключений, для которых имеется запись в таблице трансляций dstnat:

[stupin@rb951] > /ip firewall filter add chain=forward action=accept in-interface=domru-pppoe connection-nat-state=dstnat connection-state=established,related

Настройка NAT-PMP

NAT-PMP или NAT Port Mapping Protocol - это протокол, который позволяет устанавливать связь между приложениями, каждое из которых работает в своей локальной сети, имеющей доступ в Интернет только через маршрутизатор, осуществляющий трансляцию адресов. Протокол позволяет приложению узнать у маршрутизатора внешний IP-адрес маршрутизатора и попросить его выполнить трансляцию порта с внешнего IP-адреса на компьютер в локальной сети, на котором работает это приложение. Соответствующий сервис запущен на маршрутизаторе и принимает запросы от приложений на UDP-порту 5351. Клиенты обращаются к сервису с UDP-порта 5350.

Этот протокол проще, чем UPnP IGD Protocol, поддерживающий аналогичные функции, и в отличие от него стандартизирован как RFC 6886. Протокол поддерживается многими Torrent-клиентами.

Включим NAT-PMP:

[stupin@rb951] > /ip nat-pmp set enabled=yes

Посмотрим состояние сервиса NAT-PMP и убедимся, что он включен:

[stupin@rb951] > /ip nat-pmp print
  enabled: yes

Настроим внутренний интерфейс:

[stupin@rb951] > /ip nat-pmp interfaces add interface=lan type=internal

Настроим внешний интерфейс:

[stupin@rb951] > /ip nat-pmp interfaces add interface=domru-pppoe type=external 

Если попробовать добавить ещё один внешний интерфейс, команда завершится ошибкой:

[stupin@rb951] > /ip/nat-pmp/interfaces/add interface=ufanet type=external
failure: only one external interface can be added to the list

Посмотреть список интерфейсов можно следующим образом:

[stupin@rb951] > /ip nat-pmp interfaces print                            
Columns: INTERFACE, TYPE
# INTERFACE    TYPE    
0 domru-pppoe  external
1 lan          internal
2 wifi         internal

Настройка UPnP

UPnP IGD Protocol или Universal Plug and Play Internet Gateway Device Control Protocol - это протокол, который позволяет устанавливать связь между приложениями, каждое из которых работает в своей локальной сети, имеющей доступ в Интернет только через маршрутизатор, осуществляющий трансляцию адресов. Протокол позволяет приложению узнать у маршрутизатора внешний IP-адрес маршрутизатора и попросить его выполнить трансляцию порта с внешнего IP-адреса на компьютер в локальной сети, на котором работает это приложение. Соответствующий сервис запущен на маршрутизаторе и принимает запросы от приложений на UDP-порту 1900.

Например, этот протокол поддерживается многими приложениями, в числе которых игры, использующие DirectX, и Windows Messenger, который может использовать этот протокол для обмена файлами, совершения голосовых и видеозвонков.

Включим UPnP:

[stupin@rb951] > /ip upnp set enabled=yes

Посмотрим состояние сервиса UPnP и убедимся, что он включен:

[stupin@rb951] > /ip upnp print 
                           enabled: yes
  allow-disable-external-interface: no
                   show-dummy-rule: yes

Настроим внутренние интерфейсы:

[stupin@rb951] > /ip upnp interfaces add interface=lan type=internal         
[stupin@rb951] > /ip upnp interfaces add interface=wifi type=internal 

Настроим внешний интерфейс:

[stupin@rb951] > /ip upnp interfaces add interface=domru-pppoe type=external

Маршрутизатор позволяет указать и другие внешние интерфейсы, однако делать этого я не стал, т.к. активным должен быть только один из них.

Посмотреть список интерфейсов можно следующим образом:

[stupin@rb951] > /ip upnp interfaces print 
Columns: INTERFACE, TYPE
# INTERFACE    TYPE    
0 lan          internal
1 domru-pppoe  external
2 wifi         internal

Настройка SSH, отключение других сервисов

Для просмотра включенных в настоящее время сервисов можно воспользоваться такой командой:

[stupin@rb951] > /ip service print 
Flags: X - DISABLED, I - INVALID
Columns: NAME, PORT, CERTIFICATE, VRF
#   NAME     PORT  CERTIFICATE  VRF 
0 X telnet     23               main
1 X ftp        21                   
2 X www        80               main
3   ssh        22               main
4 X www-ssl   443  none         main
5 X api      8728               main
6 X winbox   8291               main
7 X api-ssl  8729  none         main

Отключенные сервисы обозначены буквой X.

Отключим все сервисы, кроме SSH:

[stupin@rb951] > /ip service disable api,api-ssl,ftp,telnet,winbox,www,www-ssl

Так же в системе имеются и другие сервисы, которые в конфигурации по умолчанию уже выключены. Это сервисы кэширующего прокси-сервера, SOCKS-прокси сервера, сервера UPnP и сервиса DynDNS. Посмотрим их состояние:

[stupin@rb951] > /ip proxy print
                 enabled: no
             src-address: ::
                    port: 8080
               anonymous: no
            parent-proxy: ::
       parent-proxy-port: 0
     cache-administrator: webmaster
          max-cache-size: unlimited
   max-cache-object-size: 2048KiB
           cache-on-disk: no
  max-client-connections: 600
  max-server-connections: 600
          max-fresh-time: 3d
   serialize-connections: no
       always-from-cache: no
          cache-hit-dscp: 4
              cache-path: web-proxy
[stupin@rb951] > /ip socks print
                  enabled: no
                     port: 1080
  connection-idle-timeout: 2m
          max-connections: 200
                  version: 4
              auth-method: none
[stupin@rb951] > /ip upnp print     
                           enabled: no
  allow-disable-external-interface: no
                   show-dummy-rule: yes
[stupin@rb951] > /ip cloud print
          ddns-enabled: no
  ddns-update-interval: none
           update-time: yes

Для их отключения, если они включены, можно воспользоваться следующими командами:

[stupin@rb951] > /ip proxy set enabled=no
[stupin@rb951] > /ip socks set enabled=no
[stupin@rb951] > /ip upnp set enabled=no
[stupin@rb951] > /ip cloud set ddns-enabled=no update-time=no

Настройка часов

Для просмотра текущего времени маршрутизатора предусмотрена команда:

[stupin@rb951] > /system clock print 
                  time: 01:08:26
                  date: 1970-01-05
  time-zone-autodetect: yes
        time-zone-name: manual
            gmt-offset: +00:00
            dst-active: no

Для настройки часов можно использовать следующую команду:

[stupin@rb951] > /system clock set time-zone-name=Asia/Yekaterinburg date="jun/04/2024" time="23:02:30"

В поле месяца используется сокращённое название месяца: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

Похоже, что порядок указания значений важен. Лучше указывать поле часового пояса первым, т.к. при установке даты и времени используется текущий часовой пояс, настроенный в системе, а после изменения текущие дата и время пересчитываются для соответствия новому часовому поясу. Это может привести к неожиданным последствиям.

Вместо преднастроенного часового пояса можно использовать значение manual, которое используется при ручной настройке часового пояса.

Для ручной настройки часового пояса предусмотрена команда:

[stupin@rb951] > /system clock manual set time-zone="+05:00" dst-delta="+01:00" dst-start="2024-03-31 03:00:00" dst-end="2024-10-27 03:00:00" 

Поле time-zone соответствует смещению зимнего времени, поле dst-delta - смещению летнего времени относительно зимнего, а dst-start и dst-end соответствует периоду действия летнего времени.

Для просмотра текущего часового пояса, настроенного в ручном режиме, можно воспользоваться командой следующего вида:

[stupin@rb951] > /system clock manual print
  time-zone: +05:00                                             
  dst-delta: +01:00
  dst-start: 2024-03-31 03:00:00
    dst-end: 2024-10-27 03:00:00

Настройка SNMP

По сравнению с развесистыми функциями настройки SNMP на устройствах других производителей, настройки SNMP-агента довольно скудны: можно настроить общие свойства SNMP-агента и определить несколько сообществ. Сообщества больше похожи на гибрид групп SNMPv1/SNMPv2c, пользователей SNMPv3 и списка контроля доступа из одного элемента. Представления SNMP тут отсутствуют полностью.

Включение SNMP

Для включения агента предусмотрена команда:

[stupin@rb951] > /snmp set enabled=yes

Настройка сообществ SNMP

Для настройки сообществ SNMPv1/SNMPv2c предусмотрены команды следующего вида:

[stupin@rb951] > /snmp community add name=5ecretC0mmunity security=none addresses=62.177.131.282  read-access=yes write-access=no

Для отключения сообщества по умолчанию public выполним такую команду:

[stupin@rb951] > /snmp community set 0 disabled=yes

Настройка пользователей SNMPv3

Для настройки пользователей SNMPv3 предусмотрены команды следующего вида:

[stupin@rb951] > /snmp community add name=mon security=private authentication-protocol=SHA1 authentication-password=Authentic4ti0n5ecret encryption-protocol=AES encryption-password=Encrypti0n$ecret addresses=62.177.131.282 read-access=yes write-access=no

Рассмотрим подробнее назначение параметров команды: * name - название сообщества, используется в SNMPv1/SNMPv2c для проверки прав доступа, одновременно имя пользователя SNMPv3, * security - уровень безопасности SNMPv3: * none - проверяется только имя пользователя, этот же уровень безопасности используется для проверки прав доступа по имени сообщества в SNMPv1/SNMPv2c, * authorized - проверяется также пароль для аутентификации пользователя, * private - дополнительно осуществляется шифрование трафика паролем для шифрования, * authentication-protocol - протокол аутентификации пользователя SNMPv3, поддерживается два значения: MD5 и SHA1, * authentication-password - пароль для аутентификации пользователя SNMPv3, * encryption-protocol - протокол шифрования трафика SNMPv3, поддерживается два значения: DES и AES, * encryption-password - пароль для шифрования трафика SNMPv3, * read-access - разрешение чтения значений, принимает значения yes и no, * write-access - разрешение записи значений, принимает значения yes и no, * address - сеть или IP-адрес узлов, запросы от которых будут обрабатываться агентом.

В строках сообществ и паролях нельзя использовать сивол $, т.к. он воспринимается как признак начала имени переменной. Имя переменной, образованное занком $ и последующими символами будет заменено на значение переменной. Если для переменной не определено значение, то имя переменной по-сути будет просто вырезано из строки.

Просмотр настроек

Посмотреть настройки можно следующим образом:

[stupin@rb951] > /snmp community print
Flags: * - DEFAULT; X - DISABLED
Columns: NAME, ADDRESSES, SECURITY, READ-ACCESS, WRITE-ACCESS
#    NAME             ADDRESSES          SECURITY  READ-ACCESS  WRITE-ACCESS
0 *X public           ::/0               none      yes          no          
1    mon              62.177.131.282/32  private   yes          no          
2    5ecretC0mmunity  62.177.131.282/32  none      yes          no  

Для вывода настроек в подробном режиме можно воспользоваться такой командой:

[stupin@rb951] > /snmp community print detail
Flags: * - default; X - disabled 
 0 *X name="public" addresses=::/0 security=none read-access=yes 
      write-access=no authentication-protocol=MD5 encryption-protocol=DES 
      authentication-password="" encryption-password="" 

 1    name="mon" addresses=62.177.131.282/32 security=private read-access=yes 
      write-access=no authentication-protocol=SHA1 encryption-protocol=AES 
      authentication-password="Authentic4ti0n5ecret" 
      encryption-password="Encrypti0n5ecret" 

 2    name="5ecretC0mmunity" addresses=62.177.131.282/32 security=none
      read-access=yes write-access=no authentication-protocol=MD5
      encryption-protocol=DES authentication-password=""
      encryption-password="" 

Проверка настроек

Для проверки настроек SNMPv1/SNMPv2c с компьютера под управлением Linux можно воспользоваться утилитой snmpget. В операционной системе Debian эта утилита поставляется в составе пакета snmp:

$ snmpget -On -v 1 -c 5ecretC0mmunity rb951.domain.tld .sysName.0
.1.3.6.1.2.1.1.5.0 = STRING: rb951
$ snmpget -On -v 2c -c 5ecretC0mmunity rb951.domain.tld .sysName.0
.1.3.6.1.2.1.1.5.0 = STRING: rb951

Также настройки сообществ SNMPv1/SNMPv2c можно использовать и для опроса маршрутизатора по протоколу SNMPv3:

$ snmpget -On -v 3 -l noAuthNoPriv -u 5ecretC0mmunity rb951.domain.tld .sysName.0
.1.3.6.1.2.1.1.5.0 = STRING: rb951

Проверить настройки полноценного варианта SNMPv3 с аутентификацией и шифрованием можно следующим образом:

$ snmpget -On -v 3 -l authPriv -u mon -a SHA -A Authentic4ti0n5ecret -x AES -X Encrypti0n$ecret rb951.domain.tld .sysName.0
.1.3.6.1.2.1.1.5.0 = STRING: rb951

Инструменты

В этом разделе описаны "инструментальные" команды, не предназначенные для настройки маршрутизатора или просмотра его настроек. Это общеизвестные и привычные в системах типа Unix команды tcpdump, arp, ping, traceroute, ssh.

Прослушивание трафика

При отладке фильтрации трафика бывает нужно узнать, какие подключения пытается установить определённое приложение. Для этого можно воспользоваться функцией прослушивания трафика. Для начала прослушивания трафика предназначена команда следующего вида:

[stupin@rb951] > /tool sniffer start src-ip-address=192.168.253.16 interface=wifi ip-protocol=tcp dst-port=9080,9081

После запуска прослушивания можно посмотреть результаты. Для этого можно воспользоваться одной из двух команд. Первая команда показывает обнаруженные пакеты:

[stupin@rb951] > /tool sniffer packet print 
Columns: TIME, INTERFACE, SRC-ADDRESS, DST-ADDRESS, IP-PROTOCOL, SIZE, CPU
#  TIME    INTERFACE  SRC-ADDRESS           DST-ADDRESS         IP-PROTOCOL  SIZE  CPU
0  19.258  wifi       192.168.253.16:47708  98.111.65.205:9080  tcp            74    0
1  20.27   wifi       192.168.253.16:47708  98.111.65.205:9080  tcp            74    0
2  22.296  wifi       192.168.253.16:47708  98.111.65.205:9080  tcp            74    0
3  26.357  wifi       192.168.253.16:47708  98.111.65.205:9080  tcp            74    0
4  34.59   wifi       192.168.253.16:47708  98.111.65.205:9080  tcp            74    0
5  39.302  wifi       192.168.253.16:39604  98.111.65.201:9080  tcp            74    0
6  40.349  wifi       192.168.253.16:39604  98.111.65.201:9080  tcp            74    0
7  42.335  wifi       192.168.253.16:39604  98.111.65.201:9080  tcp            74    0
8  46.555  wifi       192.168.253.16:39604  98.111.65.201:9080  tcp            74    0

Вторая команда отображает обнаруженные подключения или попытки подключний:

[stupin@rb951] > /tool sniffer connection print 
Flags: A - ACTIVE
Columns: SRC-ADDRESS, DST-ADDRESS, BYTES, RESENDS, MSS
#   SRC-ADDRESS           DST-ADDRESS         BYTES  RESENDS  MSS   
0 A 192.168.253.16:47708  98.111.65.205:9080  0/0    0/0      1460/0
1 A 192.168.253.16:39604  98.111.65.201:9080  859/0  0/0      1460/0
2 A 192.168.253.16:48232  98.111.65.179:9081  49/0   0/0      1460/0

Для прекращения прослушивания трафика предусмотрена такая команда:

[stupin@rb951] > /tool sniffer stop

Просмотр ARP-таблицы

Посмотреть содержимое таблицы ARP можно с помощью следующей команды:

[stupin@rb951] > /ip arp print 
Flags: D - DYNAMIC; C - COMPLETE
Columns: ADDRESS, MAC-ADDRESS, INTERFACE, STATUS
#    ADDRESS         MAC-ADDRESS        INTERFACE  STATUS   
0 DC 192.168.254.4   60:A4:4C:0A:6E:3D  lan        reachable
1 D  192.168.253.2                      wifi       failed   
2 D  192.168.254.2                      lan        failed   
3 DC 192.168.90.1    E4:8D:8C:D6:C2:13  ufanet     reachable
4 D  192.168.253.4   6C:71:D9:59:58:28  wifi       failed   
5 DC 192.168.253.16  34:1C:F0:E9:7F:6E  wifi       reachable

Проверка доступности узла

Для проверки доступности узла по протоколу ICMP предусмотрена общеизвестная команда ping, которая есть разделе tool, но доступна так же и из "корня" дерева команд:

[stupin@rb951] > /ping 98.111.65.201
  SEQ HOST                                     SIZE TTL TIME       STATUS                                       
    0 98.111.65.201                              56  55 41ms669us 
    1 98.111.65.201                              56  55 41ms302us 
    2 98.111.65.201                              56  55 41ms412us 
    3 98.111.65.201                              56  55 41ms199us 
    sent=4 received=4 packet-loss=0% min-rtt=41ms199us avg-rtt=41ms395us max-rtt=41ms669us

Трассировка маршрута

Для трассировки маршрута до указанного узла (получения списка промежуточных маршрутизаторов, проверки их достижимости через общедоступную сеть, оценку потерь и задержек пакетов) можно воспользоваться общеизвестной командой traceroute, которая, как и команда ping, тоже упрятана в разделе tool:

[stupin@rb951] > /tool/traceroute ya.ru
Columns: ADDRESS, LOSS, SENT, LAST, AVG, BEST, WORST, STD-DEV
 #  ADDRESS          LOSS  SENT  LAST     AVG   BEST  WORST  STD-DEV
 1  192.168.90.1     0%      14  0.4ms    0.5   0.4   1.1    0.2    
 2  192.168.31.1     0%      14  0.9ms    0.9   0.8   1.6    0.2    
 3  31.8.20.1        0%      14  3.3ms    4.4   2.4   17.4   3.7    
 4  185.140.151.156  0%      14  2.5ms    2.3   1.8   3.5    0.5    
 5  185.140.148.157  0%      14  20.7ms   20.7  20.5  21.2   0.2    
 6  188.254.94.106   0%      14  24.9ms   22.8  20.7  32.6   3.1    
 7                   100%    14  timeout                            
 8                   100%    14  timeout                            
 9  87.250.239.81    0%      14  28.2ms   31.7  27.4  42.7   5.4    
10                   100%    14  timeout                            
11  77.88.55.242     0%      13  27.3ms   27.3  27.2  27.5   0.1    
-- [Q quit|D dump|C-z pause]

Найти подобный инструмент для трассировки по протоколу TCP мне не удалось, хотя он бывает очень полезен для определения, какой из маршрутизаторов фильтрует трафик.

SSH-клиент

Для подключения по SSH к удалённым серверам можно воспользоваться командой ssh, которая находится в разделе system:

[stupin@rb951] > /system/ssh user=admin address=server.domain.tld
password:
Linux server 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1stupin2 (2023-04-27) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 18 22:52:47 2024 from 62.133.171.228
admin@server:~$

Дополнительные материалы