CoovaChilli вместо chillispot на OpenWRT и биллинг

Установка, настройка, поддержка
Ответить
RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

CoovaChilli вместо chillispot на OpenWRT и биллинг

Сообщение RootAdmin »

Взлетел таки.
Если кто-то будет ставить хотспот на OpenWRT - ставьте сразу coova-chilli.
Ибо chillispot - даже после недельных плясок с бубнами продолжал жрать в никуда пакеты с интерфейса tun0 и глючить жутко. Недаром про него на сайте OpenWRT сказано что мертв.
Надо б инструкцию наваять с примерами конфигов - ибо нетривиально.
Последний раз редактировалось RootAdmin Сб апр 06, 2013 11:15 am, всего редактировалось 1 раз.
кто к нам с мечом - получит по оралу.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: CoovaChilli вместо chillispot на OpenWTT и биллинг

Сообщение ~AsmodeuS~ »

ждём Ваших инструкций

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWTT и биллинг

Сообщение RootAdmin »

Итак: Имеем роутер TPLINK TL-WA701ND с только что установленной OpenWRT.
Устанавливал со страницы http://wiki.openwrt.org/toh/tp-link/tl-wr741nd
сборку r29592 http://downloads.openwrt.org/backfire/1 ... actory.bin
После установки проводим первоначальную настройку - сначала отключаем автозапуск файрволла - либо черех веб-интерфейс либо командой
/etc/init.d/firewall disable
/etc/init.d/firewall stop
Затем настраиваем интерфейсы - удобно через WEB
Network-Interfaces-WAN
WAN интерфейс
WAN интерфейс
Wan.jpg (246.96 КБ) 33324 просмотра
Убираем мост:
Wan- bridge.jpg
Wan- bridge.jpg (188.15 КБ) 33324 просмотра
Проверяем связь с зоной файрволла:
Wan- firewall.jpg
Wan- firewall.jpg (167.69 КБ) 33324 просмотра
кто к нам с мечом - получит по оралу.

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWTT и биллинг

Сообщение RootAdmin »

Затем идем в Network-Interfaces-LAN
Отключаем протокол:
LAN.jpg
LAN.jpg (149.19 КБ) 33323 просмотра
Отключаем мост (ну не нужен он в такой конфигурации, вот если у вас ротер со свичем - тогда да):
LAN- bridge.jpg
LAN- bridge.jpg (167.34 КБ) 33323 просмотра
И проверяем связь с зоной файрволла:
LAN- firewall.jpg
LAN- firewall.jpg (147.62 КБ) 33323 просмотра
Все, применяем.
У меня пару раз получилось таким образом получить неотвечающий роутер - в процессе применения настроек что-то глючило. Поэтому рекомендую настроить и применить сначала WAN. Именно чтобы роутер не замолчал надо предварительно отключить файрволл - по умолчанию он дропает пакеты на WAN.
Либо нужен serial кабель к роутеру, с ним всяко удобней.
кто к нам с мечом - получит по оралу.

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWRT и биллинг

Сообщение RootAdmin »

Следующий шаг - настройка файрволла.
Либо приводим к такому виду:
Firewall1.jpg
Firewall1.jpg (89.86 КБ) 33321 просмотр
Firewall2.jpg
Firewall2.jpg (121.56 КБ) 33319 просмотров
Firewall3.jpg
Firewall3.jpg (83.72 КБ) 33319 просмотров
Либо выполнить

Код: Выделить всё

echo config \'defaults\' > /etc/config/network
echo         option \'syn_flood\' \'1\' >> /etc/config/firewall
echo         option \'input\' \'ACCEPT\' >> /etc/config/firewall
echo         option \'output\' \'ACCEPT\' >> /etc/config/firewall
echo         option \'forward\' \'REJECT\' >> /etc/config/firewall
echo         option \'drop_invalid\' \'1\' >> /etc/config/firewall
echo  >> /etc/config/firewall
echo config \'zone\' >> /etc/config/firewall
echo         option \'name\' \'lan\' >> /etc/config/firewall
echo         option \'network\' \'lan\' >> /etc/config/firewall
echo         option \'input\' \'ACCEPT\' >> /etc/config/firewall
echo         option \'output\' \'ACCEPT\' >> /etc/config/firewall
echo         option \'forward\' \'REJECT\' >> /etc/config/firewall
echo  >> /etc/config/firewall
echo config \'zone\' >> /etc/config/firewall
echo         option \'name\' \'wan\' >> /etc/config/firewall
echo         option \'network\' \'wan\' >> /etc/config/firewall
echo         option \'output\' \'ACCEPT\' >> /etc/config/firewall
echo         option \'forward\' \'REJECT\' >> /etc/config/firewall
echo         option \'masq\' \'1\' >> /etc/config/firewall
echo         option \'mtu_fix\' \'1\' >> /etc/config/firewall
echo         option \'input\' \'ACCEPT\' >> /etc/config/firewall
echo  >> /etc/config/firewall
echo config \'forwarding\' >> /etc/config/firewall
echo         option \'src\' \'lan\' >> /etc/config/firewall
echo         option \'dest\' \'wan\' >> /etc/config/firewall
echo  >> /etc/config/firewall
echo config \'rule\' >> /etc/config/firewall
echo         option \'name\' \'Allow-DHCP-Renew\' >> /etc/config/firewall
echo         option \'src\' \'wan\' >> /etc/config/firewall
echo         option \'proto\' \'udp\' >> /etc/config/firewall
echo         option \'dest_port\' \'68\' >> /etc/config/firewall
echo         option \'target\' \'ACCEPT\' >> /etc/config/firewall
echo         option \'family\' \'ipv4\' >> /etc/config/firewall
echo  >> /etc/config/firewall
echo config \'rule\' >> /etc/config/firewall
echo         option \'name\' \'Allow-Ping\' >> /etc/config/firewall
echo         option \'src\' \'wan\' >> /etc/config/firewall
echo         option \'proto\' \'icmp\' >> /etc/config/firewall
echo         option \'icmp_type\' \'echo-request\' >> /etc/config/firewall
echo         option \'family\' \'ipv4\' >> /etc/config/firewall
echo         option \'target\' \'ACCEPT\' >> /etc/config/firewall
echo  >> /etc/config/firewall
echo config \'include\' >> /etc/config/firewall
echo         option \'path\' \'/etc/firewall.user\' >> /etc/config/firewall
Для логирования пакетов (только для отладки!) можно добавить в /etc/firewall.user

Код: Выделить всё

WANIF=$(uci -P/var/state get network.lan.ifname)

echo WANIF=$WANIF

IPTABLES="/usr/sbin/iptables"
echo $IPTABLES

#$IPTABLES -t nat -A postrouting_rule -o $WANIF -j MASQUERADE
$IPTABLES -t filter -I INPUT 1 -s 10.1.0.2 -j LOG --log-prefix INPUT_FROM_TABLET:
$IPTABLES -t filter -I OUTPUT 1 -d 10.1.0.2 -j LOG --log-prefix OUTPUT_to_TABLET:
кто к нам с мечом - получит по оралу.

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWTT и биллинг

Сообщение RootAdmin »

Потом ставим на роутер coova-chilli

Код: Выделить всё

opkg update
opkg install coova-chilli
Ставится он почему-то БЕЗ стартового скрипта.
Добавляем

Код: Выделить всё

touch /etc/init.d/chilli
Вставляем:

Код: Выделить всё

#!/bin/sh /etc/rc.common
START=91
# - init script for chilli -
NAME=chilli
RUN_D=/var/run
CMDSOCK=$RUN_D/$NAME.sock
PIDFILE=$RUN_D/$NAME.pid

option_cb() { [ -n "$2" ] && echo "HS_$(echo $1|tr 'a-z' 'A-Z')=\"$2\"" | sed 's/\$/\\\$/g'; }
config_load hotspot > /etc/chilli/config

. /etc/chilli/functions

start() {
#    HS_SSID=$(wl status|grep '^SSID:'|awk '{print $2}'|sed s/\"//g)
#    HS_NASMAC=$(grep perm_etheraddr /proc/net/wl0|awk '{print toupper($2)}'|sed s/:/-/g|head -n1)
#    HS_WANIF=$(nvram get wan_ifname)
#    HS_NASIP=${HS_WANIF:+$(ifconfig $HS_WANIF 2>/dev/null|grep 'inet addr'|awk -F: '{print $2}'|awk '{print $1}')}
    HS_DNS_DOMAIN=${HS_DNS_DOMAIN:-cap.coova.org}
    HS_DNS1=${HS_DNS1:-$HS_UAMLISTEN}
    HS_DNS2=${HS_DNS2:-$HS_NASIP}
    HS_NASID=${HS_NASID:-$HS_NASMAC}
    HS_MACAUTHMODE=${HS_MACAUTHMODE:-local}
    HS_USELOCALUSERS=${HS_USELOCALUSERS:-off}
    HS_PROXY_TYPE=${HS_PROXY_TYPE:-none}
    HS_RADCONF_URL=${HS_RADCONF_URL:-http://ap.coova.org/config/tos.conf}
    HS_CFRAME_URL=${HS_CFRAME_URL:-http://coova.org/cframe/default/}
    HS_CFRAME_SZ=${HS_CFRAME_SZ:-100}
    HS_DEFSESSIONTIMEOUT=${HS_DEFSESSIONTIMEOUT:-0}
    HS_DEFIDLETIMEOUT=${HS_DEFIDLETIMEOUT:-0}
    HS_DEFINTERIMINTERVAL=${HS_DEFINTERIMINTERVAL:-300}
    HS_LAN_ACCESS=${HS_LAN_ACCESS:-deny}
    HS_CFRAME_POS=${HS_CFRAME_POS:-top}
    HS_PROVIDER=${HS_PROVIDER:-Coova}
    HS_PROVIDER_LINK=${HS_PROVIDER_LINK:-http://coova.org/}
    HS_LOC_NAME=${HS_LOC_NAME:-My HotSpot}
    HS_LOC_NETWORK=${HS_LOC_NETWORK:-Coova}
    HS_OPENIDAUTH=${HS_OPENIDAUTH:-off}
    HS_ANYIP=${HS_ANYIP:-off}

    [ -z "$HS_LANIF" ] && {
    [ -e /tmp/device.hotspot ] && {
        stop
    }
    HS_LANIF=$(wlanconfig ath create wlandev wifi0 wlanmode ap)
    for i in 0 1 2 3 4; do ifconfig ath$i mtu 1500; done 2>/dev/null
    echo $HS_LANIF > /tmp/device.hotspot
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iwconfig $HS_LANIF essid ${HS_SSID:-Coova} 2>/dev/null
    }

    writeconfig
    radiusconfig

#    (crontab -l 2>&- | grep -v $0
#		echo "*/10 * * * * $0 checkrunning"
#		test ${HS_ADMINTERVAL:-0} -gt 0 && echo "*/$HS_ADMINTERVAL * * * * $0 radconfig"
#		test ${HS_CHECKARP:-0} -gt 0 && echo "*/$HS_CHECKARP  * * * * $0 arping"
#    ) | crontab - 2>&-

    [ -d $RUN_D ] || mkdir -p $RUN_D

    /sbin/insmod tun >&- 2>&-
    /usr/sbin/chilli
}


stop() {
    [ -f $PIDFILE ] && kill $(cat $PIDFILE).
#    crontab -l 2>&- | grep -v $0 | crontab -
    rm -f $PIDFILE $LKFILE $CMDSOCK 2>/dev/null
    iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    wlanconfig $(cat /tmp/device.hotspot) destroy
    rm /tmp/device.hotspot
}
Собственно говоря в этом скрипте есть лишнее, но пусть остается..
Делаем исполняемым:

Код: Выделить всё

chmod a+x /etc/initd.d/chilli
Редактируем /etc/chilli/defaults

Код: Выделить всё

HS_NASID=nas1 #"!Имя сервера доступа. Должно совпадать с указанным в Abills"
HS_RADIUS=10.0.0.200 #(Адрес радиус-сервера 1)
HS_RADIUS2=10.0.0.200 #(Адрес радиус-сервера 2)
HS_UAMALLOW=ya.ru,10.0.0.0/24 #Адреса разрешенные без авторизации
HS_RADSECRET=radsecret    # RADIUS shared secret Должно совпадать с аналогичным в конфиге радиуса !И! В файле hotspotlogin.cgi
HS_UAMSECRET=HkjJKHiJOPOKOPk     # Set to be your UAM secret Должно совпадать с параметром в файле В файле hotspotlogin.cgi иначе пароль будет попадать в радиус кракозябрами.
HS_UAMALIASNAME=chilli
Затем там же редактируем расположение страницы авторизации:

Код: Выделить всё

#   Use HS_UAMFORMAT to define the actual captive portal url.
#   Shell variable replacement takes place when evaluated, so here
#   HS_UAMSERVER is escaped and later replaced by the pre-defined.
#   HS_UAMSERVER to form the actual "--uamserver" option in chilli.
###!HS_UAMFORMAT=http://\$HS_UAMLISTEN:\$HS_UAMUIPORT/www/login.chi
HS_UAMFORMAT=https://(адрес web-сервера abills):9443/hotspotlogin.cgi #Адрес ДОЛЖЕН быть разрешен для доступа без авторизации

#   Same principal goes for HS_UAMHOMEPAGE.
###!HS_UAMHOMEPAGE=http://\$HS_UAMLISTEN:\$HS_UAMPORT/www/coova.html
HS_UAMHOMEPAGE="" #Оставляем пустым.
Комментируем

Код: Выделить всё

###
#   Post-Auth proxy settings
#
# HS_POSTAUTH_PROXY=<host or ip>
# HS_POSTAUTH_PROXYPORT=<port>

#   Directory specifying where internal web pages can be served
#   by chilli with url /www/<file name>. Only extentions like .html
#   .jpg, .gif, .png, .js are allowed. See below for using .chi as a
#   CGI extension.
##HS_WWWDIR=/etc/chilli/www

#   Using this option assumes 'haserl' is installed per-default
#   but, and CGI type program can ran from wwwsh to process requests
#   to chilli with url /www/filename.chi
##HS_WWWBIN=/etc/chilli/wwwsh

#   Some configurations used in certain user interfaces
#
##HS_PROVIDER=Coova
Не забываем отключить за ненадобностью dnsmasq и включить файрволл:

Код: Выделить всё

/etc/init.d/dnsmasq disable
/etc/init.d/firewall enable
/etc/init.d/firewall start
Обязательно запускаем один раз

Код: Выделить всё

/etc/init.d/chilli start
/etc/init.d/chilli stop
для создания файлов /etc/chilli/local.conf, /etc/chilli/main.conf etc
Потом запускаем для отладки

Код: Выделить всё

/usr/sbin/chilli -d -f
и видим при подключении клиента что-то типа:

Код: Выделить всё

tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=975)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 975
redir.c: 2969: 0 (Debug) close_exit
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=40)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 40
chilli.c: 273: 0 (Debug) caught 18 via selfpipe
chilli.c: 232: 0 (Debug) child 22764 terminated
chilli.c: 127: 0 (Debug) Freed child process 22764 [[redir]]
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=54
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=40)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 40
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=54
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=40)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 40
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=74
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=60)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 60
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=54
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=66
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=263
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=52)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 52
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=1475)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 1475
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=66
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=264
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=52)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 52
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=334)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 334
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=66
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=66
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=89)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 89
tun.c: 705: 0 (Debug) tun_decaps(idx=0, len=52)
dhcp.c: 3714: 0 (Debug) adding 14 to IP frame length 52
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=54
dhcp.c: 3420: 0 (Debug) dhcp_decaps: src=00:92:c9:05:55:7f dst=f8:d1:11:94:15:d4 prot=0800 2048 len=54
Параллельно смотрим на вывод радиуса, запущенного с ключем -X - вывод очень информативен, все ошибки в конфигурации показываются сразу.
Плюс - в биллинге / Отчёт/ Internet/ Ошибка/ - тоже много полезного.

Разберусь глубже - дополню инструкцию.
кто к нам с мечом - получит по оралу.

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWRT и биллинг

Сообщение RootAdmin »

Для того чтоб начал работать hangup надо добавить параметр /usr/sbin/chilli -d -f --coaport 3799

То есть на роутере в файл /etc/chilli/defaults

Код: Выделить всё

#coaport for hangup session
HS_COAPORT=3799

Разбираюсь, почему биллинг наоборот считает "получено" и "отправлено" в / Мониторинг/ Internet/
Может сам чего-то не понимаю.
кто к нам с мечом - получит по оралу.

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWRT и биллинг

Сообщение RootAdmin »

Неделю отработала связка, полет нормальный.
Буду ставить еще раз биллинг, уже в боевом варианте - сделаю пошаговую инструкцию по установке под wheezy.
кто к нам с мечом - получит по оралу.

RootAdmin
Сообщения: 9
Зарегистрирован: Пн авг 27, 2007 7:32 pm
Откуда: Пятигорск

Re: CoovaChilli вместо chillispot на OpenWRT и биллинг

Сообщение RootAdmin »

debian jessie
apache 2.4
в конфиге abills_httpd.conf меняем на Require all granted и Require all denied
кто к нам с мечом - получит по оралу.

WorldO
Сообщения: 1
Зарегистрирован: Пт май 06, 2016 5:25 am

Re: CoovaChilli вместо chillispot на OpenWRT и биллинг

Сообщение WorldO »

вывод очень информативен, все ошибки в конфигурации показываются сразу.???

Ответить