Pull to refresh

Начальная настройка маршрутизаторов Juniper SRX

Reading time15 min
Views208K


     В этой статья я постараюсь максимально доходчиво рассказать о том, как настроить Juniper серии SRX «из коробки». Статья подобного рода уже есть: habrahabr.ru/post/144218, однако моя отличается большей полнотой и подробностью настройки.
     Почему именно Juniper SRX, а не какая-то конкретная модель типа SRX100 или SXR240? Да просто потому что настройки будут полностью идентичными, ввиду полной одинаковости платформы – Junos OS. Это очень удобно, когда вроде бы разные по цене и производительности девайсы настраиваются абсолютно одинаковым образом. В этом лишь одно из достоинств Junos OS.

     Для начала нам надо попасть в консоль Джунипера. Есть, конечно, вариант первоначальной настройки через веб-интерфейс, но он в старых прошивках (10-ой версии) почему-то не всегда адекватно срабатывает. И вообще привыкайте, что веб-интерфейс хоть и есть, но мы же хотим стать настоящими сисадминами? А то представьте ситуацию, вы едете в машине, стоите в пробке, а вам звонят и просят срочно что-то настроить на шлюзе. У вас под рукой есть только медленный мобильный интернет. Если вы возьметесь что-то настраивать через графический интерфейс веб-морды, то это займет о-о-очень много времени. Это если не считать того, что веб-морда снаружи сети должна быть закрыта по соображениям безопасности.

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


     На первый взгляд это обычный RJ-45, но это не так. На самом деле этот разъем не имеет ничего общего с ethernet-портом. Этот разъем предназначен только для управления и ни для чего больше. В комплекте с Джунипером всегда идет переходник для подключения консольного порта к COM-порту компьютера. Так нам и нужно сделать.
     Далее скачиваем с сайта www.putty.org.ru клиент Putty и запускаем его. Появляется окошко, в котором нам надо поставить Serial и порт. Номер порта можно посмотреть в «Диспетчере устройств» Windows после того, как подключите роутер к компьютеру. В нашем примере это СОМ3.



     Нажав «Open», мы подключимся к Джуниперу. Кстати, если мы сначала включим его, а потом (подождав пока произойдет загрузка ОС) подключимся к нему через консольный порт, то мы не увидим никакого приглашения, а просто черный экран. Это нормально. Нужно просто ввести логин и пароль и мы попадем в систему.
     Если мы сначала подключимся к Джуниперу проводами, а затем включим его питание, то увидим в консоли процесс загрузки Junos OS. В какой-то момент система спросит нас: “Hit Enter to boot immediately or space bar for command prompt”. Если мы нажем «пробел» (на это дается одна секунда), то попадем в recovery-консоль. Это может пригодится, если мы забудем рутовый пароль. Но лучше не забывать. Процедура восстановления пароля описана здесь www.juniper.net/techpubs/software/junos-security/junos-security11.1/junos-security-admin-guide/index.html?user-auth-recover-root-pwd-srx.html
     Когда мы в первый раз настраиваем Джунипер, то нужно войти под пользователем root с пустым паролем. В дальнейшем система обязательно потребует указать ей рутовый пароль.
     После ввода логина-пароля выходит приглашение командной строки:



     В Junos OS есть три режима работы:
1.  Юниксовый шел (sh), имеет приглашение типа “root@srx%”. Поскольку Junos OS основана на FreeBSD, то первое куда мы попадаем после логина – это юниксовый шел. В нем на Джунипере лучше ничего не делать. Вводим cli, нажимаем Enter и попадаем собственно в саму оболочку Junos OS.
2.  Операционный режим, имеет приглашение “root@srx>”. Это по большому счету режим дебага и мониторинга. В нем можно просматривать важные параметры роутера, также в этом режиме происходит, например, обновление ПО и такие операции как перезагрузка-выключение. Если мы введем edit или configure, то попадаем в самый важный режим работы.
3.  Конфигурационный режим, имеет приглашение “root@srx#”. В этом режиме осуществляется конфигурирование роутера, т.е. редактирование и применение конфига. Этот режим является основным режимом, в котором вам придется работать. Также, отсюда для удобства можно запускать команды операционного режима с помощью команды run. Например, нельзя запускать пинг из конфигурационного режима, но можно с помощью команды run: run ping 1.2.3.4.
     Здесь и дальше я буду упоминать названия интерфейсов вида ge-0/0/x. Это гигабитные интерфейсы. Однако, Juniper SRX100 имеет 100-мбитные интерфейсы, они называются fe-0/0/x. На самом деле конфиг будет абсолютно тот же самый с точностью до имен интерфейсов, имейте ввиду.

     Приступим к начальной настройке Джунипера из командной строки. Наши задачи:
1.  Настроить root-аутентификацию и другие важные параметры (DNS, DHCP).
2.  Настроить порты коммутатора (то, что в SOHO роутерах называют LAN-портами) на интерфейсах c ge-0/0/1 по ge-0/0/7.
3.  Настроить Интернет на интерфейсе ge-0/0/0. Два варианта: либо IP-адрес нам выдает непосредственно провайдер, либо мы его получаем через PPPoE (кабельный интернет либо ADSL). Варианты с получение Интернета через VLAN и L2TP здесь рассматриваться не будут.
4.  Настроить зоны и политики безопасности.
5.  Настроить NAT на раздачу интернета в локальную сеть.

     Это можно сделать двумя способами: вручную или путем мастера первоначальной настройки. Мастер можно запустить из шела командой:
root@srx% config-wizard
     Мастер первоначальной настройки описан здесь: www.juniper.net/techpubs/hardware/junos-jseries/junos-jseries96/junos-jseries-hardware-guide/jd0e12614.html. В общем-то если вы знаете английский язык и ориентируетесь в терминах, то сможете настроить все сами без всяких мануалов, но на всякий случай приведу таблицу с расшифровкой параметров настройки.
Enter host name: Здесь вводим имя Джунипера. Оно будет отображаться в приглашении командной строки. Играет чисто визуальную роль.
Please enter root password:
Retype root password:
Здесь вводим пароль супер-пользователя root (обязательно)
Would you like to configure a domain name? [yes, no] (no):
Enter domain name:
Здесь вводим имя домена (необязательно)
Would you like to configure name server? [yes, no] (no):
Enter IP address for the name server:
Would you like to configure alternative name server? [yes, no] (no):
Enter IP address for the name server:
Здесь вводим адрес первичного DNS-сервера (крайне желательно)
  
А здесь адрес вторичного (необязательно)
Configure the following network interfaces
Identifier...Interface
....1........ge-0/0/0
....2........ge-0/0/1
....3........ge-0/0/2
Please select interface identifiers:
IP address for this interface:
Subnet mask bit length for this interface [1–32] (32):
Enter a security zone name to associate this interface to:
Здесь перечисляется список физических интерфейсов роутера. Если мы хотим сконфигурировать тот или иной интерфейс, то нам нужно выбрать его номер в списке
 
Здесь вводим номер интерфейса
Здесь вводим его новый IP-адрес
Здесь указываем маску подсети
А здесь указываем зону безопасности, к которой принадлежит интерфейс (например, trust для внутренней сети, untrust для Интернета)
Would you like to configure default gateway? [yes, no] (no):
Enter IP address for the default gateway:
Здесь вводим адрес основного шлюза, который выдал нам провайдер.
Would you like to create a new user account? [yes, no] (no):
Enter a new user name:
Enter user password
Retype the password:
Здесь можно создать нового пользователя помимо root (необязательно). Может быть полезно, если роутер будет конфигурировать не один администратор.
Would you like to configure SNMP Network Management? [yes,no] (no):
Enter community string [public]:
Здесь можно назначить имя коммьюнити для мониторинга по SNMP (необязательно)


     После завершения настройки система выведет итоговую конфигурацию и запросит разрешение на применение параметров настройки (commit). После коммита мы вновь увидим приглашение командной строки и можем войти в cli.
     А теперь то же самое, но более глубоко и в виде команд. Различные примеры первоначальной настройки можно посмотреть здесь: www.juniper.net/us/en/local/pdf/app-notes/3500153-en.pdf
Входим в режим конфигурирования:
root@srx% cli
root@srx> edit
     Вводим имя Джунипера:
root@srx# set system host-name Имя_роутера
     Имя роутера никак не влияет на его работу. Это чисто визуальный параметр, чтобы не запутаться в случае, если у нас не один, а несколько Джуниперов.
root@srx# set system root-authentication plain-text-password
     После нажатия Enter система попросит вас два раза ввести новый пароль для рута.
     Далее, нам нужно настроить Интернет-интерфейс. Здесь мы рассмотрим самый простой случай, когда провайдер выдает нам статический белый IP-адрес явным образом. Настройка Интернета через PPPoE будет рассмотрена позднее. Допустим, провайдер выдал нам адрес 1.2.3.4 с маской 255.255.255.240 == /28 (префикс подсети). Надо отметить, что джунипер не понимает маску подсети в ее классической октетной записи, а только в виде префикса. Подробнее о префиксах подсети можно прочитать здесь: ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%81%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F
root@srx# set interfaces ge-0/0/0 unit 0 family inet address 1.2.3.4/28
     Настраиваем основной шлюз провайдера. Допустим в нашем случае это 1.2.3.1
root@srx# set routing-options static route 0/0 next-hop 1.2.3.1
     Теперь давайте настроим веб-интерфейс Джунипера. Нам нужно сделать так, чтобы он был доступен только из внутренней сети и недоступен из Интернета:
root@srx# set system services web-management http interface vlan.0
     Включаем ssh-доступ к роутеру:
root@srx# set system services ssh
     Теперь надо настроить интерфейсы коммутатора (LAN-порты), т.е. те интерфейсы, которые будут подключены к нашей локальной сети. Опять же, возможны варианты: мы можем присвоить одному интерфейсу, например к ge-0/0/1, как описано выше адрес типа 192.168.1.1 и подключаем к этому интерфейсу корпоративные свитчи, но в этом случае через остальные порты Джунипера мы уже не сможем подключить клиентские компьютеры к подсети 192.168.1.0/24. Конкретно для нашей задачи получается немного неэкономично и негибко, хотя в других случаях такой вариант является нормальным.
     Намного более удобный вариант для нашей задачи – это сделать все остальные порты Джунипера равными по своим правам, что позволит подключать сетевые устройства к любому порту, по аналогии с обычными неуправляемыми свитчами. Для этого надо сделать все остальные порты членами одной виртуальной локальной сети (VLAN).
root@srx# set interfaces interface-range interfaces-trust member-range ge-0/0/1 to ge-0/0/7
     Этой командой мы создали interface-range, т.е. набор интерфейсов, под названием interfaces-trust и включили в данный диапазон порты с 1 по 7. Данный вид группировки интерфейсов экономит нам время, т.к. нужно вводить меньше команд.
root@srx# set interfaces interface-range interfaces-trust unit 0 family ethernet-switching vlan members vlan-trust
     Этой командой мы сказали, что интерфейсы из данного набора являются портами коммутатора (family ethernet-swtiching) и все вместе принадлежат к одному VLAN под названием vlan-trust.
root@srx# set vlans vlan-trust vlan-id 3
root@srx# set vlans vlan-trust l3-interface vlan.0
     Здесь мы создаем собственно сам vlan-trust и говорим, что данный влан терминируется (имеет IP-адрес) на интерфейсе vlan.0
root@srx# set interfaces vlan unit 0 family inet address 192.168.1.1/24
     Ну и наконец создаем интерфейс vlan.0 и присваиваем ему адрес 192.168.1.1/24. Чей это адрес? Это адрес Джунипера в данном влане и он же будет являться основным шлюзом для клиентских компьютеров, подключаемых к портам коммутатора. По сути, что мы сделали? Мы сгруппировали физические интерфейсы от ge-0/0/1 до ge 0/0/7 в один логический vlan.0. Теперь все сетевые устройства, которые мы подключим к этим портам будут видеть друг друга в одном широковещательном домене 192.168.1.0/24.
     Далее, нужно настроить адрес DNS-сервера (в данном примере Google Public DNS):
root@srx# set system name-server 8.8.8.8
root@srx# set system name-server 8.8.4.4
     Настраиваем DHCP-сервер на интерфейсе vlan.0 (чтобы клиентские устройства получали настройки сети по DHCP)
root@srx# set system services dhcp router 192.168.1.1
root@srx# set system services dhcp pool 192.168.1.0/24 address-range low 192.168.1.2
root@srx# set system services dhcp pool 192.168.1.0/24 address-range high 192.168.1.100
root@srx# set system services dhcp propagate-settings vlan.0
     Настраиваем зоны безопасности. Названия зон могут любыми, можно иметь большое количество зон и настраивать переходы между зонами в виде политик. Это очень удобный способ настройки безопасности. В данном примере у нас будет две зоны: trust (локальная сеть) и untrust (Интернет).
root@srx# set security zones security-zone untrust interfaces ge-0/0/0.0 host-inbound-traffic system-services ping
root@srx# set security zones security-zone untrust interfaces ge-0/0/0.0 host-inbound-traffic system-services ssh
     Здесь мы создаем зону безопасности untrust и присоединяем интерфейс ge-0/0/0, который у нас смотрит в Интернет, к этой зоне. Параметр зоны host-inbound-traffic обозначает какие сервисы и протоколы в зависимости могут получать доступ к самому Джуниперу. Например, в данном примере мы разрешили пинговать наш Джунипер извне, а также подключаться к нему по ssh. Если мы захотим получать Интернет-адрес по DHCP, то здесь нужно разрешить службу dhcp. Если мы захотим пользоваться IPsec-туннелями между Джуниперами, то нужно разрешить службу IKE, и так далее. То же относится и к протоколам маршрутизации. Например, чтобы разрешить обмен маршрутами OSPF, то нужно вписать опцию host-inboubd-traffic protocols ospf.
     Настраиваем зону trust:
root@srx# set security zones security-zone trust host-inbound-traffic system-services all
root@srx# set security zones security-zone trust host-inbound-traffic protocols all
root@srx# set security zones security-zone trust interfaces vlan.0
     К зоне trust у нас принадлежит виртуальный интерфейс vlan.0, членами которого теперь, как вы догадались, являются физические интерфейсы от ge-0/0/1 до ge-0/0/7. Для зоны trust у нас разрешены любые сервисы и протоколы, например HTTP, то есть веб-интерфейс Джунипера. Из Интернета на его веб-интерфейс попасть нельзя, как указано в настройках зоны untrust.
     Внимательно прочитайте последние два абзаца и постарайтесь хорошо понять назначение команды host-inbound-traffic, т.к. она напрямую влияет на безопасность нашей сети. Если мы не хотим, чтобы пользователи нашей сети могли обращаться к веб-интерфейсу Джунипера, мы можем оставить здесь все, как есть, но запретить это в политиках. Подробнее о политиках я напишу отдельную статью, т.к. это очень широкая тема для обсуждения
     Настройка зон отображает их интерфейсы и разрешает траффик, адресованный самому роутеру. Политики транзитного траффика (проходящего сквозь Джунипер) описываются в другом месте в виде переходов между зонами.
root@srx# set security policies from-zone trust to-zone untrust policy trust-to-untrust match source-address any
root@srx# set security policies from-zone trust to-zone untrust policy trust-to-untrust match destination-address any
root@srx# set security policies from-zone trust to-zone untrust policy trust-to-untrust match application any
root@srx# set security policies from-zone trust to-zone untrust policy trust-to-untrust then permit
     Здесь описана политика траффика при переходе от зоны trust к зоне untrust. В данном примере из локальной сети в Интернет разрешены все запросы. Если мы захотим как-то ограничить пользователей нашей сети в использовании Интернета (например, запретить общение через ICQ или IRC), то здесь можно создать соответствующие запрещающие правила.
root@srx# set security policies from-zone trust to-zone trust policy trust-to-trust match source-address any
root@srx# set security policies from-zone trust to-zone trust policy trust-to-trust match destination-address any
root@srx# set security policies from-zone trust to-zone trust policy trust-to-trust match application any
root@srx# set security policies from-zone trust to-zone trust policy trust-to-trust then permit

     Здесь описана политика из зоны trust в зону trust. Опять же разрешены все переходы.
     Политику из зоны untrust (Интернет) в зону trust (локальная сеть) описывать здесь не будем. Почему? Потому что политика по умолчанию стоит deny-all, т.е. все что явно не разрешено, то запрещено, а хосты из глобальной сети не должны иметь доступ к защищаемым Джунипером хостам, не так ли? Вообще, если мы не создали политику, то это не значит что ее нет вовсе. Она есть, только она пустая, а следовательно на все переходы отвечает запретом.
     Последним номером в нашей сегодняшней программе будет настройка NAT для раздачи Интернета пользователям локальной сети.
root@srx# set security nat source rule-set trust-to-untrust from zone trust
root@srx# set security nat source rule-set trust-to-untrust to zone untrust
root@srx# set security nat source rule-set trust-to-untrust rule source-nat-rule match source-address 0.0.0.0/0
root@srx# set security nat source rule-set trust-to-untrust rule source-nat-rule then source-nat interface
     Этим мы настроили Source NAT между локальной сетью и Интернетом. Теперь пользователи локалки могут спокойно пользоваться услугами глобальной сети.
     Также, желательно включить систему предотвращения вторжений (IDP, intrusion detection prevention). Базовые ее настройки приведены здесь:
root@srx# set security zones security-zone untrust screen untrust-screen
root@srx# set security screen ids-option untrust-screen icmp ping-death
root@srx# set security screen ids-option untrust-screen ip source-route-optiont
root@srx# set security screen ids-option untrust-screen ip tear-drop
root@srx# set security screen ids-option untrust-screen tcp syn-flood alarm-threshold 1024
root@srx# set security screen ids-option untrust-screen tcp syn-flood attack-threshold 200
root@srx# set security screen ids-option untrust-screen tcp syn-flood source-threshold 1024
root@srx# set security screen ids-option untrust-screen tcp syn-flood destination-threshold 2048
root@srx# set security screen ids-option untrust-screen tcp syn-flood timeout 20
root@srx# set security screen ids-option untrust-screen tcp land
     Более подробно про широкие возможности Junos IDP можно прочитать в книге Junos Security. Скачать ее можно например здесь: www.bookarchive.ru/computer/network/kompjuternaja_bezopasnost/101776-junos-security.html
     После ввода всех команд нужно проверить их на синтаксис и на логику командой:
root@srx# commit check
     Если в нашем конфиге присутствуют какие-либо опечатки или чего-то не хватает, то система всегда сообщит нам об этом. Внимательно читайте вывод консоли, ибо Junos OS очень подробно и точно и объясняет, что нам нужно исправить! Если консоль выдаст commit check succeded, то значит все в порядке и можно писать:
root@srx# commit
     После этого наши настройки сохраняться в памяти роутера и станут актуальными. Теперь можно подключать клиентские устройства, проверять пинги и Интернет. Если мы вдруг заметили, что применили что-то совсем не то и необходимо вернуться на предыдущую конфигу, то можно написать:
root@srx# rollback 0
     Эта команда вернет нас к предыдущей конфиге, которую, кстати, так же нужно коммитить. Число возможных откатов назад во времени по максимуму равно 49 и может быть настроено командой
root@srx# set system max-configuration-rollbacks 49
     Если ввести
root@srx# rollback ?
то система выдаст нам дату и время предыдущих коммитов (максимум – 49)
     Если мы выполняем удаленное конфигурирование Джунипера и боимся, что применение очередной политики или настройка интерфейса может привести к утрате связи с устройством, то можно пользоваться коммитом в следующем виде:
root@srx# commit confirmed число_минут
     Эта команда применяет текущий конфиг, но лишь на определенное число минут, указанное в команде (по умолчанию 10). Если в течение этого времени не ввести просто commit, то по истечении времени Джунипер автоматом вернется к предыдущей конфиге. Это очень удобно для удаленного конфигурирования!
     Итоговый конфиг приведен под спойлером
Итоговый конфиг
## Last changed: 2013-01-24 12:09:10 UTC
version 12.1R4.7;
system {
    host-name JuniperSRX;
    root-authentication {
        encrypted-password "$1$2bWkMZhh$mdsdcqRN71Pa7Wmb9VGSn/"; ## SECRET-DATA
    }
    name-server {
        8.8.8.8;
        8.8.4.4;
    }
    services {
        ssh;
        web-management {
            http {
                interface vlan.0;
            }
        dhcp {
            router {
                192.168.1.1;
            }
            pool 192.168.1.0/24 {
                address-range low 192.168.1.2 high 192.168.1.100;
            }
            propagate-settings vlan.0;
        }
    }
    syslog {
        archive size 100k files 3;
        user * {
            any emergency;
        }
        file messages {
            any critical;
            authorization info;
        }
        file interactive-commands {
            interactive-commands error;
        }
    }
    max-configurations-on-flash 5;
    max-configuration-rollbacks 49;
    license {
        autoupdate {
            url https://ae1.juniper.net/junos/key_retrieval;
        }
    }
}
interfaces {
    interface-range interfaces-trust {
    member-range ge-0/0/1 to ge-0/0/7;
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/0 {
    unit 0 {
        family inet {
            address 1.2.3.4/28;
        }
    }
}
ge-0/0/1 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/2 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/3 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/4 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/5 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/6 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
ge-0/0/7 {
    unit 0 {
        family ethernet-switching {
            vlan {
                members vlan-trust;
            }
        }
    }
}
vlan {
    unit 0 {
        family inet {
            address 192.168.1.1/24;
        }
    }
}
routing-options {
    static {
        route 0.0.0.0/0 next-hop 1.2.3.1;
    }
security {
     screen {
        ids-option untrust-screen {
            icmp {
                ping-death;
            }
            ip {
                source-route-option;
                tear-drop;
            }
            tcp {
                syn-flood {
                    alarm-threshold 1024;
                    attack-threshold 200;
                    source-threshold 1024;
                    destination-threshold 2048;
                    timeout 20;
                }
                land;
            }
        }
    }
    nat {
        source {
            rule-set trust-to-untrust {
                from zone trust;
                to zone untrust;
                rule source-nat-rule {
                    match {
                        source-address 0.0.0.0/0;
                    }
                    then {
                        source-nat {
                            interface;
                        }
                    }
                }
            }
        }
    policies {
        from-zone trust to-zone untrust {
            policy trust-to-untrust {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
        from-zone trust to-zone trust {
            policy trust-to-trust {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
    zones {
        security-zone trust {
            host-inbound-traffic {
                system-services {
                    all;
                }
                protocols {
                    all;
                }
            }
            interfaces {
                vlan.0;
            }
        }
        security-zone untrust {
            screen untrust-screen;
            interfaces {
                ge-0/0/0.0 {
                    host-inbound-traffic {
                        system-services {
                            ssh;
                            ping;
                        }
                    }
                }
            }
        }
    }
}
vlans {
    vlan-trust {
        vlan-id 3;
        l3-interface vlan.0;
    }
}

     На этом я закончу статью по первоначальной настройке Juniper SRX. Буду очень рад вопросам и комментариям! В дальнейшем планируются статьи по Junos CLI, PPPoE, политикам, IPsec и основам маршрутизации в Junos OS.
Tags:
Hubs:
+18
Comments32

Articles

Change theme settings