Установка Netup UTM5 не так проста как кажется...
Биллинговая система Netup UTM активно используеться многими пользователями и провайдерами, об этом говорит форум со сотнями сообщений. Установку биллинга можно произвести с помощью официальной документации, но как оказалось установить его не так просто даже по документации идущей с биллингом. Вся информация по решению проблем во время установки разбросана по форумам. Если Вы в первый раз устанавливаете этот биллинг, Вас подстерегают неприятности на первом же шагу.
Итак мы имеем: Компьютер с двумя сетевыми адаптерами, первый адаптер eth0 подключен к Интернету, второй eth1 подключен в локальную сеть. Допустим что Интернет уже настроен на этом компьютере и мы хотим просто раздать Интернет в локальной сети с квотами (лимитами). Все это будем ставить на CentOS 5.5 x32, версия биллинга у нас utm5-2.1.005.rpm
Установка будет проходить по следующей последовательности:
1. Установка NetUp UTM5
2. Установка MySQL
3. Создание базы для UTM
4. Заливка лицензионного ключа
5. Создание симлинков на библиотеки OpenSSL
6. Установка не достающих пакетов
7. Правка конф. файлов для нормального запуска
8. Запуск ядра биллинга
9. Открытие порта 11758 фаервола сервера
10. Запуск интерфейса администратора
Приступим к установке...
1. Установка NetUp UTM5
# rpm –ihv --nodeps utm5-2.1.005.rpm
После установки, UTM5 расположиться в папке /netup/utm5/
2. Установка MySQL
# yum install mysql mysql-devel mysql-server -y
Поместим его в автозапуск:
# service mysqld start //запустим демон MySQL
# service httpd start //запустим демон Apache
# chkconfig --level 35 mysqld on //добавим демон MySQL в автозагрузку
# chkconfig --level 35 httpd on //добавим демон Apache в автозагрузку
3. Создание базы для UTM
Создадим базу для UTM:
# mysqladmin create UTM5
# mysql UTM5 < /netup/utm5/UTM5_MYSQL.sql
ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--------------
CREATE TABLE pre_invoice (
id int(11) NOT NULL auto_increment,
' at line 1
Выскочила ошибка, первый глюк который начинающего установщика ставит в ступор и заставляет зайти на форум и узнать почему же так. Ошибка заключается в комментариях.
Решение данного глюка в удалении комментариев:
# sed '/^\--/d' ./UTM5_MYSQL.sql > tmp.sql
Данная комманда убирает все комментарии и создает рабочий файл tmp.sql. Теперь подправим нашу комманду с учетом изминений:
# mysql UTM5 < /netup/utm5/tmp.sql
4. Заливка лицензионного ключа
Далее нам нужно импортировать лицензионный ключ, без него UTM не стартует:
# mysql UTM5 < reg_key.sql
5. Создание симлинков на библиотеки OpenSSL
Тут нас подстерегает еще один глюк:
/netup/utm5/bin/utm5_core: error while loading shared libraries: libssl.so.0.9.7: cannot open shared object file: No such file or directory
Решается симлинками:
# ln -s /usr/lib/libssl.so.0.9.8e /usr/lib/libssl.so.0.9.7
# ln -s /usr/lib/libcrypto.so.0.9.8e /usr/lib/libcrypto.so.0.9.7
Может быть так еще
# ln -s /lib/libssl.so.0.9.8e /lib/libssl.so.0.9.7
# ln -s /lib/libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.7
6. Установка не достающих пакетов
# yum search compat-libstdc++
# yum install compat-libstdc++-33-3.2.3-61.i386
Если в системе нет пакетов которые мы установили выше, будет выскакивать следующая ошибка:
/netup/utm5/bin/utm5_core: /lib/libstdc++.so.5: version `CXXABI_1.2' not found (required by /netup/utm5/bin/utm5_core)
/netup/utm5/bin/utm5_core: /lib/libstdc++.so.5: version `GLIBCPP_3.2' not found (required by /netup/utm5/bin/utm5_core)
7. Правка конф. файлов my.cnf и utm5.conf
Нужно отредактировать файл utm5.conf согласно с настройками файла my.cnf
# gedit /etc/my.cnf
В нем найдите строчку:
socket = /var/run/mysql/mysql.sock
Скопируйте в буфер параметр /var/run/mysql/mysql.sock
Закройте файл my.conf
Далее откройте файл /netup/utm5/utm5.cfg:
# gedit /netup/utm5/utm5.cfg
Найдите в нем строчку:
database_sock_path=/var/run/mysql/mysql.sock
Удалите содержимое параметра (текст после равно) и вставте из буфера /var/run/mysql/mysql.sock
Данная правка конфигурационных файлов избавляет от ошибки:
ERROR : May 07 10:26:51 DBASQLError: MySQL Connection Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Если вдруг у вас появляется ошибка:
CRIT: RPCServer@0.0.0.0: Unable to bind to address 0.0.0.0:11758: Address already in use
CRIT: NFBuffer: Unable to bind to address 127.0.0.0:9996 Address already in use
Сделайте следующее для исправления, откройте файл utm5.conf:
# gedit /netup/utm5/utm5.conf
Найдите следующие строчки и раскоментируйте их:
database_host=localhost
database_port=3306
localhost замените на 127.0.0.1
8. Запуск ядра биллинга
# /etc/rc.d/init.d/utm5_core start
Поставим его в автозгрузку:
# chkconfig --add utm5_core
chkconfig utm5_core on
# chkconfig --level 356 utm5_rfw on
В нашем случае мы не используем Radius, поэтому демон utm5_radius не требуется вставлять в автозагрузку, но для примера приведу команду вставки его в автозагрузку:
# chkconfig --level 356 utm5_radius on
После требуется перезагрузить наш шлюз:
# reboot
9. Открытие порта 11758 фаервола сервера
Обычно встроенную цепочку RH-Input не используют для настройки фаервола, так как настройка в графической оболочке обычно используется на домашних компьютерах, а не на серверах. Для наглядности буду изменять настройки фаервола в графическом виде. Все изменения в этом окошке, отразятся в цепочке RH-Input.
Зайдите в главное меню System->Administration->Security level and Firewall
Конечно настройка фаервола через графический интерфейс не есть "Линукс Вэй", но хороша для понимания. Кому надо лучше, пишите правила фаервола в консоли.
10. Запускаем интерфейс администратора
Интерфейс администратора нужен для настройки биллинга, запускается с другой машины.
До запуска интерфейса администратора установите Java Machine c офиц. сайта www.java.com
В комплекте с биллингом идет файлик UTM_Admin.jar, запускаем его.
Вводим IP компьютера на котором установлен биллинг, логин/пароль (init/init)
и
смотрим:
Все биллинг установлен.
После этого всего у меня осталось ошущение, что все таки криво где-то
___________________________________________________________________________________________________________
Еще хочу добавить не много слов о лицензии. Лицензионный ключ от версии 5.2.005 не подходит для версии 5.2.006 и выше, так как система лицензирования поменялась. Поэтому если Вы захотите использовать старый ключ с версией 006 и далее, у Вас появится следующая ошибка:
ERROR 1146 at line 1: Table 'UTM5.registration_info'doesn't exist
Решения для этого нет, разве что могу посоветовать купить лицензию как нормальный человек, а не студент.
Еще может быть вот такая ошибка:
Invalid UTM5 core version
biz.netup.project.utmadmin bla bla bla
Это значить что Вы пытаетесь соединится админ интерфейсом не совместимым со серверной частью биллинга (ядром). Для исправления нужны биллинг и админ клиент одинаковых версий. Иначе Вы не сможете соединится с биллингом.
Настройка UTM5
Для настройки нам нужно:
1. Установить сенсор (IPCAD, FPROBE-ulog, NG_NETFLOW)
Сенсор - это программа отслеживающая (протоколирующая) проходящий трафик, то есть она регистрирует откуда/куда ушел пакет. Данные зафиксированные сенсором отправляются коллектору. Коллектор - это хранилище данных, поступающих от сенсора. В роли хранилищя данных (коллектора) поступающих от сенсора может выступать база MYSQL например. У нас сенсором будет IPCAD, а коллектор мы будем использовать встроенный в UTM5, который будет складывать все в базу MySQL.
2. Настройка файервола (IPTABLES)
Настройка правил файервола позволит нам включать/отключать пользователей от Интернета автоматически (при превышении квоты) или прямо из интерфейса администратора биллинговой системы.
3. Правка UTM5.cfg на получение потока данных от IPCAD
Коллектор UTM5 по умолчанию принимает данные всех сенсоров (0.0.0.0), что нам не нужно, так как сенсор и коллектор у нас на одном компьютере мы должны задать localhost
4. Настройка самого UTM5
Базовая настройка, без которой Вы не сможете использовать биллинг.
Приступим к настройке (базовой).
1. Установка сенсора IPCAD
# yum install libpcap libpcap-devel -y
# wget http://centos.alt.ru/pub/ipcad/RHEL/RPMS/i386/ipcad-3.7.3-4.el5.i386.rpm
# rpm -ihv ipcad-3.7.3-4.el5.i386.rpm
Конфигурационный файл находится в /etc/ipcad.conf, иногда может быть в другом месте
#-------------Начало файла-----------------
interface eth0;
interface eth1;
netflow export destination 127.0.0.1 9996;
netflow export version 5;
pidfile = /var/run/ipcad.pid;
dumpfile = /var/log/ipcad/ipcad.dump;
#-------------Конец файла------------------
Сохраянем файл ipcad.conf
# mkdir /var/log/ipcad/
# chmod 600 /var/log/ipcad/
Ставим IPCAD в автозагрузку:
# chkconfig --level 345 ipcad on
# reboot
# ipcad -rds
Все IPCAD установлен!
Откройте файл /netup/utm5/utm5.cfg, в нем провертье чтобы были следующие строчки:
nfbuffer_host=127.0.0.1
nfbuffer_port=9996 // на этот порт будут отправляеться информация с сенсора IPCAD, коллектор UTM5 будет собирать.
2. Настройка файервола (IPTABLES)
Запускаем терминал и строчим:
# iptables -P FORWARD DROP
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.20.30.40
А теперь давайте разберем для чего эти команды:
# iptables -P FORWARD DROP
Этой коммандой мы запретили прохождение пересылаемых пакетов (действие по умолчанию). Теперь пакеты с локальной сети не уйдут в Интернет. Точнее сказать доступа в Интернет не будет не у одной машины локальной сети. Доступ в Интернет будет автоматически управляться UTM5.
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.20.30.40
Настройка NAT (Network Address Translation), это нужно для обеспечения общего доступа в Интернет компьютеров локальной сети.
Где:
eth0 - Сетевой адаптер подключенный к Интернету
192.168.1.0/24 - Наша локальная сеть (подсеть)
10.20.30.40 - IP адрес внешнего адаптера
Тепер надо проверить включилось ли правило. Вводим:
# iptables -nL
Получаем список правил, обратите внимания на текст с жирным шрифтом:
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.1.0/24 0.0.0.0/0 to:10.20.30.40
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Как видим правила заработали, обратите внимания на строчки с жирным шрифтом.
Теперь удалите правило RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 , это правило будет пускать всех в Интерент даже после FORWARD DROP:
# iptables -D FORWARD 1
Откройте файл /etc/sysctl.conf:
# gedit /etc/sysctl.conf
Найдите в нем строчку net.ipv4.ip_forward = 0, затем измините 0 на 1, получится так net.ipv4.ip_forward = 1
Это разрешает форвардинг(пересылку) пакетов с локальной сети в Интернет через наш шлюз.
Теперь сохраним наши прописанные правила:
# service iptables save
# sysctl -p
На ваших компьютерах локальной сети не должно быть Интернета. Теперь Интернет должен включать/отключать UTM5, но нам нужно проверить вручную будут ли работать правила которые UTM5 будет применять к компьютерам локальной сети. Давайте включим и отключим один клиентский компьютер, допустим он имеет IP адрес 192.168.1.50:
# iptables -A FORWARD -s 192.168.1.50 -j ACCEPT
После этой команды проверьте наличие Интернета на компьютере с адресом 192.168.1.50.
Теперь давайте запретим выход в Интернет компьютеру с IP адресом 192.168.1.50:
# iptables -D FORWARD -s 192.168.1.50 -j ACCEPT
После этой команды Интернета на компьютере с адресом 192.168.1.50 не должно быть.
Как видете ручное включение/отключение работает как надо. Осталось настроить сам UTM5 из под админки. Заходим в админку и идем в меню НАСТРОЙКИ->ПРАВИЛА ФАЕРВОЛА. Прописываем следующие правила-
Делаем два правила:
Вкл:iptables -A FORWARD -s 0/0 -d UIP -j ACCEPT
Выкл:iptables -D FORWARD -s 0/0 -d UIP -j ACCEPT
И
Вкл:iptables -A FORWARD -d 0/0 -s UIP -j ACCEPT
Выкл:iptables -D FORWARD -d 0/0 -s UIP -j ACCEPT
Эти правила работают (отключают/включают Интернет)
Если к этим правилам добавить маску (UBITS) правила не срабатывали, оказалось что UTM вставлял за место UIP всю сетку 10.168.50.0 с маской 255.255.255.0
А вот правила ниже которые, вообще не работают, может я что-то делаю не так:
Включение Интернета: -A FORWARD -s UIP -j ACCEPT
Отключение Интернета: -D FORWARD -s UIP -j ACCEPT
Провертье все запушенные демоны (сервисы) на наличие utm5_core, utm5_radius и utm5_rfw:
chkconfig --list
utm5_core 0:off 1:off 2:on 3:on 4:on 5:on 6:off
utm5_radius 0:off 1:off 2:on 3:on 4:off 5:on 6:on
utm5_rfw 0:off 1:off 2:on 3:on 4:off 5:on 6:on
Как видим запущено три демона UTM.
Теперь надо настроить UTM5, завести классы трафика, услугу, первого пользователя...
- Классы трафика. Вкладка Тарификация - > Классы трафика
Здесь редактируем классы трафика:
Incoming -
Источник 0.0.0.0 / 0.0.0.0 Адресат 10.168.50.0 / 255.255.255.0 (Наша локальная сеть)
Outgoing -
Источник 10.168.50.0 / 255.255.255.0 Адресат 0.0.0.0 / 0.0.0.0
Internal (Локальный трафик)
Источник 10.168.50.0 / 255.255.255.0 Адресат 10.168.50.0 / 255.255.255.0
- Услуги. Тарификация -> Услуги
Нажимаем кнопку Обновить -> Добавить
Называем услугу Платный трафик
Тип услуги Передача IP-трафика
Галка Фиктивная услуга
После повявится окошко, в нем:
Метод снятия денег В течении всего расчетного периода
Границы тарификации - Нажымаем кнопку Добавить
Добавляем Классы трафика и указываем стоимость. Так как у нас провайдер Интелсофт, который учитвает только входящий трафик по цене 1 тенге = 1 Мбайт, поэтому мы добавляем границе Incoming: Количество 0 - Стоимость 1
- Тарифный план. Тарификация -> Тарифные планы
Добавляем тарифный план, назовем его Интернет по трафику. В качестве услуги тарифного плана, будет выступать уже созданная нами услуга Платный трафик в предыдущем шаге. Также включите опцию Подключать услугу автоматически.
- Добавление пользователя. Пользователи и группы -> Пользователи
Нажмите кнопку Добавить, для добавления пользователя.
Введите логин -> Нажмите кнопку Применить
Далее перейдите во вкладку Тарифные планы, шелкнув соотвествующию вкладку и нажмите кнопку Добавить
Выберите созданный нами тарифный план Интернет по трафику, в Расчетный период укажите тип периода Ежемесячно. Далее нажмите кноку Применить
Появится еще одно окно, в этом окне нажмите кнопку Добавить, укажите IP компьютера локальной сети (я выбрал 10.168.50.50) с маской 255.255.255.0.
Фаервол укажите LOCAL
Нажмите ОК
Теперь у Вас заведен первый пользователь (клиент), данный пользователь не может выйти в Интернет, чтобы он вышел выделите созданного пользователя и нажмите кнопку Редкатировать. Нажмите кнопку Внести платеж, в поле ввода Сумма введите 10 и нажмите ОК.
Теперь провертье работу UTM5, включил ли он Интернет указанному компьютеру, войдите в терминал:
# iptables -L FORWARD
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere 10.168.50.50
ACCEPT all -- 10.168.50.50 anywhere
Как видим UTM5 включил Интернет компьютеру с IP адресом 10.168.50.50, УРА ТОВАРИЩИ, УРА!