Доброго времени суток, коллеги!
В
прошлой статье мы рассматривали ограничение скорости абонентам. В этой статье
будет рассмотрена автоматическая привязка абонентов к портам коммутаторов и к ACL маршрутизаторов. Ядро UTM5 работает на ОС Centos 5.7. Данные с маршрутизаторов UTM5 получает по протоколу
NetFlow. Информацию по установке и настройке UTM5
можно найти в документации с официального сайта.
Возьмем
прошлую схему.
Рассмотрим
географически распределенную систему в трех районах Москвы: Ясенево, Бутово,
Люберцы. Центр обработки данных находится в Ясенево, там же будет физически
располагаться сервер UTM5.
Type
|
Нostname
|
IP
адрес
|
router
|
Yasenevo
|
1.1.1.1
|
switch
|
Switch10021
|
1.1.1.2
|
switch
|
Switch10022
|
1.1.1.3
|
router
|
Lyuber
|
2.2.2.1
|
switch
|
Switch10023
|
2.2.2.2
|
switch
|
Switch10024
|
2.2.2.3
|
router
|
Butovo
|
3.3.3.1
|
switch
|
Switch10025
|
3.3.3.2
|
Логика
работы:
При
включении интернета, IP
адрес абонента
добавляется в разрешающий ACL
на маршрутизаторе.
Также добавляется в ACL
на порт коммутатора.
При
выключении интернета, IP
адрес абонента
удаляется из разрешающего ACL
на маршрутизаторе. Также удаляется из ACL на порту коммутатора, и отключается
порт.
Приступим
к предварительной настройке.
1. Для коммутаторов при включении
интернета.
conf t
no ip access-list extended UTM4
ip access-list extended UTM4
permit ip host 1.1.1.4
any
exit
interface FastEthernet0/4
ip access-group UTM4
in
no shutdown
exit
exit
wr
exit
2. Для коммутаторов при выключении
интернета.
conf t
interface FastEthernet0/4
ip access-group UTM4
in
shutdown
exit
no ip access-list extended UTM4
ip access-list extended UTM4
deny ip any any
exit
exit
wr
3. Для маршрутизаторов при включении
интернета.
conf t
ip access-list extended 160
permit ip host 1.1.1.4
any
exit
wr
4. Для маршрутизаторов при
выключении интернета.
conf t
ip access-list extended 160
no permit ip host 1.1.1.4
any
exit
wr
На
маршрутизаторе привязываем ACL
к интерфейсу:
conf t
interface GigabitEthernet0/0
ip
access-group 160 out
exit
Устанавливаем expect: yum install expect –y
Настройку с примерами можно найти в интернете или в предыдущей статье «Ограничение скорости абонентам в UTM5 при помощи Expect.»
Подключаемся к коммутатору: autoexpect ssh cisco@1.1.1.2
Применяем первый список команд. Создаем новую папку для хранения скриптов: mkdir /scripts/
Копируем скрипт в данную папку: cp script.exp /scripts/Switch_on.exp
Редактируем: nano /scripts/Switch_on.exp
В зависимости от версий expect’a синтаксис будет немного различаться. Поэтому рассмотрим, что нужно заменить в данном скрипте на нашем шаблонном наборе команд:
$name#conf t
Применяем первый список команд. Создаем новую папку для хранения скриптов: mkdir /scripts/
Копируем скрипт в данную папку: cp script.exp /scripts/Switch_on.exp
Редактируем: nano /scripts/Switch_on.exp
В зависимости от версий expect’a синтаксис будет немного различаться. Поэтому рассмотрим, что нужно заменить в данном скрипте на нашем шаблонном наборе команд:
$name#conf t
$name(config)# no ip access-list extended UTM$port
$name(config)# ip access-list extended UTM$port
$name(config-ext-nacl)# permit ip host $ip any
$name(config-ext-nacl)# exit
$name(config)# interface FastEthernet0/$port
$name(config-if)#ip access-group UTM$port in
$name(config-if)#no shutdown
$name(config)# exit
$name#exit
$name#wr
$name#exit
Передавать скрипту будем три параметра: IP адрес коммутатора, порт коммутатора, IP адрес абонента.
Добавим в скрипт соответствующие строчки:
set sw [lindex $argv 0]
set port [lindex $argv 1]
set ip [lindex $argv 2]
Т.к. имена коммутаторов различаются, а скрипт
один на все коммутаторы, то добавим присвоение соответствующих имен к IP адресу коммутатора:
set switch10021 1.1.1.2
set switch10022 1.1.1.3
set switch10023 2.2.2.2
set switch10024 2.2.2.3
set switch10025 3.3.3.2
if {$sw==$switch10021} {set nom switch10021}
if {$sw==$switch10022} {set nom switch10022}
if {$sw==$switch10023} {set nom switch10023}
if {$sw==$switch10024} {set nom switch10024}
if {$sw==$switch10025} {set nom switch10025}
Сохраняем и тестируем. Абонент с IP адресом 1.1.1.4 подключен к коммутатору 1.1.1.3
в порт 9: /scripts/Switch_on.exp
1.1.1.2 9 1.1.1.4
Получаем на выходе:
switch10022#conf
t
switch10022(config)#
no ip access-list extended UTM9
switch10022(config)#
ip access-list extended UTM9
switch10022(config-ext-nacl)#
permit ip host 1.1.1.4 any
switch10022(config-ext-nacl)#
exit
switch10022(config)#
interface FastEthernet0/9
switch10022(config-if)#ip
access-group UTM9 in
switch10022(config-if)#no
shutdown
switch10022(config)#
exit
switch10022#exit
switch10022#wr
switch10022#exit
Скрипт для привязки абонента к порту
коммутатора при включении интернета готов.
Аналогичные действия проделываем и для
отключения интернета:
1. Подключаемся к коммутатору,
применяем команды из пункта 2, копируем скрипт /scripts/Switch_off.exp
2. Вносим
соответствующие изменения в скрипт и проверяем что все работает.
Приступаем
к настройке.
Копируем 4 файла:
Копируем 4 файла:
1. cp /netup/utm5/rfw5.cfg /netup/utm5/rfw5_Switch_on.cfg
2. cp /netup/utm5/bin/utm5_rfw /netup/utm5/bin/utm5_rfw_Switch_on
3. cp /netup/utm5/bin/safe_utm5_rfw /netup/utm5/bin/safe_utm5_rfw_Switch_on
4. cp /etc/init.d/utm5_rfw /etc/init.d/utm5_rfw_Switch_on
Редактируем соответствующие файлы:
1. Nano /netup/utm5/rfw5_Switch_on.cfg
rfw_name=Switch_Internet_on //Имя фраервола, которое указываем в UTM5
core_host=127.0.0.1 //IP адрес, где запущен UTM5
core_port=12758 //Порт подключения к ядру
rfw_login=login // Логин
rfw_password=passwd // Пароль
firewall_type=local // Тип фраервола
rfw_ssl_type=none
sync_flags=enable:disable
firewall_path=/scripts/Switch_on.exp //Путь до скрипта
log_level=3
log_file_main=/netup/utm5/log/rfw5_main_Switch_on.log
log_file_debug=/netup/utm5/log/rfw5_debug_Switch_on.log
log_file_critical=/netup/utm5/log/rfw5_critical_Switch_on.log
2. Nano /netup/utm5/bin/safe_utm5_rfw_Switch_on
#!/bin/sh
# description: UTM Billing System Radius Safe start script trap '' 1 2 3 15
pid_file=/var/run/utm5_Switch_on.pid //Имя процесса
utm_exec=utm5_rfw_Switch_on //Имя исполняемого файла
err_log=/netup/utm5/log/rfw5_Switch_on.log
exec_dir=/netup/utm5/bin
root_email=root
rfw_flags=""
rfw_cfg=/netup/utm5/rfw5_Switch_on.cfg //Путь до конф файла.
3.Nano /etc/init.d/utm5_rfw_Switch_on
#!/bin/sh
# chkconfig: 2345 90 10
# description: UTM Billing System firewall control tool trap '' 1 2 3 15
utm_exec=safe_utm5_rfw_Switch_on
exec_dir=/netup/utm5/bin
Запускаем: /etc/init.d/utm5_rfw_Switch_on star
Добавляем в автозагрузку: chkconfig --level 35 utm5_rfw_Switch_on on
Приступаем к настройке в UTM5:
Добавляем в автозагрузку: chkconfig --level 35 utm5_rfw_Switch_on on
Приступаем к настройке в UTM5:
Регистрируем
коммутатор:
Добавляем
брандмауэр:
Добавляем
правило Firewall:
Заходим
в настройки пользователей и добавляем информацию о коммутаторе и порте:
Перезапускаем:
/etc/init.d/utm5_rfw_Switch_on stop
/etc/init.d/utm5_rfw_Switch_on start
Аналогичные действия проделываем и для
отключения интернета.
Приступим к настройке маршрутизатора.
Подключаемся к маршрутизатору: autoexpect ssh cisco@1.1.1.1
Применяем первый список команд для маршрутизатора при включении интернета.
Копируем скрипт в созданную папку: cp script.exp /scripts/cisco_1.1.1.1_on.exp
Редактируем: nano /scripts/cisco_1.1.1.1_on.exp
Рассмотрим, что нужно заменить в данном скрипте на нашем шаблонном наборе команд:
Применяем первый список команд для маршрутизатора при включении интернета.
Копируем скрипт в созданную папку: cp script.exp /scripts/cisco_1.1.1.1_on.exp
Редактируем: nano /scripts/cisco_1.1.1.1_on.exp
Рассмотрим, что нужно заменить в данном скрипте на нашем шаблонном наборе команд:
conf t
ip access-list extended 160
permit ip host $ip any
exit
wr
Передавать скрипту будем один параметр: IP адрес абонента.
Добавим в скрипт строчку:
set ip [lindex $argv 0]
Сохраняем
и тестируем: cisco_1.1.1.1_on.exp 1.1.1.7
conf t
ip access-list extended 160
permit ip host 1.1.1.7 any
exit
wr
Приступаем
к настройке:
Копируем 4 файла:
Копируем 4 файла:
cp /netup/utm5/rfw5.cfg /netup/utm5/rfw5_cisco_1.1.1.1_on.cfg
cp /netup/utm5/bin/utm5_rfw /netup/utm5/bin/utm5_rfw_ cisco_1.1.1.1_on
cp /netup/utm5/bin/safe_utm5_rfw /netup/utm5/bin/safe_utm5_rfw_cisco_1.1.1.1_on
cp /etc/init.d/utm5_rfw /etc/init.d/utm5_rfw_cisco_1.1.1.1_on
И настраиваем соответственно.
После
настройки скриптов, приступим к настройки UTM5:
Добавляем
брандмауэр:
Добавляем
правило firewall:
Заходим
в настройки пользователя и добавляем его в группу «Ясенево».
Перезапускаем:
/etc/init.d/utm5_rfw_cisco_1.1.1.1_on stop
/etc/init.d/utm5_rfw_cisco_1.1.1.1_on start
Аналогичные действия проделываем и для
отключения интернета.
Скрипты для маршрутизаторов рекомендуется
не группировать, в отличие от коммутаторов. Маршрутизаторы могут быть разными,
как и интерфейсы. Обрабатывание скриптов на маршрутизаторах ограничиваем по
группам.
На этом предлагаю закончить.
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!
Комментариев нет:
Отправить комментарий