Биллинговая система Nodeny
22 Ноября 2024, 01:12:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 5 6 [7] 8 9 ... 16
  Печать  
Автор Тема: Микротик  (Прочитано 99905 раз)
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #90 : 15 Января 2017, 17:34:33 »

Вот теперь стало понятно как сделать, только где это в документации описано? Даже имея желание, время и умение читать и понимать совершенно не реально было разыскать эту тему на форуме.
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #91 : 15 Января 2017, 18:00:47 »

10.0.1.2 .. 10.0.1.254 - микротик 1
Настроил микротик по инструкции. Остановил DHCP на сервере. Запустил Radius. Очистил таблицу МАС`ов в БД TRUNCATE TABLE mac_uid;
Подключаю клиента к Микротику 1, получаю IP(10.0.1.234) из нужного pool`a.
Каким образом ты сообщил radius-у, что он должен для микротика 1 выдать этот ip?  Я так понимаю, что настроено так: радиус говорит "юзер с таким мак-ом не зареган" и микротик САМ из своего пула выдает ip?

Если ты хочешь чтоб ip выдавался в зависимости от каких-либо условий - нужно использовать теги. Но в твоем случае тег - это не характеристика абонента, а устройства. Неважно что за абонент подключился, например, он не известен, важно к какому микротику. Поэтому в процедуре, которая выдает ip в зависимости от тега, нужно в качестве тега подсовывать идентификатор миктротика (например, его имя), и в пулах ip в биллинге использовать этот идентификатор в тегах.

Или у тебя иначе там настроено?
1) Настроивал по инструкции Микротик и Dhcp+Radius из WiKi.
Очистил таблицу  mac_uid. Включаю клиента в Mikrotik, получаю IP с разных pool`ов. Видимо мне показало, что если в Mikrotik`е прописано
Код:
/ip dhcp-server network add dns-server=10.0.1.1 gateway=10.0.1.1 netmask=24
то я получаю адрес из 10.0.1.0/24.

Сейчас в Mikrotik`е у DHCP прописал назвал "dhcp_16"(/ip dhcp-server add name=dhcp_16), не зарегистрированный клиент начал получать адреса из pool`а 10.0.16.0/24(Пробовал раз 10, меняется только последняя цифра):
Код:
mysql>  SELECT *, INET_NTOA(ip) FROM mac_uid;
+----+--------------+-----------+-----+------------+------------+-------------+------------+---------------+
| id | mac          | ip        | uid | time       | device_mac | device_port | oneconnect | INET_NTOA(ip) |
+----+--------------+-----------+-----+------------+------------+-------------+------------+---------------+
|  1 | 005533007766 | 167776437 |   0 | 1484492413 | 0          |           0 |          0 | 10.0.16.181   |
+----+--------------+-----------+-----+------------+------------+-------------+------------+---------------+
1 row in set (0,00 sec)
Но как только прописал МАС на странице клиента, через пару минут получил 10.0.0.3(первый пул со статическими адресами):]
Код:
mysql>  SELECT *, INET_NTOA(ip) FROM mac_uid;
+----+--------------+-----------+-----+------------+------------+-------------+------------+---------------+
| id | mac          | ip        | uid | time       | device_mac | device_port | oneconnect | INET_NTOA(ip) |
+----+--------------+-----------+-----+------------+------------+-------------+------------+---------------+
|  2 | 005533007766 | 167772163 |   2 | 1484492608 |            |           0 |          0 | 10.0.0.3      |
+----+--------------+-----------+-----+------------+------------+-------------+------------+---------------+
1 row in set (0,00 sec)
--------------------------
2) -"Неважно что за абонент подключился, например, он не известен, важно к какому микротику" Именно так! Адреса из pool`лов должны выдаваться по тегам
Я не селен в процедурах, как научить MySQL выдавать нужный pool по названию Mikrotik`a ?

На всякий случай, напишу, что должно получится в результате:
1) Сервер с Nodeny,стоящий где-то за бугром и резервный под рукой.
1.1) В случае падения основного сервера, клиенты по домену попадают на резервный(в нем в личном кабинете уведомление,что это резервный сервер, оплаты на пройдут. И платеж не затерся при репликации БД с основного сервера).
1.2) Между серверами настроена репликация БД.
2) В районах, домах стоят Mikrotik`и в качестве NAS`ов.
2.1) Каждый Mikrotik будет выдавать адреса из своего pool`а.
2.2) Новых клиентов(не зарегистрированных в билинге) перенаправляет на заглушку для регистрации по логину и паролю.
2.3) Можем выдать статический серый IP, назначив его статически в кабинете клиента
2.4) Можем выдать реальный IP, назначив его статически в кабинете клиента
3) На Mikrotik`e настроено автоматическое переключение на резервный канал с [ether1 на ether2] и [ether2 на ether1] в случае восстановление основного канала с уведомлением на почту.
4) Надеюсь когда-то появится: мониторинг в билинге со списком всех NAS/Mikrotik`ов и идентификацией на каком канале(основной,резервный) сейчас работают клиенты.
« Последнее редактирование: 15 Января 2017, 18:47:43 от k291 » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #92 : 15 Января 2017, 18:31:29 »

Вот теперь стало понятно как сделать, только где это в документации описано? Даже имея желание, время и умение читать и понимать совершенно не реально было разыскать эту тему на форуме.
для этой темы я не проверял актуальность текущей версии n+, поэтому в доку не выложил
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #93 : 15 Января 2017, 19:07:13 »

...
я так понял ты хочешь чтоб заработало рандомом? не получится
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #94 : 15 Января 2017, 19:31:16 »

...
я так понял ты хочешь чтоб заработало рандомом? не получится
Нет. Хочу как ты написал:
Цитировать
Поэтому в процедуре, которая выдает ip в зависимости от тега, нужно в качестве тега подсовывать идентификатор миктротика (например, его имя), и в пулах ip в биллинге использовать этот идентификатор в тегах.
Главное не использовать ip NAS`a для Тега. IP может меняться.
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #95 : 15 Января 2017, 23:49:44 »

ну напиши в теге чебурашка, а в другом барабашка ))) какая разница, что там будет написано? Используй Called-Station-Id для идентификации наса и вся любовь.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #96 : 16 Января 2017, 00:06:22 »

Начни, вообще, без микротика. В консоли mysql выполни sql, которые должен запускать радиус. Например, первая процедура при подключении абона - это radcheck. Эта процедура должна выдавать "все ок" для любого мак-адреса, хоть известного, хоть неизвестного (если ты, конечно, не собираешься отшивать юзеров с неизвестными маками). Далее идет radreply. Смотришь в конфиг радиуса, что передается этой процедуре. Допустим только логин. Тогда ты говоришь "бля, я забыл передавать не только логин, но и  идентификатор микротика". В консоли mysql выполняешь "call radreply('00:11:22:33:44:55', '00:aa:bb:cc:dd:ee:ff')". Получил то, что надо? Не получил: смотришь есть ли в пуле ипы с тегом '00:aa:bb:cc:dd:ee:ff'. А мак '00:11:22:33:44:55' у абонента? Не, херь какая-то получается, пробую выполнить SELECT get_ip_by_tag('00:aa:bb:cc:dd:ee:ff','10.1.0.1'). Ip по тегу выбирается все ок. И тут... да ну его нах, почему я не могу нанять админа...
Записан
Groov
NoDeny
Постоялец
*

Карма: -3
Offline Offline

Сообщений: 100

102196993
Просмотр профиля
« Ответ #97 : 16 Января 2017, 14:16:16 »

Сейчас некогда вникать, но с маками с заглавными буквами лечение скорее всего такое: приводить к нижнему регистру в процедурах. Вот я бегло пробежался и в radreply увидел:
Код:
SELECT REPLACE(login, ':', '') INTO usr_mac;
попробуй заменить на:
Код:
SELECT LOWER(REPLACE(login, ':', '')) INTO usr_mac;

Это если речь идет о маке абонента

Код:
BEGIN
  SELECT u.id, u.name, 'Password' AS Attribute, AES_DECRYPT(passwd,'hardpass') AS Value,'==' AS Op FROM users u WHERE u.name=login ;
IF ((SELECT m.uid FROM users u JOIN mac_uid m WHERE uid=u.id ORDER BY m.uid DESC LIMIT 1) <> '')
THEN
  SELECT users.id,users.name,'Calling-Station-Id' AS Attribute,mac_uid.mac AS Value,'==' AS Op FROM users,mac_uid WHERE mac_uid.uid=users.id AND users.name=login ORDER BY mac_uid.uid DESC LIMIT 1;
END IF;  
END

Я много перепробовал, ((((  но не получается у меня подскажите куда добавить?
Записан
Groov
NoDeny
Постоялец
*

Карма: -3
Offline Offline

Сообщений: 100

102196993
Просмотр профиля
« Ответ #98 : 18 Января 2017, 13:01:09 »

Сейчас некогда вникать, но с маками с заглавными буквами лечение скорее всего такое: приводить к нижнему регистру в процедурах. Вот я бегло пробежался и в radreply увидел:
Код:
SELECT REPLACE(login, ':', '') INTO usr_mac;
попробуй заменить на:
Код:
SELECT LOWER(REPLACE(login, ':', '')) INTO usr_mac;

Это если речь идет о маке абонента

Код:
BEGIN
  SELECT u.id, u.name, 'Password' AS Attribute, AES_DECRYPT(passwd,'hardpass') AS Value,'==' AS Op FROM users u WHERE u.name=login ;
IF ((SELECT m.uid FROM users u JOIN mac_uid m WHERE uid=u.id ORDER BY m.uid DESC LIMIT 1) <> '')
THEN
  SELECT users.id,users.name,'Calling-Station-Id' AS Attribute,mac_uid.mac AS Value,'==' AS Op FROM users,mac_uid WHERE mac_uid.uid=users.id AND users.name=login ORDER BY mac_uid.uid DESC LIMIT 1;
END IF;  
END

Я много перепробовал, ((((  но не получается у меня подскажите куда добавить?

Ребят не могу понять здесь что то комически сложное не можете подсказать ??
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #99 : 21 Января 2017, 17:28:13 »

Настроил заглушку на Микротике по инструкции h_ttp://nodeny.com.ua:8080/wiki/index.php/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%82%D0%B8%D0%BA
Заглушка
На микротике выполним команды:
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=!1.1.1.2 src-address=!1.1.1.2 dst-port=80 fragment=no protocol=tcp src-address-list=!goodboys to-addresses=1.1.1.2 to-ports=8080
Здесь 1.1.1.2 - ip сервера с админкой NoDeny

Но на заглушку не переводит заблокированных клиентов. Надо еще чтото сделать, чтобы она работала?
На сервере(Ubuntu)в фаерволе все разрешено.
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #100 : 21 Января 2017, 20:14:12 »

Но на заглушку не переводит заблокированных клиентов. Надо еще чтото сделать, чтобы она работала?
На сервере(Ubuntu)в фаерволе все разрешено.
Тут сложно что-то угадать. Ты бы для начала на биллинге дамп посмотрел типа так:
tcpdump -i em0 -n port 8080
Проанализировал что происходит. Я вот вангую, что твой биллинг в душе не знает о существовании жизни за микротиком.
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #101 : 22 Января 2017, 07:49:23 »

Установлена Ubuntu
217.55.66.252 адрес машины с Нодени
217.55.66.250 адрес микротика

В фаерволе:
Код:
y# iptables -n -L -v --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     1638  110K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
2      186  9412 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
3      314  226K ACCEPT     all  --  enp2s0 *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     tcp  --  *      *       217.55.66.250        0.0.0.0/0            tcp dpt:8080
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            217.66.99.250        tcp dpt:8080
3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            217.66.99.250        tcp spt:8080
4        0     0 ACCEPT     tcp  --  *      *       217.55.66.250        0.0.0.0/0            tcp dpt:8080

Chain OUTPUT (policy ACCEPT 309 packets, 37457 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     3414  211K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:8080
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1812
3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:1812
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1813
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:1813

Клиент заблокирован в билинге: Интернета нет
Tcpdump на сервере, выдает:
Цитировать
root@my:/usr/local/nodeny# tcpdump -i enp2s0 -n port 8080
tcpdump: listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:04:10.943602 IP 217.55.66.252.8080 > 10.0.1.2.56014: Flags [S.], seq 1418934811, ack 2950311529, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:10.943610 IP 10.0.1.2.56015 > 217.55.66.252.8080: Flags [S.], seq 35142073, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
07:04:10.943619 IP 217.55.66.252.8080 > 10.0.1.2.56015: Flags [S.], seq 184472726, ack 35142074, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:11.205887 IP 217.55.66.252.8080 > 10.0.1.2.56010: Flags [S.], seq 1652429136, ack 1915600124, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:11.717886 IP 217.55.66.252.8080 > 10.0.1.2.56013: Flags [S.], seq 470908392, ack 2625623687, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:11.717901 IP 217.55.66.252.8080 > 10.0.1.2.56012: Flags [S.], seq 3322572897, ack 3205600477, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:11.973888 IP 217.55.66.252.8080 > 10.0.1.2.56015: Flags [S.], seq 184472726, ack 35142074, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:11.973903 IP 217.55.66.252.8080 > 10.0.1.2.56014: Flags [S.], seq 1418934811, ack 2950311529, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:04:12.549889 IP 217.55.66.252.8080 > 10.0.1.2.56011: Flags [S.], seq 3484709457, ack 816735160, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
^C
34 packets captured
34 packets received by filter
0 packets dropped by kernel


Клиент в билинге не заблокирован. Все работает, заглушка в том числе:
Цитировать
root@my:/usr/local/nodeny# tcpdump -i enp2s0 -n port 8080
07:01:38.702975 IP 217.66.99.250.55970 > 217.55.66.252.8080: Flags [S.], seq 2832799464, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
07:01:38.703003 IP 217.55.66.252.8080 > 217.66.99.250.55970: Flags [S.], seq 40183081, ack 2832799465, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
07:01:38.703759 IP 217.66.99.250.55970 > 217.55.66.252.8080: Flags [.], ack 1, win 256, length 0
07:01:38.710228 IP 217.66.99.250.55970 > 217.55.66.252.8080: Flags [P.], seq 1:421, ack 1, win 256, length 420: HTTP: GET / HTTP/1.1
07:01:38.710241 IP 217.55.66.252.8080 > 217.66.99.250.55970: Flags [.], ack 421, win 237, length 0
07:01:38.710581 IP 217.55.66.252.8080 > 217.66.99.250.55970: Flags [P.], seq 1:488, ack 421, win 237, length 487: HTTP: HTTP/1.1 200 OK
07:01:38.710648 IP 217.55.66.252.8080 > 217.66.99.250.55970: Flags [F.], seq 488, ack 421, win 237, length 0
07:01:38.710980 IP 217.66.99.250.55970 > 217.55.66.252.8080: Flags [.], ack 488, win 254, length 0
07:01:38.712289 IP 217.66.99.250.55970 > 217.55.66.252.8080: Flags [.], ack 489, win 254, length 0
07:01:38.712869 IP 217.66.99.250.55970 > 217.55.66.252.8080: Flags [R.], seq 421, ack 489, win 0, length 0
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #102 : 22 Января 2017, 07:50:45 »

Ктото запустил заглушку на микротике? и как?
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #103 : 22 Января 2017, 07:56:07 »

Я вот вангую, что твой биллинг в душе не знает о существовании жизни за микротиком.
Чтобы билинг знал о микротике, достаточно прописать разрешения в фаерволе сервера?
Код:
${f} add 350 allow tcp from any to any 22,80,443,8080 in
${f} add 450 allow udp from 1.1.1.1 to any 1812,1813 in
${f} add 600 fwd 1.1.1.1 tcp from any 8080 to any
1.1.1.1 адрес микротика
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #104 : 22 Января 2017, 09:21:01 »

Беда беда... ну все же ясно как белый день....

на биллинге выполните и сохраните в rc.local

/sbin/route add 10.0.1.0/24 217.55.66.250

так вы объясните биллингу что сеть 10.0.1.0/24 нужно искать за микротиком.
Записан
Страниц: 1 ... 5 6 [7] 8 9 ... 16
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!