Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: Morozikfeo от 16 Ноября 2013, 19:32:11



Название: Помогите стартануть
Отправлено: Morozikfeo от 16 Ноября 2013, 19:32:11
Добрый день всем.
Устанавливаю Демку, всё по инструкции на Freebsd 8.4 AMD64
На сервере аппаратный рейд RAID 1
Все пароли как в мануале по умолчанию
Сделал предварительную настройку, завёл пользователя со статическим адресом 10.0.0.12 и даю статус: Всегда онлайн, Доступ разрешён и Всё ОК.
На клиенте прописываю:
IP= 10.0.0.12
255.255.255.0
шлюз 10.0.0.1
ДНС 1.1.1.1
Интернета на клиенте нет.
Если ввести в консоле ipfw table 100 add 0.0.0.0/0 Интернет есть.

Внешний интерфейс bce0 192.168.1.50
К клиентам bce1 10.0.0.1

вывод: ps -ax | grep no
Цитировать
[root@billing /usr/home/morozik]# ps -ax | grep no
    5  ??  DL     0:00.00 [ciss_notify0]
 1054  v0- S      0:00.26 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d (perl5
 1055  v0- S      0:00.20 /usr/bin/perl /usr/local/nodeny/noserver.pl -d (perl5
 1487   0  S+     0:00.00 grep no

Внешний интерфейс bce0 192.168.1.50
К клиентам bce1 10.0.0.1
Если из автозагрузки убрать noserver.pl и запустить в режиме perl noserver.pl -v  получаем:

Цитировать
t@billing /usr/home/morozik]# cd /usr/local/nodeny
[root@billing /usr/local/nodeny]# perl noserver.pl -v
Start. Flag -h for help

loading /usr/local/nodeny/sat.cfg

Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_t                                              imeout=5 : 0.021785 sec

loading noserver::nofire.pm

loading noserver::scripts.pm

loading noserver::shapes.pm

SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'
Строк: 2. Время выполнения sql: 0.0004 сек

SELECT SQL_BUFFER_RESULT * FROM nets WHERE priority>0 ORDER BY priority
Строк: 2. Время выполнения sql: 0.0001 сек

Добавление в фаервол сети 10.0.0.0/8 направления 4

Добавление в фаервол сети 0.0.0.0/0 направления 1

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u J                                              OIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a J                                              OIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='                                              on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u                                              .id)
Строк: 1. Время выполнения sql: 0.0001 сек

SELECT SQL_BUFFER_RESULT uid, SUM(in1+in2+in3+in4) AS traf_in, SUM(out1+out2+out3+out4) AS traf_out FROM users_trf GROUP BY uid
Строк: 2. Время выполнения sql: 0.0002 сек

SELECT uid, param FROM v_services WHERE tags LIKE '%,inet,%'
Строк: 2. Время выполнения sql: 0.0001 сек

Fw On uid: 2, ip: 10.0.0.12, вх.скор: 1024 КБит/с

add 18500 fwd 127.0.0.1, 8080 tcp from any to any 80
add 18501 deny ip from any to any
add 46500 deny ip from any to any
add 60000 deny ip from any to any
add 32000 deny ip from any to any
table 14 flush
table 24 flush
add 5000 skipto 18502 ip from table(24) to table(14)
add 18502 pipe tablearg ip from table(24) to any
table 34 flush
add 33000 skipto 46501 ip from table(14) to table(34)
add 46501 pipe tablearg ip from any to table(34)
add 5001 allow ip from table(44) to table(14)
add 33001 allow ip from table(14) to table(44)
table 14 add 10.0.0.0/8
table 11 flush
table 21 flush
add 5002 skipto 18503 ip from table(21) to table(11)
add 18503 pipe tablearg ip from table(21) to any
table 31 flush
add 33002 skipto 46502 ip from table(11) to table(31)
add 46502 pipe tablearg ip from any to table(31)
add 5003 allow ip from table(41) to table(11)
add 33003 allow ip from table(11) to table(41)
table 11 add 0.0.0.0/0
pipe 1006 config bw 1024000bit/s
pipe 1001 config bw 1024000bit/s
table 31 add 10.0.0.12 1006
table 21 add 10.0.0.12 1001


 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'
Строк: 2. Время выполнения sql: 0.0001 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

SELECT SQL_BUFFER_RESULT uid, SUM(in1+in2+in3+in4) AS traf_in, SUM(out1+out2+out3+out4) AS traf_out FROM users_trf GROUP BY uid
Строк: 2. Время выполнения sql: 0.0001 сек

SELECT uid, param FROM v_services WHERE tags LIKE '%,inet,%'
Строк: 2. Время выполнения sql: 0.00008700 сек

SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'
Строк: 2. Время выполнения sql: 0.0001 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'
Строк: 2. Время выполнения sql: 0.0002 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

SELECT SQL_BUFFER_RESULT uid, SUM(in1+in2+in3+in4) AS traf_in, SUM(out1+out2+out3+out4) AS traf_out FROM users_trf GROUP BY uid
Строк: 2. Время выполнения sql: 0.0001 сек

SELECT uid, param FROM v_services WHERE tags LIKE '%,inet,%'
Строк: 2. Время выполнения sql: 0.00008800 сек

 SELECT u.id, a.ip, u.balance FROM ( SELECT INET_NTOA(i.ip) AS ip FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION SELECT ip FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE u.state='on' AND  EXISTS (SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' AND uid=u.id)
Строк: 1. Время выполнения sql: 0.0001 сек

SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'
Строк: 2. Время выполнения sql: 0.0001 сек

Подскажите в каком направлении копать?




Название: Re: Помогите стартануть
Отправлено: Efendy от 16 Ноября 2013, 20:54:13
для того чтобы работала заглушка используется команда fwd  фаервола, но по умолчанию она не скомпилена в ядре. Поэтому 2 варианта:
1) перекомпилить ядро (в доке это есть)
2) закомментировать строку
Код:
$M->{fw}{rules} .= 'add '.$M->{fw}{cursor_out2}++." fwd 127.0.0.1, $port tcp from any to any 80\n";
в /usr/local/nodeny/noserver/nofire.pm если заглушка не нужна


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 17 Ноября 2013, 19:46:45
для того чтобы работала заглушка используется команда fwd  фаервола, но по умолчанию она не скомпилена в ядре. Поэтому 2 варианта:
1) перекомпилить ядро (в доке это есть)
2) закомментировать строку
Код:
$M->{fw}{rules} .= 'add '.$M->{fw}{cursor_out2}++." fwd 127.0.0.1, $port tcp from any to any 80\n";
в /usr/local/nodeny/noserver/nofire.pm если заглушка не нужна

Спасибо сделал по 1 варианту и сразу заработало.

Далее настраиваю MPD5, опять же всё согласно инструкции, дохожу до места где нужно cоздать MySQL процедуры, но при вводе в консоль MySQL данных с документации получаю:
Цитировать
mysql> DROP PROCEDURE IF EXISTS `radcheck`;
ERROR 1370 (42000): alter routine command denied to user 'nodeny'@'localhost' for routine 'nodeny.radcheck'
mysql> DELIMITER $$
mysql> CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
    -> BEGIN
    ->   SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass') AS Value,'=='
    ->     FROM users WHERE name=login;
    -> END$$
ERROR 1044 (42000): Access denied for user 'nodeny'@'localhost' to database 'nod eny'
mysql> DELIMITER ;
mysql>
так со всеми процедурами.
Я так понимаю что пользователь nodeny не имеет права доступа с Localhost, как дать ему эти права? или я не в правильном направлении мыслю?


Название: Re: Помогите стартануть
Отправлено: Efendy от 17 Ноября 2013, 21:37:18
от рута  создай процедуры


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 18 Ноября 2013, 14:38:40
от рута  создай процедуры
Я так сразу и сделал, просто был не уверен что правильно сделал.
Да ещё если ядро компилировалось по Вашей инструкции, то во время установки вот эти записи не нужно делать?:
Цитировать
echo ipfw_load=\"YES\" >> /boot/loader.conf
echo ipdivert_load=\"YES\" >> /boot/loader.conf
echo dummynet_load=\"YES\" >> /boot/loader.conf
Я так понимаю что эти модули подгружает теперь ядро.

и ещё вопросы:
1. после разрыва подключения PPPoE в админке клиент висит авторизованный ещё примерно 3-4 минуты, так и должно быть?
2. в ознакомительной версии заглушка работает или это уже отдельный модуль и его нужно подключить только после покупки?
3. После покупки нужно будет всё с нуля ставить или есть переход с ознакомительной на коммерческую версию?


Название: Re: Помогите стартануть
Отправлено: Efendy от 18 Ноября 2013, 14:47:21
0. Если в ядре скомпилены эти модули, то подгружать их не нужно в /boot/loader.conf
1. Да, так и задумано, поскольку (так уж устроен этот мир) оборудование/проги глючат (лагают) время от времени, поэтому нужно не сразу вырубать, а давать возможность исправиться. Можно это время сократить, но на таком принципе нодени уже работает черти сколько лет и проблем в этом не было, так что не стоит
2. Да, заглушка работает
3. Достаточно переименовать /usr/local/nodeny  в /usr/local/nodeny.old (для бекапа), загрузить n+ с нового репозитория, заменить sat.cfg  со старого, perl install.pl -w=www и все заработает


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 18 Ноября 2013, 18:23:04
Еще пару вопросов для ознакомления:
Существует ли возможность создать услугу (Безлимитные тарифы) посуточно, чтоб действовала с 0:00 до 23:59, в общем списание ежедневно в 23:59, ну или в 0:00, если возможно то как?
На форуме видел, что люди используют NAS на микротиках, где можно ознакомиться с настройкой этой связки?


Название: Re: Помогите стартануть
Отправлено: Efendy от 18 Ноября 2013, 22:48:12
а клиенты не будут ругаться, когда купят тариф в 12 дня, а он закончится в 24 часа?


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 19 Ноября 2013, 08:16:08
а клиенты не будут ругаться, когда купят тариф в 12 дня, а он закончится в 24 часа?
Думаю будут))
А насчет микротика как NAS, как реализовать ?


Название: Re: Помогите стартануть
Отправлено: elite от 19 Ноября 2013, 08:20:39
через радиус


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 19 Ноября 2013, 08:46:49
через радиус
Т.е создаем пул адресов в админке, на микротике настраиваем pppoe сервер, нат, и указываем получать данные по радиусу. Так?
А информацию о скорости тарифа, сроке услуги, радиус тоже передает ?


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 19 Ноября 2013, 17:00:37
Ещё подскажите, когда меняю пароль на пользователя MySQL-nodeny, так же меняю его в sat.cfg, после этого рестарт радиуса и радиус перестаёт отвечать на запросы(в инструкции только тут смена пароля), может ещё где нужно сменку сделать?


Название: Re: Помогите стартануть
Отправлено: 0xbad0c0d3 от 19 Ноября 2013, 17:32:27
 :-X


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 19 Ноября 2013, 18:26:51
:-X
Информативно ))


Название: Re: Помогите стартануть
Отправлено: Efendy от 19 Ноября 2013, 20:25:24
запуск радиуса с консоли radiusd -X
и смотреть где ошибка


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 25 Ноября 2013, 16:28:26
запуск радиуса с консоли radiusd -X
и смотреть где ошибка
Спасибо. разобрался ))


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 27 Ноября 2013, 18:59:10
Только сильно не пинайте, но что то туплю.
как я понимаю то эти правила в фаерволе (стандартный конфиг в ознакомительной версии)
Цитировать
${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any
разрешают доступ по ssh, как на внутреннем так и на внешнем интерфейсе, так ли это?
По факту с внешнего интерфейса не подключается. что можно сделать?
Вобще нужно сделать доступным на внешнем интерфейсе админку, SSH, и Radius. Знаю что для многих вопрос смешной, но рискну попросить помощи с конфигом ;)



Название: Re: Помогите стартануть
Отправлено: Efendy от 27 Ноября 2013, 19:14:15
А перед 50м правилом ты никаких вроде-бы безобидных правил не вставлял?


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 27 Ноября 2013, 19:31:35
А перед 50м правилом ты никаких вроде-бы безобидных правил не вставлял?
Нет, тот что по дефолту был:
Цитировать
#!/bin/sh -
f='/sbin/ipfw'

ifOut='bce1'
#ifOut='re0 ng0 ng1'

ifVia=''
ifRecv=''
tmp_or=''
for i in $ifOut
  do
    ifVia="${ifVia}${tmp_or}via $i"
    ifRecv="${ifRecv}${tmp_or}recv $i"
    tmp_or=' or '
  done

${f} -f flush

# dns, ххх.liqpay.com, liqpay.com
${f} table 100 add 8.8.8.8
${f} table 100 add 50.16.196.80
${f} table 100 add 107.21.122.223

# dns, ххх.liqpay.com, liqpay.com
${f} table 100 add 8.8.8.8
${f} table 100 add 50.16.196.80
${f} table 100 add 107.21.122.223

# mysql slave server cs.csmoney.net
${f} table 101 add 50.17.182.68

${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any

${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 160 skipto 2000 ip from any to me

${f} add 200 skipto 500 ip from any to any { $ifVia }

${f} add 300 skipto 4500 ip from any to any in

${f} add 400 skipto 450 ip from any to any { $ifRecv }
${f} add 420 divert 1 ip from any to any
${f} add 450 divert 2 ip from any to any
${f} add 490 allow ip from any to any

${f} add 500 skipto 32500 ip from any to any in
${f} add 510 divert 1 ip from any to any
${f} add 540 allow ip from any to any


${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any

${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 22,80,443,5006
${f} add 2030 allow tcp from "table(101)" to any 3306

${f} add 2050 deny ip from any to any { $ifVia }
${f} add 2060 allow udp from any to any 53,7723

${f} add 2100 deny ip from any to any

${f} add 4500 allow ip from any to "table(100)"
${f} add 32490 deny ip from any to any

${f} add 32500 allow ip from "table(100)" to any




Название: Re: Помогите стартануть
Отправлено: sov от 27 Ноября 2013, 20:21:29
По факту с внешнего интерфейса не подключается. что можно сделать?
А со внутреннего подключается?
Подключаться пытаешься под root или другим пользователем?


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 27 Ноября 2013, 20:59:25
По факту с внешнего интерфейса не подключается. что можно сделать?
А со внутреннего подключается?
Подключаться пытаешься под root или другим пользователем?
Со внутреннего без проблем захожу под пользователем затем su и пароль root, с внешнего вобще не подключается по SSH, внешний адрес не пингуется из вне.
Сам билинг работает работает вроде как положено (PPPoE подключается,баланс, включение-отключение при отрицательном балансе и т.д.), только все действия с ним можно делать только с внутреннего интерфейса, и вход в админку и по SSH только из локалки


Название: Re: Помогите стартануть
Отправлено: vddav от 27 Ноября 2013, 21:02:54
nat? проброс портов?


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 27 Ноября 2013, 21:15:11
nat? проброс портов?
Nat на PF тоже дефолтовый, порты не пробрасывал, конфиг PF могу завтра выложить, щас уже дома, а доступа к тестовым компам нет. Вобще я конфиги фаерволов не менял, как шли с биллингом, их и копировал(все согласно инструкции)


Название: Re: Помогите стартануть
Отправлено: ivanmfan от 28 Ноября 2013, 08:03:30
nat? проброс портов?
Nat на PF тоже дефолтовый, порты не пробрасывал, конфиг PF могу завтра выложить, щас уже дома, а доступа к тестовым компам нет. Вобще я конфиги фаерволов не менял, как шли с биллингом, их и копировал(все согласно инструкции)

На внешний интерфейс сервера, как интернет поступает? На нем выделен реальный IP?


Название: Re: Помогите стартануть
Отправлено: Morozikfeo от 28 Ноября 2013, 11:38:21
Цитировать
На внешний интерфейс сервера, как интернет поступает? На нем выделен реальный IP?
Я вчера вечером уже понял где протупил, и Ваша мысль верная. На тестовой машине на внешнем интерфейсе был адрес 192.168.1.50, и конечно он попадает в диапазон, который натит PF
Цитировать
nat pass on $ext_if from 10.0.0.0/8 to any -> ($ext_if)
nat pass on $ext_if from 192.168.0.0/16 to any -> ($ext_if)

Сегодня поменял внешний адрес на ip не попадающий в диапазон ната и всё вроде заработало как надо, SSH и админка теперь видны снаружи )))
Спасибо за помощь.