CLI Cisco / Juniper / MikroTik — одни задачи, три синтаксиса

Концепции сетей одинаковы у всех вендоров (VLAN, OSPF, BGP, ACL — это стандарты). Различается синтаксис и философия CLI. Хороший инженер думает концепциями, а команды подсматривает. Этот модуль — твоя референс-шпаргалка: одна и та же задача показана параллельно на трёх самых частых платформах, плюс навыки выживания в любом незнакомом CLI.

Заявка из очереди

«Заявка #52440. Открываем кассовую зону в филиале „Восток“: добавить VLAN 30 (10.30.0.0/24) и обеспечить его маршрутизацию до ЦО. Внимание: в филиале стоит MikroTik, на агрегации — Cisco, на границе с оператором — Juniper». Одна задача — три железки — три синтаксиса. Реальность большинства сетей в СНГ именно такая: зоопарк. Инженера, который теряется вне Cisco, эта заявка останавливает на день; инженера с концептуальным мышлением — на полчаса. К концу урока ты будешь вторым.

Что узнаешь — после урока ты сможешь
Вспомни из прошлых модулей

Все команды этого урока — это синтаксис для концептов, которые ты уже знаешь: VLAN и trunk — модуль 3, подсети и wildcard-маски — модуль 4, статика и AD — модуль 5, OSPF (area, router-id) — модуль 6, BGP (AS, соседи) — модуль 7, ACL и NAT — модуль 10. Если какой-то концепт забылся — сходи освежить: урок про синтаксис не заменит понимания.

1. Три философии конфигурирования

Cisco IOS

Команды применяются сразу, построчно. Режимы: user → privileged (enable) → global config (conf t). Сохранение — отдельно (write memory). Ошибся — уже в проде.

Juniper Junos

Правишь candidate config, который не активен, пока не сделаешь commit. Можно проверить (commit check), откатить (rollback), даже commit confirmed с авто-откатом. Иерархическая структура, как дерево.

MikroTik RouterOS

Плоская команда-ориентированная модель: /interface, /ip address и т.д. Применяется сразу. Есть и Winbox (GUI), и API. Логика своя, но осваивается быстро.

Главное отличие в одной фразе: Cisco/MikroTik меняют конфиг сразу, Junos — через commit с возможностью отката. Модель Junos (candidate→commit→rollback) — концептуальный предок современного «infrastructure as code».

2. Навыки выживания в незнакомом CLI

Прежде чем зубрить команды — научись их находить. Три приёма работают почти на любой сетевой железке и экономят часы:

Знак вопроса — встроенный справочник
Набери начало команды и ? — CLI покажет возможные продолжения с описаниями. На Cisco/Junos работает в любом месте команды (show ip ?), на MikroTik — двойной Tab или ? в конце. Это главный инструмент в незнакомой системе.
Tab и сокращения
Tab дописывает команду; сокращать можно до уникальности: sh ip int br = show ip interface brief. На собеседованиях и в бою печатают именно так.
Пайпы — фильтруй вывод, а не листай его
Конфиг ядра — тысячи строк. Никто не читает их глазами — фильтруют, как grep в Linux. Таблица ниже.
Cisco IOS
Juniper Junos
MikroTik RouterOS
show run | include bgp show run | section interface show ip route | begin 10.30. # include / exclude / # section / begin
show configuration | match bgp show configuration | display set # display set: дерево -> # плоские set-команды, # удобно копировать
/ip route print where \ dst-address~"10.30." /ip firewall filter print \ where chain=forward # print where = фильтр
Джун листает show running-config постранично и теряет строку. Инженер пишет | include / | match / print where — и получает ровно нужные строки. Это тот же навык, что grep в Linux-треке.

3. База: вход в режим, hostname, сохранение

Cisco IOS
Juniper Junos
MikroTik RouterOS
enable conf t hostname R1 # сохранить: end write memory
configure set system host-name R1 commit # проверить заранее: commit check
/system identity set name=R1 # сохраняется # автоматически

4. Настройка интерфейса и IP

Cisco IOS
Juniper Junos
MikroTik RouterOS
interface gi0/0 description UPLINK-TO-CORE ip address 10.0.0.1 255.255.255.0 no shutdown
set interfaces ge-0/0/0 \ description UPLINK-TO-CORE set interfaces ge-0/0/0 unit 0 \ family inet address 10.0.0.1/24 commit
/interface ethernet set ether1 comment=UPLINK-TO-CORE /ip address add address=10.0.0.1/24 \ interface=ether1
Junos и MikroTik принимают CIDR (/24) сразу. Cisco IOS исторически хочет десятичную маску (255.255.255.0) — поэтому считать подсети в уме (модуль 4) особенно важно на Cisco. И заметь: description/comment — везде. Подписанный порт — святое правило эксплуатации.

5. Статический и default-маршрут

Cisco IOS
Juniper Junos
MikroTik RouterOS
ip route 10.0.99.0 255.255.255.0 10.0.12.2 # default: ip route 0.0.0.0 0.0.0.0 203.0.113.1
set routing-options static route \ 10.0.99.0/24 next-hop 10.0.12.2 set routing-options static route \ 0.0.0.0/0 next-hop 203.0.113.1 commit
/ip route add dst-address=10.0.99.0/24 \ gateway=10.0.12.2 add dst-address=0.0.0.0/0 \ gateway=203.0.113.1

6. VLAN и trunk

Cisco IOS
Juniper Junos (ELS)
MikroTik RouterOS
vlan 10 name USERS interface gi0/1 switchport mode access switchport access vlan 10 interface gi0/24 switchport mode trunk
set vlans USERS vlan-id 10 set interfaces ge-0/0/1 unit 0 \ family ethernet-switching \ vlan members USERS set interfaces ge-0/0/23 \ ... interface-mode trunk commit
/interface bridge vlan add bridge=bridge1 vlan-ids=10 \ tagged=ether24 untagged=ether1 # bridge vlan-filtering=yes

7. OSPF

Cisco IOS
Juniper Junos
MikroTik RouterOS
router ospf 1 router-id 1.1.1.1 network 10.0.0.0 0.0.0.255 area 0 network 10.0.12.0 0.0.0.3 area 0
set protocols ospf area 0.0.0.0 \ interface ge-0/0/0 set routing-options router-id 1.1.1.1 commit # Junos включает по интерфейсу
/routing ospf instance set [find default] router-id=1.1.1.1 /routing ospf network add network=10.0.0.0/24 area=backbone
Обрати внимание на разный подход: Cisco — через network + wildcard, Junos — перечислением интерфейсов в area, MikroTik — через network-объекты. Концепт (area, router-id) — один.

8. BGP (eBGP-сосед)

Cisco IOS
Juniper Junos
MikroTik RouterOS
router bgp 65010 bgp router-id 1.1.1.1 neighbor 203.0.113.1 remote-as 64500 network 192.0.2.0 mask 255.255.255.0
set routing-options autonomous-system 65010 set protocols bgp group EXT type external set protocols bgp group EXT peer-as 64500 set protocols bgp group EXT neighbor 203.0.113.1 commit
/routing bgp connection add remote.address=203.0.113.1 \ remote.as=64500 \ as=65010 \ name=ISP-A

9. ACL / фильтрация

Cisco IOS
Juniper Junos
MikroTik RouterOS
ip access-list extended WEB permit tcp any host 10.0.0.10 eq 443 deny ip any any interface gi0/0 ip access-group WEB in
set firewall family inet filter WEB \ term 1 from destination-address 10.0.0.10/32 set firewall ... term 1 from protocol tcp \ destination-port 443 then accept set firewall ... term 2 then discard set interfaces ge-0/0/0 unit 0 \ family inet filter input WEB commit
/ip firewall filter add chain=forward protocol=tcp \ dst-address=10.0.0.10 \ dst-port=443 action=accept add chain=forward action=drop

10. NAT: выпустить локальную сеть в интернет

Самая частая NAT-задача из модуля 10 — «серые адреса наружу через один белый» (PAT/masquerade) — на трёх вендорах:

Cisco IOS
Juniper Junos
MikroTik RouterOS
ip access-list standard LAN permit 10.30.0.0 0.0.0.255 interface gi0/0 ip nat inside interface gi0/1 ip nat outside ip nat inside source list LAN \ interface gi0/1 overload
set security nat source rule-set LAN-OUT \ from zone trust set security nat source rule-set LAN-OUT \ to zone untrust set security nat source rule-set LAN-OUT \ rule R1 match source-address 10.30.0.0/24 set security nat source rule-set LAN-OUT \ rule R1 then source-nat interface commit
/ip firewall nat add chain=srcnat \ src-address=10.30.0.0/24 \ out-interface=ether1 \ action=masquerade
Концепт один — source NAT с перегрузкой порта (модуль 10). Слова разные: Cisco говорит overload, Junos — source-nat interface, MikroTik — masquerade. На собеседовании могут спросить любым из трёх слов — теперь ты знаешь, что это одно и то же.

11. Диагностика — show, ping, traceroute, логи

Cisco IOS
Juniper Junos
MikroTik RouterOS
show ip interface brief show ip route show ip ospf neighbor show ip bgp summary show running-config
show interfaces terse show route show ospf neighbor show bgp summary show configuration
/ip address print /ip route print /routing ospf neighbor print /routing bgp connection print /export

Активная диагностика и логи — тоже свои на каждом вендоре:

Cisco IOS
Juniper Junos
MikroTik RouterOS
ping 8.8.8.8 source gi0/1 ping 8.8.8.8 size 1500 df-bit traceroute 8.8.8.8 show logging # живые события: terminal monitor
ping 8.8.8.8 source 10.0.0.1 ping 8.8.8.8 size 1472 \ do-not-fragment traceroute 8.8.8.8 show log messages # хвост лога: show log messages | last 20
/ping 8.8.8.8 src-address=10.0.0.1 /ping 8.8.8.8 size=1500 \ do-not-fragment /tool traceroute 8.8.8.8 /log print # следить вживую: /log print follow
Заметь: ping с source-адресом и df-bit есть везде — это универсальные инструменты проверки обратных маршрутов и MTU (модуль 12 разберёт методику подробно).

12. Сохранение, откат, бэкап

Cisco IOS
Juniper Junos
MikroTik RouterOS
write memory copy run start # откат — нет встроенного, # только из сохранённого/archive copy start run
commit commit confirmed 5 # откат через 5 мин, # если не подтвердить rollback 1 # вернуть прошлую show | compare
/export file=backup /system backup save \ name=backup # отката версий нет, # восстановление из backup
Модель применения конфига: где «сеть точно не уроню»
Cisco / MikroTikизменение → сразу в продеошибка действует немедленно Juniper Junoscandidate → commitcheck / rollback / confirmed candidate config —идея, ставшая основой IaC
Подход Junos (отложенное применение + откат) — концептуальный мост к Terraform/Ansible, к которым ты придёшь в DevOps.

13. Разбор руками: закрываем заявку #52440 на трёх железках

Вернёмся к заявке из начала урока: VLAN 30 (кассы, 10.30.0.0/24) в филиале «Восток», маршрутизация до ЦО. Топология: MikroTik (филиал, шлюз VLAN 30) → Cisco (агрегация, транзит и OSPF) → Juniper (граница, NAT наружу). Смотри, как одна заявка распадается на знакомые концепты:

MikroTik (филиал): VLAN 30 + шлюз + маршрут в ЦО
/interface vlan add name=vlan30 vlan-id=30 interface=bridge1/ip address add address=10.30.0.1/24 interface=vlan30 → маршрут в ЦО уже есть (default на Cisco-агрегацию). Проверка: /ip address print, /ping 10.30.0.1.
Cisco (агрегация): маршрут на новую сеть + анонс в OSPF
ip route 10.30.0.0 255.255.255.0 <адрес MikroTik> → отдать сеть в OSPF: router ospf 1redistribute static subnets (или network, если линк к филиалу в OSPF). Проверка: show ip route 10.30.0.0 — маршрут есть; на соседях появился как external. Не забудь: write memory.
Juniper (граница): выпустить новую сеть в интернет
Добавить 10.30.0.0/24 в source NAT (раздел 10): set security nat source rule-set LAN-OUT rule R2 match source-address 10.30.0.0/24 …commit confirmed 5 (мы на удалённой границе — страхуемся!) → проверка с кассы: ping 8.8.8.8 → если работает, commit — подтвердили.
Сквозная проверка и закрытие
С кассового ПК: пинг шлюза 10.30.0.1 → пинг сервера в ЦО → пинг 8.8.8.8. Три уровня — три «ОК» в тикет. Заявка закрыта; на каждом устройстве конфиг сохранён/закоммичен.
Обрати внимание На каждой железке мы делали одно и то же: L2-сегмент → L3-адрес → маршрут → политика (NAT). Ни одна команда не была самоцелью — каждая реализует концепт из прошлых модулей. Это и есть «мышление концептами»: заявка декомпозируется одинаково при любом вендоре, меняется только синтаксис.

14. Мини-лаба: потрогай все три CLI бесплатно

Все три системы можно пощупать за вечер, не покупая железа:

Cisco — Packet Tracer
Бесплатно после регистрации на netacad.com (курс «Getting Started with Packet Tracer»). Собери в нём: роутер + свитч + 2 ПК, настрой interface/ip address/no shutdown, пинг между ПК. Затем набери show ip int brief и show run | include interface.
Juniper — vLabs
jlabs.juniper.net (Juniper vLabs) — бесплатные онлайн-песочницы с живым Junos в браузере. Задание: configure → поменяй hostname → show | compare (увидишь дифф!) → commit checkcommitrollback 1 → снова show | compare. Прочувствуй цикл candidate→commit→rollback руками.
MikroTik — CHR в виртуалке
Скачай Cloud Hosted Router (CHR) с mikrotik.com — это бесплатный образ RouterOS для VirtualBox/VMware. Запусти, зайди по консоли (admin, без пароля), выполни: /ip address add address=10.0.0.1/24 interface=ether1, /ip address print, /export. Сравни вывод export с тем, что ты вводил.
Контрольное упражнение
В каждой из трёх систем найди, не подглядывая в урок, как посмотреть таблицу маршрутов — пользуясь только ? и Tab. Уложился за 2 минуты на каждой — навык выживания в чужом CLI освоен.

15. Мост в DevOps: от CLI к автоматизации

Ровно эта «зоопарк-проблема» (разный синтаксис у вендоров) и породила сетевую автоматизацию (NetDevOps) — твой следующий большой шаг к DevOps:

🌉 Вот зачем учить концепты, а не команды

Когда ты автоматизируешь сеть через Ansible/NAPALM, ты оперируешь концептами (BGP-сосед, VLAN, ACL), а библиотека сама генерит синтаксис под вендора. Инженер, который мыслит концептами, переходит в NetDevOps легко. Тот, кто зазубрил только команды Cisco, — застревает.

16. Вопросы с собеседования

❓ Чем модель конфигурирования Junos отличается от Cisco?
Junos правит candidate config, который активируется только по commit; есть commit check, rollback, commit confirmed с авто-откатом. Cisco применяет команды сразу, построчно.
❓ Как безопасно менять конфиг на удалённом Cisco, чтобы не «отрезать себя»?
Использовать reload in 5 (плановая перезагрузка через 5 мин) перед рискованным изменением: если потерял доступ — устройство перезагрузится в сохранённый конфиг. На Junos для этого есть commit confirmed.
❓ Что такое masquerade на MikroTik и как это называется у Cisco?
Это source NAT с подменой адреса на адрес исходящего интерфейса (PAT). У Cisco — ip nat inside source list … interface … overload, у Junos — source-nat interface. Концепт один.
❓ Почему важно «думать концептами, а не командами»?
Концепты (OSPF area, BGP-атрибуты, stateful ACL) одинаковы у всех вендоров и переносятся в автоматизацию. Синтаксис различается и легко ищется. Это отличает инженера от «оператора по методичке».

17. Частые ошибки джунов

ошибка 1 Забыл сохранить на Cisco/MikroTik. Поменял, всё работает, ушёл — после перезагрузки конфиг пропал (write memory не сделан). На Junos этой ошибки нет — там commit и так пишет.
ошибка 2 «Отрезал себя» на удалёнке. Закрыл ACL/firewall’ом свой же SSH. На Junos спасает commit confirmed, на Cisco — reload in заранее.
ошибка 3 Зубрит синтаксис одного вендора как «сети вообще». Попав на Juniper/MikroTik, теряется. Концепт → потом синтаксис.
ошибка 4 На Junos забывает commit. «Я же всё ввёл» — но это candidate, в проде ничего не изменилось.
ошибка 5 Листает многотысячный конфиг глазами. Вместо | include / | match / print where — Page Down двадцать раз и «не нашёл». Фильтры вывода — базовая гигиена.

18. Задачи: переведи между вендорами

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

Задача 1. Коллега продиктовал Cisco-команду: «ip route 0.0.0.0 0.0.0.0 203.0.113.1». Сделай то же на MikroTik и Junos.

MikroTik: /ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1. Junos: set routing-options static route 0.0.0.0/0 next-hop 203.0.113.1 + commit. Концепт: default-маршрут (модуль 5).

Задача 2. На Junos ты ввёл 12 строк set-команд, проверил glazami — всё верно. Сеть не изменилась. Почему?

Не сделан commit — команды легли в candidate config и не активны. Перед commit стоит глянуть show | compare (дифф) и commit check (валидация).

Задача 3. Нужно найти все упоминания BGP в конфиге на каждом из трёх вендоров — по одной команде.

Cisco: show run | include bgp (или | section bgp — целыми блоками). Junos: show configuration | match bgp (или show configuration protocols bgp). MikroTik: /routing bgp connection print (+ /export и поиск).

Задача 4. Ты меняешь firewall на границе (Junos) удалённо. Какой командой применишь изменения и почему именно ей?

commit confirmed 5: изменения применятся, но если за 5 минут не подтвердить обычным commit (например, ты отрезал себе доступ), Junos сам откатится к прошлому конфигу. Страховка от «закрыл свой же SSH».

Задача 5. «Выпусти сеть 192.168.5.0/24 в интернет через ether1» — одна команда MikroTik. А как назвали бы это в Cisco-документации?

/ip firewall nat add chain=srcnat src-address=192.168.5.0/24 out-interface=ether1 action=masquerade. В терминах Cisco это NAT overload (PAT) — ip nat inside source list … interface … overload.

Задача 6. После перезагрузки Cisco-роутера пропали вчерашние настройки VLAN. Что произошло и как проверить заранее?

Вчера не сделали write memory — конфиг жил только в running-config. Проверка заранее: show archive config differences или простое сравнение show run | include vlan vs show start | include vlan. Правило: изменил — сохрани — перечитай сохранённое.

19. Словарик модуля (термины + английский)

ТерминПо-английскиСмысл в одну строку
Пользовательский режимuser EXEC (>)первый уровень Cisco CLI: только просмотр, ничего не поменять
Привилегированный режимprivileged EXEC (#)после enable: все show, отладка, вход в конфигурацию
Режим конфигурацииglobal configurationconfigure terminal — здесь меняют настройки Cisco/Huawei
Текущий конфигrunning-configто, что работает прямо сейчас (в RAM); теряется без сохранения
Сохранённый конфигstartup-configто, что загрузится после перезагрузки; обновляется write memory
Кандидат-конфигcandidate configurationчерновик в Junos: правки копятся и не действуют до commit
Фиксацияcommit / commit confirmedприменение кандидата в Junos; confirmed сам откатится, если ты потерял доступ
Откатrollbackвозврат к одной из прошлых версий конфига (Junos хранит их автоматически)
Обратная маскаwildcard maskинверсия маски в ACL/OSPF у Cisco: /24 → 0.0.0.255
Линии VTYVTY linesвиртуальные терминалы для SSH/Telnet-сессий на Cisco
Фильтр вывода| include / | matchпоказать только нужные строки: Cisco — include, Junos — match
Автодополнение? и Tabдве клавиши выживания в любом незнакомом CLI
Мост к следующему модулю

Ты умеешь настраивать и читать состояние на трёх вендорах. Но что делать, когда «всё настроено, а не работает», и show-команды выглядят прилично? Тогда наступает время смотреть сами пакеты: методология troubleshooting и packet capture — следующий модуль. Спойлер: команды ping … df-bit и ping … source из этого урока станут там главными героями.