Главная   »   Форум   »   Операционные системы   »   *NIX (BSD/Linux/etc)   »   Установка Stargazer + Ubilling на Debian
Для полноценного использования сайта, рекомендуем Вам зарегистрироваться.

 Для полноценного использования сайта, рекомендуем зарегистрироваться.

Установка Stargazer + Ubilling на Debian

Пошаговая инструкция по установке Stargazer и Ubilling на операционную систему Debian для небольших сетей.
Администратор
Sergio
Сообщений: 61
Киев
298 дней назад
Здравствуйте уважаемые форумчане. В этой статье мы рассмотрим установку бесплатной биллинговой системы Ubilling в связке со Stargazer для начинающих. Данное руководство по установке подойдёт для небольших сетей, так как установка всей системы производится на одном сервере.

За основу была взята статья с сайта logalhost и немного дополнена.

Для начала нам понадобится чистая Debian GNU/Linux 7.8 (wheezy) (на момент написания статьи это самая свежая версия). Единственное что может быть предустановлено, это ssh сервер.

Сразу договоримся что мы вошли в систему под ROOT правами.

В нашем примере у нас будет два основных сетевых интерфейса и один виртуальный:
1. eth0 с IP адресом 10.10.20.10 на котором мы будем получать интернет.
2. eth1 с IP адресом 10.10.1.1 который будет раздавать интернет нашим пользователям.
3. eth1:1 (виртуальный интерфейс) с IP адресом 172.32.0.1 (его мы будем использовать для перенаправления пользователей с неизвестным MAC).

Для настройки интерфейсов пишем в консоли следующее:
Код PHP:
  1. nano /etc/network/interfaces
Открывшийся файл необходимо привести к следующему виду:
Код PHP:
  1. # This file describes the network interfaces available on your system
  2. # and how to activate them. For more information, see interfaces(5).
  3.  
  4. # The loopback network interface
  5. auto lo
  6. iface lo inet loopback
  7.  
  8. # The primary network interface
  9. auto eth0
  10. allow-hotplug eth0
  11. iface eth0 inet static
  12. address 10.10.20.10
  13. netmask 255.255.255.0
  14. gateway 10.10.20.1
  15.  
  16. # The secondary network interface
  17. auto eth1
  18. allow-hotplug eth1
  19. iface eth1 inet static
  20. address 10.10.1.1
  21. netmask 255.255.255.0
  22.  
  23. # The secondary network interface alias for unknown user
  24. auto eth1:1
  25. allow-hotplug eth1:1
  26. iface eth1:1 inet static
  27. address 172.32.0.1
  28. netmask 255.255.255.0
Далее необходимо установить необходимые пакеты, для этого в консоли пишем следующее:
Код PHP:
  1. apt-get install mysql-server-core-5.5 mysql-client-5.5 libmysqlclient18 libmysqlclient-dev phpmyadmin apache2 mysql-server expat libexpat1-dev php5-cli libapache2-mod-php5 php5-mysql dhcp3-server build-essential bind9 bandwidthd softflowd libxmlrpc-c3-dev sudo
При установке сервера баз данных MySQL нам будет задан вопрос по установке пароля для пользователя root, собственно вводим сложный пароль и подтверждаем его.
Дальше анализатор трафика bandwidthd спросит у нас на каком сетевом интерфейсе необходимо замерять трафик, указываем ему eth1.
Следующий вопрос от bandwidthd, это какие сети необходимо считать. Если в файле interfaces всё настроено правильно, то вам необходимо просто нажать Enter. Если же вы не настроили ваши сетевые интерфейсы тогда пропишите ваши сети.

Далее при установке пакетов могут выдаваться ошибки, на них не обращайте внимания, это потому что устанавливаемые пакеты ещё не настроены.

Далее необходимо настроить установленные нами пакеты.
Начнём с DHCP сервера. Необходимо указать на каком интерфейсе он будет работать. Для этого в консоли пишем:
Код PHP:
  1. nano /etc/default/isc-dhcp-server
В открывшемся файле необходимо исправить параметр INTERFACES=”” и привести его к виду INTERFACES=”eth1”.

Далее необходимо настроить bandwidthd. Для этого нам необходимо скопировать дефолтный файл конфигурации и настроить его.
Что бы это сделать пишем в консоли:
Код PHP:
  1. cd /usr/share/doc/bandwidthd/
  2. cp bandwidthd.conf /etc/bandwidthd/
  3. nano /etc/bandwidthd/bandwidthd.conf
После копирования и открытия файла /etc/bandwidthd/bandwidthd.conf, в нём нужно раскоментировать и изменить следующие строчки:
Код PHP:
  1. subnet 10.10.1.0/24
  2. dev "eth1"
  3.  
  4. #Log data to cdf file htdocs/log.cdf
  5. output_cdf true
  6.  
  7. #DEBCONF_OUTPUTCDF#
  8.  
  9. #Set the cdf log output directory
  10. log_dir "/var/lib/bandwidthd"
  11.  
  12. #Read back the cdf file on startup
  13. recover_cdf true
  14.  
  15. htdocs_dir "/var/lib/bandwidthd/htdocs"
Для того что бы получить доступ к bandwidthd через Web-интерфейс сделаем символическую ссылку:
Код PHP:
  1. ln -fs /var/lib/bandwidthd/htdocs/ /var/www/band
После этого можно перезапустить bandwidthd
Код PHP:
  1. /etc/init.d/bandwidthd restart
и проверить доступен ли он через Web. Открываем браузер и в адресной строке пишем http://10.10.1.1/band/

Далее проверим включён ли у нас модуль php в apache, Для этого пишем в консоли:
Код PHP:
  1. a2enmod php5
Если вы увидите надпись Module php5 already enabled, то модуль уже включён.

Следующим шагом, нам необходимо отредактировать файл /etc/sudoers и привести его к следующему виду:
Код PHP:
  1. #
  2. # This file MUST be edited with the 'visudo' command as root.
  3. #
  4. # Please consider adding local content in /etc/sudoers.d/ instead of
  5. # directly modifying this file.
  6. #
  7. # See the man page for details on how to write a sudoers file.
  8. #
  9. Defaults env_reset
  10. Defaults mail_badpass
  11. Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  12.  
  13. # Host alias specification
  14.  
  15. # User alias specification
  16. User_Alias BILLING = www-data
  17.  
  18. # Cmnd alias specification
  19.  
  20. # User privilege specification
  21. root ALL=(ALL:ALL) ALL
  22. BILLING ALL = NOPASSWD: ALL
  23.  
  24. # Allow members of group sudo to execute any command
  25. %sudo ALL=(ALL:ALL) ALL
  26.  
  27. # See sudoers(5) for more information on "#include" directives:
  28.  
  29. #includedir /etc/sudoers.d
Дальше мы устанавливаем шейпер HTB. В командной строке пишем:
Код PHP:
  1. cd /home/sergio
  2. wget downloads.sourceforge.net/project/htbinit/HTB.init/0.8.5/htb.init-v0.8.5?use_mirror=surfnet
  3. mv htb.init-v0.8.5?use_mirror=surfnet /usr/local/sbin/htb
  4. cd /usr/local/sbin/
  5. chmod +x htb
  6. ln -fs /usr/local/sbin/htb /etc/init.d/
Установленный шейпер будет хранить файлы в директории /etc/sysconfig/htb, нам необходимо создать саму директорию и файлы настроек. Пишем в командной строке:
Код PHP:
  1. mkdir -p /etc/sysconfig/htb
  2. cd /etc/sysconfig/htb
  3. touch eth0
  4. touch eth1
  5. touch eth0-2.root
  6. touch eth1-2.root
  7.  
Директория и файлы созданы, теперь наполним их содержимым (тут по очереди мы открываем каждый созданный нами файл и вносим в него по две строки):
Код PHP:
  1. nano /etc/sysconfig/htb/eth0
  2.  
  3. DEFAULT=0
  4. R2Q=100
  5.  
  6. nano /etc/sysconfig/htb/eth1
  7.  
  8. DEFAULT=0
  9. R2Q=100
  10.  
  11. nano /etc/sysconfig/htb/eth0-2.root
  12.  
  13. RATE=100Mbit
  14. CEIL=100Mbit
  15.  
  16. nano /etc/sysconfig/htb/eth1-2.root
  17.  
  18. RATE=100Mbit
  19. CEIL=100Mbit
Далее выполним компиляцию, запуск и вывод статистики шейпера HTB:
Код PHP:
  1. htb compile
  2. htb start
  3. htb stats
После выполнения этих трёх команд мы должны увидеть вывод следующего образа:
Код PHP:
  1. ### eth0: queueing disciplines
  2.  
  3. qdisc htb 1: root refcnt 2 r2q 100 default 0 direct_packets_stat 36
  4. Sent 4768 bytes 36 pkt (dropped 0, overlimits 0 requeues 0)
  5. rate 0bit 0pps backlog 0b 0p requeues 0
  6.  
  7. ### eth0: traffic classes
  8.  
  9. class htb 1:2 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b
  10. Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
  11. rate 0bit 0pps backlog 0b 0p requeues 0
  12. lended: 0 borrowed: 0 giants: 0
  13. tokens: 2000 ctokens: 2000
  14.  
  15. ### eth1: queueing disciplines
  16.  
  17. qdisc htb 1: root refcnt 2 r2q 100 default 0 direct_packets_stat 3
  18. Sent 242 bytes 3 pkt (dropped 0, overlimits 0 requeues 0)
  19. rate 0bit 0pps backlog 0b 0p requeues 0
  20.  
  21. ### eth1: traffic classes
  22.  
  23. class htb 1:2 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b
  24. Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
  25. rate 0bit 0pps backlog 0b 0p requeues 0
  26. lended: 0 borrowed: 0 giants: 0
  27. tokens: 2000 ctokens: 2000
Если вы увидели подобное, значит все нормально.

Следующим шагом, мы настроим агент для сбора статистики softflowd. Редактируем файл настроек softflowd, в консоли пишем:
Код PHP:
  1. nano /etc/default/softflowd
и дописываем в открывшийся файл следующие строки:
Код PHP:
  1. INTERFACE="eth1"
  2. OPTIONS="-n 10.10.1.1:42111"
Теперь переходим к установке одного из главных компонентов нашего сервера, это и есть тот самый stargazer. В консоли выполняем следующие команды:
Код PHP:
  1. mkdir /root/BILLING
  2. cd /root/BILLING
  3. wget http://stargazer.dp.ua/download/server/2.408/stg-2.408.tar.gz
  4. tar zxvf stg-2.408.tar.gz
  5. cd stg-2.408/projects/stargazer/
  6. ./build
  7. make install
  8. cd ../sgconf && ./build && make && make install
  9. cd ../sgconf_xml/ && ./build && make && make install
  10. cd /root/BILLING/stg-2.408/projects/stargazer/plugins/configuration/rpcconfig
  11. make && make install
Stargazer установлен, теперь перейдём к его настройке. Для этого необходимо скопировать файлы конфигурации из conf-available.d/ в conf-enabled.d/. Пишем в консоли следующее:
Код PHP:
  1. cd /etc/stargazer/conf-available.d/
  2. cp store_mysql.conf /etc/stargazer/conf-enabled.d/
  3. cp mod_rpc.conf /etc/stargazer/conf-enabled.d/
  4. cp mod_cap_nf.conf /etc/stargazer/conf-enabled.d/
  5. cp mod_remote_script.conf /etc/stargazer/conf-enabled.d/
ПРОДОЛЖЕНИЕ НИЖЕ
Редактировалось: 17 раз (Последний: 28 апреля 2017 в 19:36)
Администратор
Sergio
Сообщений: 61
Киев
298 дней назад
ПРОДОЛЖАЕМ

После копирования нам необходимо отредактировать некоторые конфигурационные файлы stargazer для того, что бы прописать наши новые (скопированные) модули. Для этого редактируем файл /etc/stargazer/stargazer.conf:
Код PHP:
  1. nano /etc/stargazer/stargazer.conf
и дописываем в нужные места следующий текст:
Код PHP:
  1. LogFile = /var/log/stargazer/stargazer.log
  2.  
  3. <DirNames>
  4. DirName0 = Internet
  5. DirName1 =
  6. DirName2 =
  7. DirName3 =
  8. DirName4 =
  9. DirName5 =
  10. DirName6 =
  11. DirName7 =
  12. DirName8 =
  13. DirName9 =
  14. </DirNames>
  15.  
  16. ################################################################################
  17. # Store module
  18. # Configure the module that works with the database server
  19.  
  20. # Warning: Only one store module could be used at the same time!
  21.  
  22. <IncludeFile "conf-enabled.d/store_mysql.conf">
  23. </IncludeFile>
  24. ################################################################################
  25. # Other modules
  26.  
  27. <Modules>
  28.  
  29. <IncludeFile "conf-enabled.d/mod_ao.conf">
  30. </IncludeFile>
  31.  
  32. <IncludeFile "conf-enabled.d/mod_ia.conf">
  33. </IncludeFile>
  34.  
  35. <IncludeFile "conf-enabled.d/mod_sg.conf">
  36. </IncludeFile>
  37.  
  38. <IncludeFile "conf-enabled.d/mod_cap_nf.conf">
  39. </IncludeFile>
  40.  
  41. <IncludeFile "conf-enabled.d/mod_rpc.conf">
  42. </IncludeFile>
  43.  
  44. <IncludeFile "conf-enabled.d/mod_remote_script.conf">
  45. </IncludeFile>
  46.  
  47. </Modules>
Теперь нам нужно создать файл для сбора логов Stargazer. Для этого в консоли выполняем следующие команды:
Код PHP:
  1. mkdir /var/log/stargazer/
  2. cd /var/log/stargazer/
  3. touch /var/log/stargazer/stargazer.log
Далее редактируем скопированные нами файлы конфигурации:
Код PHP:
  1. nano /etc/stargazer/conf-enabled.d/store_mysql.conf
Пишем в файл следующее (рекомендуется создать нового пользователя (НЕ ROOT) и выставить ему права на базу данных stg):
Код PHP:
  1. dbuser=root - ваш пользователь
  2. rootdbpass=password - ваш пароль
Редактируем следующий файл конфигурации модуля mod_cap_nf.conf:
Код PHP:
  1. nano /etc/stargazer/conf-enabled.d/mod_cap_nf.conf
Указываем в нём:
Код PHP:
  1. TCPPort = 42111
  2. UDPPort = 42111
Исправляем ещё один файл конфигурации для модуля mod_rpc.conf:
Код PHP:
  1. nano /etc/stargazer/conf-enabled.d/mod_rpc.conf
В нём необходимо изменить одну строку:
Код PHP:
  1. Port = 8081
Настраиваем последний файл конфигурации модуля mod_remote_script.conf:
Код PHP:
  1. nano /etc/stargazer/conf-enabled.d/mod_remote_script.conf
Изменяем в нём одну строку:
Код PHP:
  1. SubnetFile = /etc/stargazer/subnets
Следующим шагом мы создаём файл subnets. Выполняем команды приведённые ниже в консоли:
Код PHP:
  1. cd /etc/stargazer
  2. touch subnets
  3. nano subnets
  4. 10.10.1.0/24 10.10.20.10 - наши сети которые мы указывали в файле конфигурации сетевых интерфейсов
  5. chmod 777 subnets
Теперь необходимо поправить файл прав Stargazer:
Код PHP:
  1. nano /etc/stargazer/rules
и приводим его к следующему виду:
Код PHP:
  1. ALL 0.0.0.0/0 DIR0
Настройка Stargazer выполнена, теперь можно его запустить. В консоли пишем:
Код PHP:
  1. root@debian:/# stargazer
Если после ввода stargazer мы видим запрос ввода консоли, значит stargazer запустился. Для уверенности выполняем в консоли:
Код PHP:
  1. nano /var/log/stargazer/stargazer.log
Жмём Enter и мы должны увидеть подобное:
Код PHP:
  1. 2015-02-17 22:43:56 -- Stg v. 2.408
  2. 2015-02-17 22:43:56 -- Message queue created successfully. msgKey=5555 msgID=32768
  3. 2015-02-17 22:43:56 -- Timer thread started successfully.
  4. 2015-02-17 22:43:56 -- Storage plugin: mysql_store v.0.67. Loading successfull.
  5. 2015-02-17 22:43:56 -- Users started successfully.
  6. 2015-02-17 22:43:56 -- Traffcounter started successfully.
  7. 2015-02-17 22:43:56 -- Module: 'Remote script v 0.3'. Start successfull.
  8. 2015-02-17 22:43:56 -- Module: 'Stg configurator v.0.08'. Start successfull.
  9. 2015-02-17 22:43:56 -- Module: 'Stargazer RPC v. 0.2'. Start successfull.
  10. 2015-02-17 22:43:56 -- Module: 'Always Online authorizator v.1.0'. Start successfull.
  11. 2015-02-17 22:43:56 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
  12. 2015-02-17 22:43:56 -- Module: 'CAP_NF v. 0.4'. Start successfull.
  13. 2015-02-17 22:43:56 -- Stg started successfully.
  14. 2015-02-17 22:43:56 -- +++++++++++++++++++++++++++++++++++++++++++++
Это значит, что Stargazer запустился без ошибок.

Теперь останавливаем Stargazer. Выполнение следующей команды выполняем до тех пор, пока процесс stargazer будет не найден:
Код PHP:
  1. killall stargazer
Теперь перейдём к установке Ubilling. Для этого пишем в консоли:
Код PHP:
  1. cd /var/www/
  2. mkdir billing
  3. cd billing
  4. wget http://ubilling.net.ua/ub.tgz
  5. tar zxvf ub.tgz
Сам Ubilling распакован, дальше заливаем дамп базы данных MySQL:
Код PHP:
  1. cat /var/www/billing/docs/test_dump.sql | mysql -u root -p stg
Надеюсь вы создали пользователя для работы с базой данных stg. В приведённом выше запросе замените пользователя root на своего.

После того как дамп базы залит, переходим к редактированию конфигурационных файлов Ubilling, Первым редактируем файл настроек для доступа к базе данных:
Код PHP:
  1. nano /var/www/billing/config/mysql.ini
Изменяем в нём пользователя для работы с базой stg, а так же пароль для этого пользователя:
Код PHP:
  1. ;user login
  2. username = "root" - ваш логин
  3. ;user password
  4. password = "password" - ваш пароль
Следующий файл для редактирования billing.ini:
Код PHP:
  1. nano /var/www/billing/config/billing.ini
В нём нужно отредактировать пути:
Код PHP:
  1. SUDO=/usr/bin/sudo
  2. RC_DHCPD=/etc/init.d/isc-dhcp-server
Теперь необходимо перенести папку multinet:
Код PHP:
  1. cd /var/www/billing
  2. mv multinet multinet_back
Дальше переносим настройки dhcp:
Код PHP:
  1. mkdir /etc/dhcp_back
  2. mv /etc/dhcp/* /etc/dhcp_back/
Делаем символическую ссылку, для того что бы создаваемые Ubilling-ом настройки были доступны в папке /etc/dhcp:
Код PHP:
  1. ln -fs /var/www/billing/multinet/* /etc/dhcp/
Далее редактируем предустановленный файл DHCP для Ubilling, который расположен по адресу /var/www/billing/config/dhcp:
Код PHP:
  1. nano /var/www/billing/config/dhcp/global.template
Приводим его к виду:
Код PHP:
  1. option domain-name "НАЗВАНИЕ ВАШЕГО ПРОВАЙДЕРА";
  2. option domain-name-servers 10.10.1.1;
  3. default-lease-time 3600;
  4. max-lease-time 43200;
  5. authoritative;
  6. ddns-update-style none;
  7. log-facility local7;
  8. one-lease-per-client true;
  9. deny duplicates;
  10.  
  11. shared-network НАЗВАНИЕ ВАШЕГО ПРОВАЙДЕРА {
  12. {SUBNETS}
  13. }
Дальше редактируем файл /var/www/billing/config/dhcp/subnets.template:
Код PHP:
  1. nano /var/www/billing/config/dhcp/subnets.template
Он должен выглядеть примерно так:
Код PHP:
  1. subnet {NETWORK} netmask {MASK} {
  2. default-lease-time 3600;
  3. option domain-name "НАЗВАНИЕ ВАШЕГО ПРОВАЙДЕРА";
  4. option subnet-mask {MASK};
  5. option routers 10.10.1.1;
  6. include "/etc/dhcp/{HOSTS}";
  7. }
Дальше мы должны скопировать определённые скрипты и дать им права:
Код PHP:
  1. cp -f /var/www/billing/docs/presets/Linux/etc/* /etc/stargazer/
  2. chmod a+x /etc/stargazer/*
Редактируем настройки Stargazer и некоторые его скрипты:
Код PHP:
  1. nano /etc/stargazer/config
Изменяем в нём логины и пароли:
Код PHP:
  1. host = localhost
  2. username = root - ваш логин
  3. password = password - ваш пароль
  4. database = stg
В скриптах OnConnect и OnDisconnect изменяем пару строчек:
Код PHP:
  1. nano /etc/stargazer/OnConnect
  2.  
  3. IFUP="eth0"
  4. IFDOWN="eth1"
  5.  
  6. echo "$cur_date $cur_time CONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /var/log/stargazer/allconnect.log
И следующий файл:
Код PHP:
  1. nano /etc/stargazer/OnDisconnect
  2.  
  3. IFUP="eth0"
  4. IFDOWN="eth1"
  5.  
  6. echo "$cur_date $cur_time DISCONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /var/log/stargazer/allconnect.log
ПРОДОЛЖЕНИЕ НИЖЕ
Редактировалось: 8 раз (Последний: 4 марта 2017 в 20:27)
Администратор
Sergio
Сообщений: 61
Киев
298 дней назад
ПРОДОЛЖЕНИЕ

Теперь в трёх скриптах GetMAC, GetSpeed и GetUpSpeed необходимо изменить по одной строке, отвечающей за интерпретатор php, так как в Debian путь отличается от FreeBSD:
Код PHP:
  1. nano /etc/stargazer/GetMac
  2. #! /usr/bin/php
  3.  
  4. nano /etc/stargazer/GetSpeed
  5. #! /usr/bin/php
  6.  
  7. nano /etc/stargazer/GetUpSpeed
  8. #! /usr/bin/php
Создаём файл для хранения логов:
Код PHP:
  1. touch /var/log/stargazer/allconnect.log
Меняем права на папки billing и dhcp для того что бы Ubilling смог генерировать конфигурации для dhcp:
Код PHP:
  1. chown www-data:www-data -R /etc/dhcp
  2. chown www-data:www-data -R /var/www/billing
В файле /etc/sysctl.conf раскомментируем одну строку:
Код PHP:
  1. nano /etc/sysctl.conf
  2. net.ipv4.ip_forward=1
Редактируем файл /etc/stargazer/conf-enable/mod_remote_script.conf, исправить там одну ссылку:
Код PHP:
  1. nano /etc/stargazer/conf-enabled.d/mod_remote_script.conf
  2. SubnetFile = /var/www/billing/remote_nas.conf
В файл remote_nas.conf Ubilling будет записывать настройки NAS серверов.

Открываем браузер и переходим по адрессу /10.10.1.1/billing. Нам должна открыться страница ввода логина и пароля Ubilling. Для авторизации используем логин: admin и пароль: demo.

В разделе Сети и услуги создаём услугу Internet (можете назвать по своему).
Далее в разделе Сервера доступа (NAS) создадим NAS сервер:
Сеть: 1: 10.10.1.0/24, IP: 10.10.1.1, Имя сервера доступа: Local NAS, Тип сервера доступа: rscriptd, Ссылка на Bandwidthd: /band/

Запускаем stargazer:
Код PHP:
  1. stargazer
В разделе Сервер DHCP создадим наш сервер, имя конфигурации указываем eth1.conf (имя конфига можете указать своё).

В настройках Тарифы создаём тариф и в разделе Скорость тарифов зададим скорость созданному тарифу.
Регистрируем нового пользователя, указываем ему созданный нами тариф, а так же привязываем для пользователя MAC адрес.

В принципе на этом установка Stargazer и Ubilling закончена. Для полной надёжности перезагрузите сервер. После перезагрузки редактируем файл rc.local и вписываем туда запуск необходимых для работы процессов и правила для iptables:
Код PHP:
  1. nano /etc/rc.local
Перед текстом exit 0 дописываем такие строки:
Код PHP:
  1. # IPTables
  2. iptables -P FORWARD DROP
  3. # Разрешаем интернет в подсети пользователей
  4. iptables -t nat -A POSTROUTING -s 10.10.1.0/24 -o eth0 -j SNAT --to-source 10.10.20.10
  5. # Перенаправляем не известных пользователей
  6. iptables -t nat -A PREROUTING -p tcp -s 172.32.0.0/20 ! -d 10.10.1.0/24 -j DNAT --to 10.10.1.1
  7. # IPTables
  8.  
  9. # HTB
  10. /etc/init.d/htb start
  11.  
  12. # Stargazer
  13. stargazer
Далее создаём файл по адресу /var/www/index.php и вписываем в него следующее:

Этот файл мы создаём для того, что бы неизвестные нам MAC адреса перенаправлялись на страницу изменения MAC адреса, а так же при блокировке пользователей за неуплату они должны перенаправляться в свой кабинет.

На этом базовую настройку сервера для интернет провайдера можно считать законченной.

Настройку самостоятельного изменения MAC адреса и автоматическое перенаправление пользователей при задолженности мы рассмотрим немного позже.
Редактировалось: 3 раза (Последний: 11 апреля 2015 в 19:59)
Администратор
Sergio
Сообщений: 61
Киев
298 дней назад
И так, делаем перенаправление в личный кабинет пользователей при задолженности в Ubilling.
Для реализации перенаправления должников в личный кабинет на необходимо отредактировать 3 файла: "OnConnect, OnDisconnect и index.php".

Открываем файл OnConnect:
Код PHP:
  1. nano /etc/stargazer/OnConnect
Вставляем в открытый файл код который выделен на картинке красным:



Код PHP:
  1. # DELETE RULEZ FOR DEPTORS
  2. $IPT -t nat -D PREROUTING -p tcp -s $IP ! -d 10.10.1.0/24 -j DNAT --to 10.10.1.1
  3. while [ $? -eq 0 ]
  4. do
  5. $IPT -t nat -D PREROUTING -p tcp -s $IP ! -d 10.10.1.0/24 -j DNAT --to 10.10.1.1
  6. done
Этот код отвечает за удаление из iptables правил перенаправления, если пользователь оплатил услугу.

Дальше открываем файл OnDisconnect:
Код PHP:
  1. nano /etc/stargazer/OnDisconnect
В открытый файл будем добавлять код, который на картинке выделен красным:


Код PHP:
  1. # ADD RULEZ FOR DEPTORS
  2. iptables -t nat -A PREROUTING -p tcp -s $IP ! -d 10.10.1.0/24 -j DNAT --to 10.10.1.1
Этот код отвечает за добавление правила с перенапрвлением должника на статистику в iptables.

Последний файл который нам нужно изменить (или создать, если у вас его нет), это index.php

Открываем файл index.php:
Код PHP:
  1. nano /var/www/index.php
Приводим его к следующему виду:
Код PHP:
  1. <?
  2. if (preg_match("/10.10.1.[0-9]{1,3}/", $_SERVER["REMOTE_ADDR"])){
  3. echo'
  4. <script type="text/javascript">
  5. <!--
  6. window.location = "http://userstat.isp"
  7. -->
  8. </script>
  9. ';
  10. }
  11. ?>
Если вы не создавали собственный домен для личного кабинета пользователя, тогда измените строку http://userstat.isp на http://10.10.1.1/billing/userstats/index.php

На этом всё, теперь все пользователи которые не заплатили за услугу, будут попадать в свой личный кабинет, где указанно что у них задолженность.
Посетитель
Сообщений: 1
Оффлайн
Хоть бы копирайты дописали..... статья слизана с logalhost.ru .... просто некоторые слова, команды и даты изменены .... автор использует mcedit а Вы nano ...

в заголовке написано что stargazer 2.408 в логе написано 2.407

Первую дату забыли поменять ...
остальные поменяли ... время же осталось как в первоисточнике ....

2013-01-29 18:46:56 -- Stg v. 2.407-p1
2015-01-29 18:46:56 -- Message queue created successfully. msgKey=5555 msgID=0
2015-01-29 18:46:56 -- Timer thread started successfully.
2015-01-29 18:46:56 -- Storage plugin: mysql_store v.0.67. Loading successfull.
2015-01-29 18:46:56 -- Users started successfully.
2015-01-29 18:46:56 -- Traffcounter started successfully.
2015-01-29 18:46:56 -- Module: 'CAP_NF v. 0.4'. Start successfull.
2015-01-29 18:46:56 -- Module: 'Remote script v 0.3'. Start successfull.
2015-01-29 18:46:56 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
2015-01-29 18:46:56 -- Module: 'Always Online authorizator v.1.0'. Start successfull.
2015-01-29 18:46:56 -- Module: 'Stg configurator v.0.08'. Start successfull.
2015-01-29 18:46:56 -- Module: 'Stargazer RPC v. 0.2'. Start successfull.
2015-01-29 18:46:56 -- Stg started successfully.
2015-01-29 18:46:56 -- +++++++++++++++++++++++++++++++++++++++++++++


Мне не жалко что мой труд уходит в массы .... но хотел бы что бы ссылка на первоисточник была ....


Это наверное Ваш комментарий:

sergio:
Здравствуйте. Делал все по выше указанной инструкции, stargazer работает, ubilling работает, IP в локальной сети созданному пользователю в ubilling назначаются, DNS работает (т.е. nslookup и ping определяет IP адреса доменов), но в Интернет не пускает. Подскажите в чём может быть проблема и в какую сторону копать.
Заранее благодарен за ответ.
Администратор
Sergio
Сообщений: 61
Киев
298 дней назад
Согласен, логи запуска Stargazer скопировал, так как было лень заходить на сервер и копировать у себя (уже изменил на собственные). Первоначальная настройка сервера производилась с помощью вашей статьи. Но эта тема писалась по проделанной мною работе. Так же в этой теме я планирую ещё рассмотреть настройку виртуалхостов, настройку работы UHW, настройку приёма платежей Ubilling через интернет и т.д.

Ссылка на первоисточник указанна в самом первом посте. Мне тоже не жалко указать ссылку на Ваш сайт, так как благодаря именно Вашей статье, сервер с Ubilling и Stargazer был первоначально запущен.
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 19:24)
Администратор
Sergio
Сообщений: 61
Киев
298 дней назад
Для удобного отслеживания работы DHCP сервера переводим запись логов в отдельный файл который у нас будет расположен /var/log/dhcpd.log
А так же установим службу Arpwatch для отслеживания подозрительный действий в нашей сети.
Первым делом создадим файл для записи логов:
Код PHP:
  1. touch /var/log/dhcpd.log
  2. chmod 0777 /var/log/dhcpd.log
Далее в конфигурационном файле /etc/rsyslog.conf сделаем небольшие изменения (обратите внимание на строку содержащую Logging ISC DHCP Server), для этого выполним следующее:
nano /etc/rsyslog.conf
Код PHP:
  1. #
  2. # Logging for the mail system. Split it up so that
  3. # it is easy to write scripts to parse these files.
  4. #
  5. mail.info -/var/log/mail.info
  6. mail.warn -/var/log/mail.warn
  7. mail.err /var/log/mail.err
  8.  
  9. #
  10. # Logging ISC DHCP Server
  11. #
  12. !dhcpd
  13. *.* /var/log/dhcpd.log
  14.  
  15. #
  16. # Logging for INN news system.
  17. #
  18. news.crit /var/log/news/news.crit
  19. news.err /var/log/news/news.err
  20. news.notice
После этого, откроем файл настроек Ubilling nano /var/www/billng/config/alter.ini
меняем путь к файлу логов DHCP:

Код PHP:
  1. NMLEASES = /var/log/dhcpd.log
Теперь перезагрузим службу логирования и сервер DHCP:
Код PHP:
  1. service rsyslog restart
  2. service isc-dhcp-server restart
После выполненных действий в файле /var/log/dhcpd.log мы должны увидеть примерно следующее:
Код PHP:
  1.  
  2. Jun 16 21:08:41 ZT-L1 isc-dhcp-server[4695]: Stopping ISC DHCP server: dhcpd.
  3. Jun 16 21:08:41 ZT-L1 dhcpd: Internet Systems Consortium DHCP Server 4.3.1
  4. Jun 16 21:08:41 ZT-L1 dhcpd: Copyright 2004-2014 Internet Systems Consortium.
  5. Jun 16 21:08:41 ZT-L1 dhcpd: All rights reserved.
  6. Jun 16 21:08:41 ZT-L1 dhcpd: For info, please visit https://www.isc.org/software/dhcp/
  7. Jun 16 21:08:41 ZT-L1 dhcpd: Internet Systems Consortium DHCP Server 4.3.1
  8. Jun 16 21:08:41 ZT-L1 dhcpd: Copyright 2004-2014 Internet Systems Consortium.
  9. Jun 16 21:08:41 ZT-L1 dhcpd: All rights reserved.
  10. Jun 16 21:08:41 ZT-L1 dhcpd: For info, please visit https://www.isc.org/software/dhcp/
  11. Jun 16 21:08:41 ZT-L1 dhcpd: Wrote 0 leases to leases file.
  12. Jun 16 21:08:41 ZT-L1 dhcpd: Server starting service.
  13. Jun 16 21:08:43 ZT-L1 isc-dhcp-server[4702]: Starting ISC DHCP server: dhcpd.
  14.  
Приступим к установке и настройке Arpwatch:

Код PHP:
  1. apt-get install arpwatch
Создадим файлик /var/lib/arpwatch/arp.dat и установим пользователя arpwatch для этого файла:

Код PHP:
  1. touch /var/lib/arpwatch/arp.dat
  2. chown arpwatch:arpwatch /var/lib/arpwatch/arp.dat
Далее отредактируем конфигурацию arpwatch, nano /etc/arpwatch.conf, в конец файла допишем следующее:

Код PHP:
  1. eth1 -a -n 10.10.1.0/24 -m mail@mydomain.com
Естественно изменяем mail@mydomain.com на свой Email, если мы не хотим получать отчёты на почту, тогда удалите -m mail@mydomain.com.
Далее редактируем файл глобальных настроек Arpwatch, nano /etc/default/arpwatch, файл должен выглядеть примерно так:

Код PHP:
  1.  
  2. # Global options for arpwatch(8).
  3.  
  4. # Debian: don't report bogons, don't use PROMISC.
  5. ARGS="-N -p"
  6.  
  7. # Debian: run as `arpwatch' user. Empty this to run as root.
  8. RUNAS="arpwatch"
  9.  
Редактируем файл службы сбора логов nano /etc/rsyslog.conf и дописываем следующее (обратите внимание на строку содержащую слово Logging ARPWATCH):

Код PHP:
  1. #
  2. # Logging for the mail system. Split it up so that
  3. # it is easy to write scripts to parse these files.
  4. #
  5. mail.info -/var/log/mail.info
  6. mail.warn -/var/log/mail.warn
  7. mail.err /var/log/mail.err
  8.  
  9. #
  10. # Logging ISC DHCP Server
  11. #
  12. !dhcpd
  13. *.* /var/log/dhcpd.log
  14.  
  15. #
  16. # Logging ARPWATCH
  17. #
  18. !arpwatch
  19. *.notice /var/log/messages
  20.  
  21. #
  22. # Logging for INN news system.
  23. #
  24. news.crit /var/log/news/news.crit
  25. news.err /var/log/news/news.err
  26. news.notice -/var/log/news/news.notice
  27.  
  28. #
  29. # Some "catch-all" log files.
  30. #
  31.  
Запускаем службу Arpwatch:

Код PHP:
  1. service rsyslog restart
  2. service arpwatch start
Теперь в Ubilling в разделе ARPдиагностика мы сможем наблюдать полезные для выявления проблем данные.
Редактировалось: 4 раза (Последний: 17 июня 2016 в 21:43)
Перейти на форум:
Быстрый ответ
У вас нет прав, чтобы писать на форуме.