JUNOS
Материал из Xgu.ru
Juniper Networks JUNOS - операционная система, под управлением которой работает сетевое оборудование фирмы Juniper Networks. JUNOS основана на операционной системе UNIX FreeBSD.
[править] Control Plane и Forwarding Plane
Важный аспект работы JUNOS - это логическое и физическое разделение Control Plane и Forwarding (Data) Plane.
RE (Routing Engine) выполняется на процессоре архитектуры x86 или PowerPC. PFE (Packet Forwarding Engine) выполняется на специальных микросхемах ASIC (Application-Specific Integrated Circuit). Это сделано для увеличения производительности - транзитные пакеты передаются без вмешательства RE (соответственно и процессора). RE используется для построения RT (Routing Table) и FT (Forwarding Table). FT после ее построения записывается в память PFE и выполняется на ASIC. FT представляет собой таблицу, содержащую сеть назначения, интерфейс, через который может быть достигнута эта сеть, IP адрес next-hop'a и mac адрес next-hop'a. Так же на PFE для увеличения производительности и скорости обработки транзитных пакетов выполняется QoS, Policer (Shaping) и Stateless Firewall Filter(ACLs).
[править] Иерархическая структура интерфейса командной строки JUNOS
Работа с командной строкой в JUNOS разделяется на 2 режима:
- Operational Mode (приглашение командной строки ">") - тут нам доступны show команды и команды для мониторинга и траблшутинга сети (monitor, ping, test, traceroute);
- Configuration Mode (приглашение командной строки "#") - режим, в котором происходит настройка устройства. В этот режим можно попасть, если набрать команду "Configure" или "Edit" в Operational Mode.
[править] Operational Mode
Структура команд:
Команды, которые нам доступны в Operational Mode:
root> ? Possible completions: clear Clear information in the system configure Manipulate software configuration information file Perform file operations help Provide help information monitor Show real-time debugging information mtrace Trace multicast path from source to receiver op Invoke an operation script ping Ping remote target quit Exit the management session request Make system-level requests restart Restart software process set Set CLI properties, date/time, craft interface message show Show system information ssh Start secure shell on another host start Start shell telnet Telnet to another host test Perform diagnostic debugging traceroute Trace route to remote host
[править] Configuration Mode
В JUNOS используется 2 конфигурации:
- Active Configuration - это текущая конфигурация устройства.
- Candidate Configuration - это конфигурация, которую мы правим в режиме конфигурирования.
Для того, чтобы конфигурация-кандидат стала активной, в режиме конфигурирования нужно ввести команду "Commit":
root> configure Entering configuration mode [edit] root# set system root-authentication plain-text-password New password: Retype new password: [edit] root# commit commit complete [edit] root# exit Exiting configuration mode root>
Чтобы зайти в определенный контекст для настройки используется команда "Edit":
Доступные контексты для редактирования:
root> configure Entering configuration mode [edit] root# edit ? Possible completions: > access Network access configuration > access-profile Access profile for this instance > accounting-options Accounting data configuration > applications Define applications by protocol characteristics > chassis Chassis configuration > class-of-service Class-of-service configuration > diameter Diameter protocol layer > event-options Event processing configuration > firewall Define a firewall configuration > forwarding-options Configure options to control packet forwarding > groups Configuration groups > interfaces Interface configuration > jsrc JSRC partition configuration > jsrc-partition JSRC partition configuration > logical-systems Logical systems > multi-chassis > policy-options Policy option configuration > protocols Routing protocol configuration > routing-instances Routing instance configuration > routing-options Protocol-independent routing option configuration > security Security configuration > services Service PIC applications settings > snmp Simple Network Management Protocol configuration > system System parameters > virtual-chassis Virtual chassis configuration [edit]
[править] Настройка интерфейсов
Для того, чтобы настроить интерфейс нужно перейти в контекст "Interfaces":
root> configure Entering configuration mode [edit] root# edit interfaces [edit interfaces] root#
Иерархия настройки интерфейсов:
[править] L3 настройки интерфейса
Важный момент - все L3 параметры интерфейса настраиваются в контексте "UNIT". UNIT - это аналог сабинтерфейсов в Cisco.
[edit interfaces] root# set em0 unit 0 family inet address 100.0.0.1/30
Em0 - Это наш физический интерфейс. Family inet - параметры какого протокола мы хотим настроить. Доступны следующие значения:
root# set em0 unit 0 family ? Possible completions: > ccc Circuit cross-connect parameters > inet IPv4 parameters > inet6 IPv6 protocol parameters > iso OSI ISO protocol parameters > mpls MPLS protocol parameters > tcc Translational cross-connect parameters > vpls Virtual private LAN service parameters [edit interfaces] root# set em0 unit 0 family
Можно сразу из Configuration Mode посмотреть, что мы настроили набрав команду "show":
[edit interfaces] root# show em0 { unit 0 { family inet { address 100.0.0.1/30; } } } [edit interfaces]
Применим наши настройки командой "Commit":
root# commit commit complete
Проверим доступность IP на другой стороне канала:
root> ping 100.0.0.2 rapid PING 100.0.0.2 (100.0.0.2): 56 data bytes !!!!! --- 100.0.0.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.402/0.719/1.306/0.343 ms
[править] L2 настройки интерфейса
L2 настройки задаются в следующем контексте:
root> configure Entering configuration mode [edit] root# edit interfaces em0 [edit interfaces em0] root# set ? Possible completions: accounting-profile Accounting profile name + apply-groups Groups from which to inherit configuration data + apply-groups-except Don't inherit configuration data from these groups description Text description of interface disable Disable this interface encapsulation Physical link-layer encapsulation gratuitous-arp-reply Enable gratuitous ARP reply > hold-time Hold time for link up and link down > layer2-policer Layer2 policing for interface link-mode Link operational mode mac Hardware MAC address mtu Maximum transmit packet size (256..9192) no-gratuitous-arp-reply Don't enable gratuitous ARP reply no-gratuitous-arp-request Ignore gratuitous ARP request no-traps Don't enable SNMP notifications on state changes > traceoptions Interface trace options traps Enable SNMP notifications on state changes > unit Logical interface vlan-tagging 802.1q VLAN tagging support [edit interfaces em0]
Задать дуплекс на интерфейсе:
[edit interfaces em0] root# set link-mode full-duplex [edit interfaces em0] root#
Посмотреть состояние интерфейсов и назначенные IP адреса (аналог sh ip int bri в Cisco):
root> show interfaces terse Interface Admin Link Proto Local Remote cbp0 up up demux0 up up dsc up up em0 up up em0.0 up up inet 100.0.0.1/30 em1 up up gre up up ipip up up irb up up lo0 up up lo0.16384 up up inet 127.0.0.1 --> 0/0 lo0.16385 up up inet 128.0.0.4 --> 0/0 inet6 fe80::2ab:ae0f:fc99:e300 lsi up up mtun up up pimd up up pime up up pip0 up up pp0 up up tap up up
[править] Именования интерфейсов в JUNOS
В JUNOS используется следующая схема именования интерфейсов:
- GE - Тип интерфейса. В данном случае Gigabit Ethernet.
- 0 - это Flexible PIC Concentrator (FPC). Номер физического слота на нашем шасси.
- 0 - это Physical Interface Card (PIC). Номер карты, вставленной в слот.
- 1 - это номер порта на карте PIC.
[править] Таблица маршрутизации в JUNOS
В JUNOS можно создавать несколько таблиц маршрутизации. Главная таблица называется inet.0 и содержит ipv4 юникаст маршруты. По-умолчанию созданы следующие таблицы:
- inet.0 - используется для ipv4 юникаст маршрутов;
- inet.1 - используется для мультикаста;
- inet.2 - используется для Multicast Border Gateway Protocol (MBGP) с проверкой RPF (Reverse Path Forwarding);
- inet.3 - используется для MPLS маршрутов;
- inet.4 - используется для Multicast Source Discovery Protocol (MSDP) маршрутов;
- inet6.0 - используется для ipv6 юникаст маршрутов;
- mpls.0 - используется для mpls next hops.
Как читать вывод команды "show route":
[править] Forwarding Table
Forwarding Table - таблица для быстрой пересылки пакетов. Строится на основе таблицы маршрутизации. Очень похожа на технологию CEF в Cisco.
Посмотреть, что в ней находится можно командой "show route forwarding-table":
root@jun-1> show route forwarding-table Routing table: default.inet Internet: Destination Type RtRef Next hop Type Index NhRef Netif default perm 0 rjct 36 1 0.0.0.0/32 perm 0 dscd 34 1 100.0.0.0/30 intf 0 rslv 546 1 em0.0 100.0.0.0/32 dest 0 100.0.0.0 recv 544 1 em0.0 100.0.0.1/32 intf 0 100.0.0.1 locl 545 2 100.0.0.1/32 dest 0 100.0.0.1 locl 545 2 100.0.0.2/32 dest 0 0:ab:44:8:f8:0 ucst 547 1 em0.0 100.0.0.3/32 dest 0 100.0.0.3 bcst 543 1 em0.0 224.0.0.0/4 perm 0 mdsc 35 1 224.0.0.1/32 perm 0 224.0.0.1 mcst 31 1 255.255.255.255/32 perm 0 bcst 32 1
[править] Route Preference
Route Preference - это аналог Administrative Distance (AD) в Cisco IOS.
Протокол | Приоритет по умолчанию |
---|---|
Directly connected network | 0 |
Local | 0 |
Static Route | 5 |
OSPF internal route | 10 |
RIP | 100 |
OSPF AS external routes | 150 |
eBGP и iBGP | 170 |
[править] Настройка OSPF в JUNOS
- Основная страница: OSPF_в_Juniper
[править] Настройка BGP в JUNOS
- Основная страница: BGP_в_Juniper
[править] Пакетная фильтрация (Stateless Firewall Filter) в JUNOS
Блоки, из которых строятся правила фильтрации:
В "From" можно указывать следующие значения и их связки:
root# set term block-some-packets from ? Possible completions: > address Match IP source or destination address + apply-groups Groups from which to inherit configuration data + apply-groups-except Don't inherit configuration data from these groups > destination-address Match IP destination address + destination-port Match TCP/UDP destination port + destination-port-except Do not match TCP/UDP destination port > destination-prefix-list Match IP destination prefixes in named list + dscp Match Differentiated Services (DiffServ) code point + dscp-except Do not match Differentiated Services (DiffServ) code point + esp-spi Match IPSec ESP SPI value + esp-spi-except Do not match IPSec ESP SPI value first-fragment Match if packet is the first fragment + forwarding-class Match forwarding class + forwarding-class-except Do not match forwarding class fragment-flags Match fragment flags (in symbolic or hex formats) - (Ingress only) + fragment-offset Match fragment offset + fragment-offset-except Do not match fragment offset + icmp-code Match ICMP message code + icmp-code-except Do not match ICMP message code + icmp-type Match ICMP message type + icmp-type-except Do not match ICMP message type > interface Match interface name + interface-group Match interface group + interface-group-except Do not match interface group > interface-set Match interface in set + ip-options Match IP options + ip-options-except Do not match IP options is-fragment Match if packet is a fragment + packet-length Match packet length + packet-length-except Do not match packet length + port Match TCP/UDP source or destination port + port-except Do not match TCP/UDP source or destination port + precedence Match IP precedence value + precedence-except Do not match IP precedence value > prefix-list Match IP source or destination prefixes in named list + protocol Match IP protocol type + protocol-except Do not match IP protocol type service-filter-hit Match if service-filter-hit is set > source-address Match IP source address + source-port Match TCP/UDP source port + source-port-except Do not match TCP/UDP source port > source-prefix-list Match IP source prefixes in named list tcp-established Match packet of an established TCP connection tcp-flags Match TCP flags (in symbolic or hex formats) tcp-initial Match initial packet of a TCP connection + ttl Match IP ttl type + ttl-except Do not match IP ttl type [edit firewall family inet filter filter-in]
В "Then" можно указывать следующие значения:
- Accept - разрешить прохождение пакета;
- Discard - запретить прохождение пакета;
- Reject - запретить прохождение пакета с отправкой ICMP сообщения "Destination unreachable" отправителю.
Настройка выглядит следующим образом:
[edit firewall family inet] root# show filter filter-in { term block-some-packets { from { source-address { 100.0.0.0/24; } destination-address { 200.0.0.0/24; } } then { discard; } } term accept-all-other { then accept; } } [edit firewall family inet] root#
Теперь применяем фильтр на интерфейс:
root# set interfaces em0 unit 0 family inet filter input filter-in [edit] root# edit interfaces em0 [edit interfaces em0] root# show unit 0 { family inet { filter { input filter-in; } } } [edit interfaces em0] root#
Не забудьте правильно выбрать направление для фильтра:
[править] Настройка коммутаторов под управлением JUNOS
Настройка порта в режим access:
Настройка порта в режим trunk:
Настройка native vlan на trunk порту:
Настройка Routed Vlan Interface (RVI) - в Cisco IOS это называется Swiched Vlan Interface (SVI):
Ассоциация RVI и VLAN:
[править] Настройка VLAN
- Основная страница: VLAN_в_Juniper
[править] Дополнительная информация
На сайте Juniper Networks есть курс на русском языке "JUNOS как второй язык", рассказывающий о сравнении языка командной строки Cisco IOS и Juniper JUNOS. Может быть очень полезен для инженеров, которые уже освоили Cisco IOS, но впервые столкнулись с оборудованием Juniper.
Более подробную информацию о настройке сетевого оборудования под управлением JUNOS можно получить из официальной документации Juniper.