Здесь вы можете найти ответы на самые частозадаваемые вопросы.
Версия FAQ: 16.07.2005
Пример перевода Unicode
/usr/abills/libexec/config.pl
$conf{dbcharset}='utf8';
$conf{MAIL_CHARSET}='utf8';
$conf{default_language}='russian';
$conf{default_charset}='utf-8';
Перекодировка словарей
#!/bin/sh
ICONV="iconv";
BASE_CHARSET="cp1251";
OUTPUT_CHARSET="utf8";
#Convert lang files
${FIND} ${WRKSRC}/language -name "*.pl" -type f -exec ${ICONV} -f${BASE_CHARSET} -t${OUTPUT_CHARSET} {} -o{}.bak `mv {}.bak {}` \;
#Convert modules lang files
${FIND} ${WRKSRC}/language -name "lng*.pl" -type f -exec ${ICONV} -f${BASE_CHARSET} -t${OUTPUT_CHARSET} {} -o{}.bak `mv {}.bak {}` \;
Проверяем наличие вкомпилированной поддержки
# sysctl net.ipv4.conf.all.forwarding net.ipv4.conf.all.forwarding = 1
Если не включён включаем
# sysctl -w net.ipv4.conf.all.forwarding=1
Включаем маскарадинг
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source your_real_ip
192.168.0.0/24 - Ваша внутренняя сеть
your_real_ip - IP Ип через который все будет ходить
Собрать ядро с опциями
options IPFIREWALL options DUMMYNET
/etc/rc.conf
gateway_enable="YES" firewall_enable="YES" firewall_type="OPEN" natd_enable="YES" natd_interface="fxp0" natd_flags=""
fxp0 - Инерфейс смотрящий в мир.
Перезапуск сетевых сервисов
# /etc/netstart
# cd abills/backup # gzip -d backup_file.tgz # mysql -D abills < backup_file
В конфигурационном файле вместо местоположения файла нужно заменить просмотр этого файла на удалённом хосте.
Например
$conf{SHARING_APACHE_ERROR_LOG}='cat /usr/local/apache2/logs/error_log';
заменить на
$conf{SHARING_APACHE_ERROR_LOG}='ssh -o StrictHostKeyChecking=no '.
' -i /usr/Certs/id_dsa.asm asm@remote.host '.
' "cat /usr/local/apache2/logs/error_log" |';
На основном сервере создайте сертификат для пользователя удалённого NAS (в даном случае asm)
# /usr/abills/misc/sslcerts.sh ssh asm
и поместите публичный ключ /usr/abills/Certs/id_dsa.asm.pub в файл /home/asm/.ssh/authorized_keys на удалённом сервере.
Нужно учитывать, что если у Вас очень большой файл логов, то желательно вместо команды ' cat ' использовать ' tail -1000 '
Таким же способом можно выполнять команды на удалённом NAS
Нет, так как система смотрит занятые адреса на конкретном NASе.
Можно одну сеть разделить на подсети и диапазоны подсетей присвоить каждому насу.
В системе предусмотрено два вида абонплаты: дневная, месячная.
Для снятия абон. платы Вам нужно в /etc/crontab внести
1 0 * * * root /usr/abills/libexec/periodic daily 1 0 * * * root /usr/abills/libexec/periodic monthly
Если в поле Activisation указаное значение не равно 0000-00-00, то абонплата снимается через 31 день после указаной даты и после снятия денег устанавливается в текущую дату
Несъемный минимум при подключении по DialUp и VPN.
В файле /usr/local/etc/rc.d/radiusd нужно поменять
# REQUIRE: NETWORKING SERVERS
на
# REQUIRE: NETWORKING SERVERS apache22 mysql
У Вас не установлен apache mod_rewrite
# a2enmod rewrite # /etc/init.d/apache2 force-reload
/usr/abills/libexec/config.pl
$conf{USERNAMEREGEXP}="^[A-Za-z0-9_][A-za-z0-9_-]*\$";
После $INCLUDE разделитель табуляция.
/var/log/ppp.log. Скорее всего установлен NAS exppp, а в radius словарь не внесены для него атрибуты. см. Exppp
Посмотреть передаётся ли информация о подсетях для exppp
/var/log/ppp.log
Apr 16 11:18:55 nacho ppp[66019]: Phase: IP table '/usr/abills/cgi-bin/admin/nets/7.nets'
Установка PopTop
Все операции проводим от пользователя root.
# cd /usr/ports/net/poptop/ # make patch
Копируем патч (http://www.opennet.ru/soft/vpn/pptpctrl.patch) в каталог: /usr/ports/net/poptop/work/poptop-1.1.4/ и далее:
# cd /usr/ports/net/poptop/work/poptop-1.1.4 # patch < pptpctrl.patch
Hmm... Looks like a new-style context diff to me... The text leading up to this was: -------------------------- |*** pptpctrl.c.orig Wed Jul 16 14:51:40 2003 |--- pptpctrl.c Mon Jul 14 15:51:35 2003 -------------------------- Patching file pptpctrl.c using Plan A... Hunk #1 succeeded at 388. done
# cd ../.. # make install # make clean # cp /usr/local/etc/pptpd.conf.sample /usr/local/etc/pptpd.conf # mv /usr/local/etc/rc.d/pptpd.sh.sample /usr/local/etc/rc.d/pptpd.sh
И запускаем poptop
# /usr/local/etc/rc.d/pptpd.sh start
set pptp disable windowing
В конфигурации обязательно должна присутствовать строка такого вида без изменений
aaa authorization network default group radius if-authenticated
/ Monitoring/ Dialup / VPN/
| (Z) - Zap | Закончить зависшую сессию и посчитать деньги |
|---|
/etc/sysctl.conf
net.inet.ip.fw.enable=1 логическая (булева) переменная (значения 0 и 1). Показывает, включено ли использование firewall в текущий момент. Позволяет включать и выключать firewall в любой момент времени.
net.inet.ip.fw.autoinc_step
целочисленная переменная. Задает шаг автоматического приращения номеров правил firewall при вводе без принудительного указания номера
net.inet.ip.fw.verbose net.inet.ip.fw.verbose_limit
аналогичны соответствующим опциям ядра
net.inet.ip.fw.one_pass
логическая переменная. При ее установки в 0 пакет, выходящий из dummynet, продолжит свое путешествие по правилам firewall. В противном случае pipe действует, как allow. Значение по умолчанию - 1.
net.inet.ip.dummynet.hash_size=1024
целочисленная переменная. Соответствует размеру хэш-таблицы, используемой dummynet для хранения очередей. Увеличение этого значение ускоряет работу dummynet при большом количестве очередей, естественно в обмен на оперативную память. Значение по умолчанию - 64.
net.inet.ip.dummynet.expire
логическая переменная. При установке в 1 очереди dummynet удаляются через некоторое время после того, как через них перестали «бегать» пакеты. В противном случае очереди удаляются только при нехватке памяти для размещения новых. Значение по умолчанию - 1. Имеет смысл выставлять в 0, если Ваш сервер обслуживает несколько крупных потребителей трафика, постоянно находящихся в режиме on-line - в этом случае кратковременное прекращение активности потребителя не должно вызывать удаления его очереди, чтобы не тратить времени на ее создание заново при появлении потребителя. В случае множества мелких потребителей, подключающихся и отключающихся от сети на длительный срок имеет смысл освобождать ресурсы, чтобы ускорить работу dummynet за счет меньшей таблицы очередей.
net.inet.ip.dummynet.io_fast=1 режим шейпинга вместо эмуляции медленного соединения
net.inet.ip.dummynet.max_chain_len=1024
целочисленная переменная, значение по умолчанию - 16. Количество очередей, способных одновременно храниться в одной ячейке хэш-таблицы. При превышении этого значение пустые очереди удаляются. (или те, которым меньше всего повезло).
net.inet.ip.fastforwarding=1
net.inet.ip.fw.dyn_keepalive
булева переменная. Заставляет генерировать «поддерживающие» пакеты (keep-alive) для tcp-соединений, обрабатываемых динамическими правилами keep-state. Установка в 1 понижает вероятность прерывания tcp-соединения по таймауту, но генерирует лишний трафик. Значение по умолчанию - 1
net.inet.ip.fw.dyn_max
целочисленная переменная. Максимальное количество одновременно существующих динамических правил. Значение по умолчанию - 8192.
Есть некоторые моменты, которые следует учесть, если ваш сервер имеет большое количество соединений. Например, можно столкнуться с ситуацией, когда при выводе комманды ngctl list будет выдававаться No buffer space available. Чтобы этого избежать следует добавить в /boot/loader.conf:
kern.ipc.nmbclusters=16384 kern.ipc.maxsockets=16384 net.graph.maxalloc=2048 kern.maxusers=512 kern.ipc.maxpipekva=32000000
в /etc/sysctl.conf:
net.graph.maxdgram=128000 net.graph.recvspace=128000
В логе:
Aug 30 17:00:45 zeus pppd[14334]: rc_avpair_new: unknown attribute 48 Aug 30 17:00:45 zeus pppd[14334]: rc_avpair_new: unknown attribute 47
Не является критической ошибкой.
radiusclient не знает атрибуты:
ATTRIBUTE Acct-Input-Packets 47 integer ATTRIBUTE Acct-Output-Packets 48 integer
Добавляем в /etc/radiusclient/dictionary
INCLUDE /etc/radiusclient/dictionary.merit
Лог:
Dec 26 13:48:19 abills-access-srv pppd[9032]: rcvd [LCP TermReq id=0xb "&\37777777647o\37777777774\000<\37777777715t\000\000\000\000"] Dec 26 13:48:19 abills-access-srv pppd[9032]: LCP terminated by peer (&M-'oM-|^@<M-Mt^@^@^@^@) Dec 26 13:48:19 abills-access-srv pppd[9032]: sent [LCP TermAck id=0xb]
Скорее всего IP-адрес VPN шлюза и IP-адрес Windows совпадает, клиенту выдаётся тотже адрес что и адрес шлюза.
В логе:
Dec 19 13:18:16 IRONVM pppd[3543]: rc_avpair_new: unknown attribute 60
Связано с тем, что radiusclient не передаёт параметр CHAP-Challenge
Добавляем в /etc/radiusclient/dictionary
ATTRIBUTE CHAP-Challenge 60 string
Проверить / System configuration/ NAS/ наличие параметра
| RADIUS Parameters | Acct-Interim-Interval=60 |
|---|
Добавляем в /etc/radiusclient/dictionary
ATTRIBUTE Acct-Interim-Interval 85 integer
ATTRIBUTE Session-Octets-Limit 227 integer ATTRIBUTE Octets-Direction 228 integer ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer
Нужно пропатчить MPD-3.18 патчем, который включает возможность сброса пользователей. В нем же пофиксили выдачу IP-адресов. (http://abills.net.ua/wiki/doku.php?id=abills:docs:mpd:ru)
Разработчики признали такую возможность и исправили её в 2.9.34
ppp.log
Warning: iface add: ioctl(SIOCAIFADDR, 192.168.0.13 -> 10.10.11.17): File exists
По какой-то причине не отключился интерфейс и адрес уже занят.
Pешение: на NAS сервере запустить периодическую проверку в /etc/ctontab
*/2 * * * * root /usr/abills/libexec/billd checkppp
Это глюк в самом ppp на стадии согласования по LCP. Такое может происходить, когда потери на Laeyr2.
Pешение: на NAS-сервере запустить периодическую проверку в /etc/ctontab
*/2 * * * * root /usr/abills/libexec/billd checkppp
или в /var/log/httpd/abills-error.log
[Fri Sep 07 15:45:27 2007] [error] [client 195.114.96.64] DBD::mysql::db do failed: Table './abills/web_online' is marked as crashed and should be repaired at ../../Abills/mysql//main.pm line 114.
У вас по какойто причине слитела таблица payments надо её поченить.
# /usr/local/etc/rc.d/mysql-server stop # myisamchk -r /var/db/mysql/abills/*.MYI # /usr/local/etc/rc.d/mysql-server start
Можно пробовать и без остановки сервера БД.
[Mon Mar 22 16:39:50 2010] [error] [client 195.250.69.44] DBD::mysql::st execute failed: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swed ish_ci,IMPLICIT) for operation '=' at ../../Abills/mysql//main.pm line 178., ref
возникает, когда нет связи с сервером доступа, возможна вследствие:
сервер отказывает в авторизации, возможна вследствие:
Сервер отчуживает подключение:
неправильно настроено подключение либо ограничение файерволла
Ошибка возникает, если в свойствах протокола TCP/IP VPN-соединения жестко прописан ip-адрес.
Решение: зайти в Свойства VPN-соединения (правой кнопкой по значку - Свойства), открыть вкладку Сеть, найти Протокол Интернета TCP/IP, выделить, нажать кнопку Свойства. Отметить пункты «Получить ip-адрес автоматически» и «Получить адрес ДНС-сервера автоматически». Нажать ОК. Пробовать подключиться.
В PPTP CID не может принимать значение MAC так как он работает на сеансовом уровне(5-й уровень модели OSI), а PPPOE работает на канальном уровне(2-й уровень модели OSI)
[B-1] system: command "/usr/abills/libexec/linkupdown mpd up ng0 inet 192.168.100.1/32 10.0.0.247 'test' '' '' '178.95.37.98'" returned 512
Такая ошибка возникает если команды не обрабатываются mysql-ом. Проверьте МYSQL, и установлены ли модули DBI, DBD
[B-2] system: command "/usr/abills/libexec/linkupdown mpd up ng0 inet 192.168.100.1/32 10.0.0.63 'test' '' '' '178.93.132.92'" returned 65280
Такая ошибка возникает если МYSQL клиент на НАСе не может связаться с МYSQL сервером. Проверьте или хост МYSQL клиента добавлен в МYSQL сервер