Шлюз Cisco является родительским шлюзом для коммутатора . Данный шлюз управляется по telnet.
Создайте тип шлюза со следующей конфигурацией:
user_rule.editor.class=bitel.billing.module.services.ipn.editor.vlan.CiscoVlanContactRuleEditor gate_manager.class=bitel.billing.server.ipn.vlan.CiscoVlanGateWorker
В командах этого типа шлюза задайте:
[DEFAULT] [REMOVE] no vlan {VID} no interface Vlan {VID} [/REMOVE] [OPEN] vlan {VID} interface Vlan {VID} no shutdown ip unnumbered Loopback1 ip helper-address 172.17.0.7 exit [/OPEN] [CLOSE] interface Vlan {VID} shutdown exit [/CLOSE] [/DEFAULT]
[OPEN][/OPEN] - это команды, которые посылаются на cisco при открытии шлюза. [CLOSE][/CLOSE] - команды, которые посылаются на cisco при закрытии шлюза. [REMOVE][REMOVE] - команды, которые посылаются при удалении шлюза из договора.
Команды проходят предобработку на стороне сервера Биллинга. Обработка команд происходит аналогичным образом , как и обработка команд Manad. Т.е макросы вида {A} заменяются на адрес из выбранных диапазонов для тегов <LOOP>, а макросы {NET} и {NET_MASK} заменяются на выбранные сети для тегов <LOOP_NET> и <LOOP_NET_MASK> соответственно.
Ещё для шлюза Cisco2 производятся дополнительные преобразования: макрос {VID} заменяется на номер VLAN, которой выделен на данный договор и шлюз (как задаётся выделение vlan описано тут ), независимо от того, где встретится (внутри цикла LOOP или нет ).
В типах правил для этого скрипта можете добавить пустое правило.
Создайте шлюз данного типа. В конфигурацию данного шлюза добавьте :
# Пароль шлюза который задаётся для enable cfg.pswd=12345 # Диапазон выделения VLAN range=2-4096 # Время ожидания ответа, по истечению которого шлюз сбрасывает соединение и выдаёт ошибку timeout=2000
Задайте ip-адрес шлюза, в качестве ключевого слова - забейте пароль к cisco, порт - 23.
Данный шлюз можно использовать автономно и в связке с дочерним коммутатором (в стандартной поставке это zyxel, но его можно подменить любым другим , например DLink, с помощью реализации собственного шлюза на языке beanShell. В договор этот шлюз добавляется только, если он используется автономно ( ). При редактировании в договоре этот шлюз выглядит так
Логика работы шлюза :
password:xxxxx xxxx>terminal length 0 xxxx>terminal width 0 xxxxx>enable password:xxxxx xxxx# далее пошли команды управления xxxx#permit 1.1.1.1 xxxx#no permit 1.1.1.2 .... xxxx#exit
Имеет большое значение настойка и завершаемые символы приглашения. Вначале в конце выводимой cisco информации ожидается ":" ( пользователь вводит пароль, который забит в ключевом слове шлюза) , потом ожидается ">" и шлются 2 команды размеры терминала, посылается команды enable, затем ожидается ":"(пользователь вводит пароль), после этого уже ужидается "#" и посылаются команды управления. Настройки вашей cisco должны соответсвовать этому алгоритму. Если этого сделать не получается (например, вы хотите пропустить процедуру авторизации или у вас иной завершающйй символ приглашения и не хотите его менять), то вы можете использовать аналог этого шлюза на BeanShell из документации Wiki. О том как создавать собственные шлюзы читайте тут.