さらっと/etc/init.d/chillispotの再起動で何をやってるかを見てみた。
do_start() {
get_info
ifconfig $wifi_ifname 0.0.0.0 down
WAN=`uci -P /var/state get fon.wan.mode`
DISABLE=`uci -P /var/state get fon.advanced.${WAN}`
[ "$DISABLE" == "1" ] && return 1
SHARE=`uci get fon.advanced.sharewifi`
[ "$SHARE" == "0" ] && return 1
if [ "${DEVICE}" == "fonera20n" ]; then
GPIO=`cat /proc/gpio_switch`
[ "$GPIO" == "1" ] && return
fi
radconfig
ifup hotspot
# insert a rule to drop handling of traffic that comes in from the wifi interface directly. this interferes with QoS
iptables -t mangle -D PREROUTING -i "$wifi_ifname" -j DROP 2>/dev/null >/dev/null
iptables -t mangle -I PREROUTING 1 -i "$wifi_ifname" -j DROP
# enable the wifi interface ssid
ifconfig $wifi_ifname down
config_get ssid public essid
if [ "${DEVICE}" == "fonera20n" ]; then
echo iwpriv "$wifi_ifname" set SSID="FON_$ssid"
else
iwconfig "$wifi_ifname" essid "FON_$ssid"
fi
ifconfig $wifi_ifname 0.0.0.0 up # deconfigure the wifi interface
/usr/sbin/chilli \
--dns1="192.168.182.1" \
--dns2="192.168.182.1" \
--radiusnasid="$MAC" \
--dhcpif $wifi_ifname \
--papalwaysok \
--pidfile=$PID_F \
--localusers=/etc/fon/localusers \
--wwwbin=/bin/true \
--ipup=/bin/true \
--ipdown=/bin/true \
--conup="fs -l hotspot_inccount" \
--condown="fs -l hotspot_decount"
[ $? == 0 ] && return 0
return 1
}
radconfig()の中を見ると
radconfig() {
/usr/sbin/chilli_radconfig \
-c /dev/null \
--radiusserver1="$RADIUSSERVER1" \
--radiusserver2="$RADIUSSERVER2" \
--radiussecret="$RADIUSSECRET" \
--adminuser="$RADIUSADMUSR" \
--adminpasswd="$RADIUSADMPWD" \
--radiusnasid="$MAC" \
--dhcpif $wifi_ifname \
--wwwbin=/bin/true \
--ipup=/bin/true \
--ipdown=/bin/true \
> $TMP_C
parse_whitelist
[ -n "$(cat $TMP_C)" ] && {
MD5SUM_TMP=$(md5sum $TMP_C | awk '{ print $1 }')
MD5SUM_ETC=$(md5sum $ETC_C | awk '{ print $1 }')
if [ ! "$MD5SUM_TMP" = "$MD5SUM_ETC" ]; then
rm $ETC_C
mv $TMP_C $ETC_C
circular_log $LOG_LOOP_F "RELOAD"
return 0
else
circular_log $LOG_LOOP_F "NO RELOAD"
return 1
fi
return 1
}
circular_log $LOG_LOOP_F "NO RELOAD"
return 1
}
となっていて、定期的にFONのRadiusサーバにchilli.confを取りに行っているようだ。
そして、取得したchilli.confと/etc/chilli.confを比較して、違えばchilliを再起動しているようなのだが、それ以外であればchilliのプロセスが自身で何かやってるのか?
という程度まで見ただけ。
まず真っ当に使えるようになることが目標なんで、それほど真面目に見てみようという気も起こらないのだけど
追記
FONのサイトでFONルータの設定変更を行う機能があって、設定変更後に2分ほど待ってくださいという表示になるのですが、このchilli_radconfigの周期が1分45秒程度なので、たぶんこのプロセスでFONのサーバを確認しに行って、設定変更があれば反映するという仕組みになっているのでしょう。
Firewallのログで確認すると、データの送信バイト数は150〜300バイト程度なのですが、受信バイト数が0バイトです。FONのサイトで設定変更を行っても、こちらのルータに反映される様子も無いので受信データが0バイトになっている原因がFON側にあるのか、こちらのルータの異常にあるのか。。。
もう一つ気になるのが生存確認のPingですが、TCP1937ポートで接続してみると相手先はSSHサーバになっていました。
コメント