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

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

Зачем тебе три вендора

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. База: вход в режим, 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 # сохраняется # автоматически

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

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

4. Статический и 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

5. 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

6. 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) — один.

7. 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

8. 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

9. Диагностика — «show»-команды

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

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

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.

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

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

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

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

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

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

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

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