Switch to English
Switch to Russian
NetBilling
Система учета трафика в IP-сетях
Часто задаваемые Вопросы (ЧаВо)
net-acct собирает статистику трафика, всё вроде бы работает, но в БД ничего не попадает. Почему?

Однозначно ответить на этот вопрос невозможно: причин слишком много. Разбираться нужно последовательно.

  1. Отключите автоматический запуск любых скиптов NetBilling'а демоном cron.
  2. Затем убедитесь, что вы правильно описали зоны и создали клиентов. Задайте для начала только одну зону - "Интернет" -, включающую весь трафик (0.0.0.0/0.0.0.0). Помните, что система работает только с трафиком зарегистрированных в ней клиентов!
  3. Проверьте, что net-acct собирает данные о трафике в файл, указанный в конфигурации NetBilling'а параметром nacctdout, и что среди этого трафика есть трафик добавленных вами клиентов (поля этого файла описаны в конфигурационном файле net-acct).
  4. Удостоверьтесь, что файлы, заданные в конфигурационном файле параметрами nacctdpidpath (по умолчанию - /var/run/nacctd.pid) и gettraflock (по умолчанию - /var/run/gettraf.lock) присутствуют в системе и PID-файл содержит верное значение PID для процесса nacctd.
  5. Активируйте вывод отладочной информации скриптом gettraf.pl (переменная $DEBUG в самом начале скрипта), запускайте его вручную и анализируйте выводимую на экран информацию.

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

Не работает отключение доступа пользователей. Что делать?

Первым делом необходимо определиться, как вы хотите закрывать доступ пользователей, т.е. какие средства вы будете для этого использовать.

Поставляемый с системой механизм контроля доступа предполагает, что NetBilling установлен на маршрутизаторе, через который пользователи выходят в Интернет, причём доступ в интернет осуществляется через механизм NAT (MASQUERADE) пакетного фильтра iptables.

Это значит, что у вас должен быть разрешён транзит пакетов через вашу систему (ip_forward), а также настроен NAT для всех пользователей. Скрипты act.sh и deact.sh будут управлять доступом путём добавления или удаления правила запрещения (-j DROP) транзита (forwarding - таблица filter, цепочка FORWARD пакетного фильтра iptables) пакетов от данного клиента. IP-адрес клиента передается скрипты act.sh или deact.sh первым параметром командной строки.

Кроме того, как известно, управление правилами iptables возможно только от имени суперпользователя, что в нашем случае является проблемой, т.к. мы желаем изменять некоторые правила из Web-интерфейса (т.е. от имени того пользователя, от которого работает Web-сервер). Для решения этой проблемы в комплект поставки включён бинарный файл приложения ipta (и исходный текст этого приложения на C - ipta.c), который выполняет запуск приложения iptables и передачу ему всех собственных параметров командной строки. Необходимо сделать root'а владельцем этого файла и выставить на него бит SUID. Далее от имени непривилегированного пользователя можно попробовать работать с ipta также, как с iptables - вы должны без проблем манипулировать правилами пакетного фильтра.

Замечание: Поскольку расположение приложения iptables различно в разных дистрибутивах, вы должны убедиться (по исходному коду ipta.c), что в нём указан справедливый для вашей системы путь к iptables. Более подробно это описано в инструкции по установке из комплекта поставки NetBilling.

Итак, всё это означает, что необходимо добиться, чтобы ручной вызов скрипта act.sh или deact.sh (с передачей IP-адреса в качестве параметра) от имени непривилегированного пользователя приводил к изменению таблицы правил пакетного фильтра, и это изменение в свою очередь приводило к разрешению (act.sh) или запрещению (deact.sh) доступа для данного пользователя. Т.е. после этого, если в конфигурационном файле netbill.conf пути к скриптам act.sh и deact.sh прописаны верно, система контроля доступа у вас будет работать.

Как в Linux разрешить транзит IP-пакетов (forwarding) через систему?

Разрешить:
# echo "1" > /proc/sys/net/ipv4/ip_forward

Запретить:
# echo "0" > /proc/sys/net/ipv4/ip_forward

Как настроить NAT на маршрутизаторе для локальной сети 192.168.22.0/255.255.255.0?
# iptables -t nat -A POSTROUTING -s 192.168.22.0/24 -d ! 192.168.22.0/24 -j MASQUERADE