ただ、かなりマニュアル通りにいかない・・・というかトラブルに見舞われてます。
1.導入時
マニュアル通りであれば、ルータの設置時、最初に起動したときの設定Wizard上でネットワークに登録する画面が出てくる・・・はずなのですが、実際には登録画面が出ずにfonのサイトにリダイレクトされてしまいました。MyFonのページでもAlien表示のまま。公式サイトの情報もあまり役に立たず、結局はWebで検索した方法で登録ができたようです。
無線LANでFON_FREE_INTERNETに接続し、
https://www.fon.com/en/userzone/registerAPにアクセスする。
既存のネットワークと整合を取りつつ無線LANも導入したいし、公開側(FON_FREE_INTERNET)からのアクセスも開けたいのでセキュリティも考慮しておきたい...ということでネットワークの構造はかなり悩みました。
結局Firewall2台でサンドイッチ構造にしました。
2.FON_FREE_INTERNETがつながらない
どちらかと言えば、こちらが問題だと思うのですが。プライベート側のWLAN(SSID:MyPlace)に関しては問題無く動作しているのですが、パブリック側のWLAN(SSID:FON_FREE_INTERNET)がつながったり、切れたりを繰り返します。sshでログインすると、まんまOpenWrtなんでどういう状態になっているかは確認できています。
sshでログインすると・・・
BusyBox v1.11.1 (2010-02-17 13:46:25 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.
__
,_ .' '._______
; `\ / -=o=.-""""""`
; \ / /
__...----...;_ `;.:`"=._/
'-. `-.``;::' |
`-. `;::' ;
`'-.....-/::. /
|::. .'
/\:: .-`
jgs /';\ /|
/'; ;`;|
`-'`-;_/
Gari the Hummingbird
-------- Fonera 20n Firmware (v2.3.6.0) -----------
* Based on OpenWrt - http://openwrt.org
* Powered by FON - http://www.fon.com
----------------------------------------------------
root@Fonera:~# uci help
Usage: uci [] []
Commands:
batch
export []
import []
changes []
commit []
add
add_list ..=
show [[.[.]]]
get .[.]
set .[.]=
delete [.]]
rename .[.]=
revert [.[.]]
Options:
-c set the search path for config files (default: /etc/config)
-d set the delimiter for list values in uci show
-f use as input instead of stdin
-m when importing, merge data into an existing package
-n name unnamed sections on export (default)
-N don't name unnamed sections
-p add a search path for config change files
-P add a search path for config change files and use as default
-q quiet mode (don't print error messages)
-s force strict mode (stop on parser errors, default)
-S disable strict mode
-X do not use extended syntax on 'show'
root@Fonera:~# uci show registered
registered.fonreg=fonreg
registered.fonreg.registered=1
registered.fonreg.dev=0
root@Fonera:~#
どうもchilliのプロセスが1分45秒程度の間隔で再起動されているっぽいです。ログを見ると・・・
root@Fonera:/etc# cat /var/log/chilli_loop.logchillispot Wed Aug 10 21:19:14 UTC 2010 NO RELOADchillispot Wed Aug 10 21:21:07 UTC 2010 NO RELOADchillispot Wed Aug 10 21:22:59 UTC 2010 NO RELOADchillispot Wed Aug 10 21:24:51 UTC 2010 NO RELOADchillispot Wed Aug 10 21:26:43 UTC 2010 NO RELOADchillispot Wed Aug 10 21:28:35 UTC 2010 NO RELOADchillispot Wed Aug 10 21:30:27 UTC 2010 NO RELOADchillispot Wed Aug 10 21:32:19 UTC 2010 NO RELOADchillispot Wed Aug 10 21:34:11 UTC 2010 NO RELOADchillispot Wed Aug 10 21:36:03 UTC 2010 NO RELOAD
プロセスを確認すると、何故か再起動中。
root@Fonera:/etc# ps -ef | grep chilli27695 root 1988 S sh -c /etc/init.d/chillispot restart27696 root 2076 S /bin/sh /etc/rc.common /etc/init.d/chillispot restart27718 root 2580 S /usr/sbin/chilli_radconfig -c /dev/null --radiusserveroot@Fonera:/etc#
正常時はchilliのプロセスプロセスだけです。
root@Fonera:/etc# ps -ef | grep chilli27833 root 4276 S /usr/sbin/chilli --dns1=192.168.182.1 --dns2=192.168.root@Fonera:/etc#
再起動で何をやっているかと言えば・・・
root@Fonera:~# cat /etc/init.d/chillispot#!/bin/sh /etc/rc.commonTMP_C=/tmp/chilli.confETC_C=/etc/chilli.confPID_F=/var/run/chilli.pidPID_LOOP_F=/var/run/chilli_loop.pidLOG_LOOP_F=/var/log/chilli_loop.logLOOP=trueWHITELIST=/etc/fon/whitelist.dnsmasqDEVICE=$(cat /etc/fon_device)VERSION=$(cat /etc/fon_version)REVISION=$(cat /etc/fon_revision)RADIUSSERVER1=radconfig01.fon.comRADIUSSERVER2=radconfig02.fon.comRADIUSSECRET=garrafonRADIUSADMUSR=FON02-${DEVICE}-${VERSION}.${REVISION}RADIUSADMPWD=chillispotquit(){LOOP="false"circular_log $LOG_LOOP_F "Signal caught. Exiting..."}circular_log() {echo "chillispot $(date) $2" >> $1tail -24 $1 > $1.tmpmv $1.tmp $1}is_alive() {if [ ! -f $PID_F ]; thenecho "dead"return 0fiTEST_PID=$(cat $PID_F)if [ ! -d /proc/$TEST_PID ]; thenrm $PID_Fecho "dead"return 0fiCANDIDATE=$(cat /proc/$TEST_PID/status | grep Name: | awk '{ print $2 }')if [ "$CANDIDATE" = "chilli" ]; thenecho "alive"return 0elserm $PID_Fecho "dead"return 0fi}parse_whitelist() {if [ -s $TMP_C ]; thenawk '/newdomain/ { print $2 }' $TMP_C |awk -F. '/[a-zA-Z0-9\-\_]/ { print }' |sed s/,/\\n/g > $WHITELIST# Remove IPs that may have skipped the validationcat $WHITELIST | grep -v [0-9]$ > $WHITELISTsed /^newdomain/d -i $TMP_Cfi}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_Cparse_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" ]; thenrm $ETC_Cmv $TMP_C $ETC_Ccircular_log $LOG_LOOP_F "RELOAD"return 0elsecircular_log $LOG_LOOP_F "NO RELOAD"return 1fireturn 1}circular_log $LOG_LOOP_F "NO RELOAD"return 1}get_info() {. /lib/fon/config.shif [ "${DEVICE}" == "fonera20n" ]; thenMAC=$(ifconfig eth0.1 | grep HWaddr | awk -F "HWaddr " '{ print $2 }' | awk '{gsub(":","-",$1); print substr($0,0,17) }')elseMAC=$(ifconfig ${wifi_ifname_mac:-wifi0} | grep HWaddr | awk -F "HWaddr " '{ print $2 }' | awk '{gsub(":","-",$1); print substr($0,0,17) }')fiMAC=${MAC:-fon}#MAC="00-18-84-d0-08-7d"}do_start() {get_infoifconfig $wifi_ifname 0.0.0.0 downWAN=`uci -P /var/state get fon.wan.mode`DISABLE=`uci -P /var/state get fon.advanced.${WAN}`[ "$DISABLE" == "1" ] && return 1SHARE=`uci get fon.advanced.sharewifi`[ "$SHARE" == "0" ] && return 1if [ "${DEVICE}" == "fonera20n" ]; thenGPIO=`cat /proc/gpio_switch`[ "$GPIO" == "1" ] && returnfiradconfigifup hotspot# insert a rule to drop handling of traffic that comes in from the wifi interface directly. this interferes with QoSiptables -t mangle -D PREROUTING -i "$wifi_ifname" -j DROP 2>/dev/null >/dev/nulliptables -t mangle -I PREROUTING 1 -i "$wifi_ifname" -j DROP# enable the wifi interface ssidifconfig $wifi_ifname downconfig_get ssid public essidif [ "${DEVICE}" == "fonera20n" ]; thenecho iwpriv "$wifi_ifname" set SSID="FON_$ssid"elseiwconfig "$wifi_ifname" essid "FON_$ssid"fiifconfig $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 0return 1}start() {[ alive = "$(is_alive)" ] && return 0do_start# amazing automonitoring system.[ $? == 0 ] && fs -l hotspot_wdt_start}restart() {fs -l hotspot_wdt_stopkillall chilli > /dev/null 2>&1rm -f /var/run/chilli.piddo_start[ $? == 0 ] && fs -l hotspot_wdt_start}stop() {get_infofs -l hotspot_wdt_stop[ alive = "$(is_alive)" ] || {echo ERROR: chillispot is not running[ -f $PID_LOOP_F ] && kill $(cat $PID_LOOP_F) > /dev/null 2>&1rm -f $PID_LOOP_F > /dev/null 2>&1exit 0}[ -f $PID_F ] && kill $(cat $PID_F) >/dev/null 2>&1rm -f $PID_F[ -f $PID_LOOP_F ] && kill $(cat $PID_LOOP_F) > /dev/null 2>&1rm -f $PID_LOOP_F# disable the wifi interface ssidifconfig "$wifi_ifname" downcircular_log $LOG_LOOP_F "STOP"}alive() {ALIVE=$(is_alive)echo "chillispot is $ALIVE"if [ $ALIVE = "alive" ]; thenexit 1fiexit 0}reload() {get_inforadconfigkillall -HUP chilli}
たいしたことはやってませんね。本当にただのプロセス再起動です。
さて、上位のFirewallのアクセスログも確認していたのですが気になる箇所があって、chilli.confの中身を見てみると
root@Fonera:~# cat /etc/chilli.conf################################################################################ Fon ChilliSpot configuration file# Powered by FON (www.fon.com)###############################################################################radiusserver1 radius01.fon.comradiusserver2 radius02.fon.comradiussecret garrafonuamserver https://login.fon.com/cp/index.phpuamsecret garrafonuamallowed www.fon.com,www.paypal.com,www.paypalobjects.com,www.skype.comuamanydns
radius01.fon.comとradius02.fon.comにアクセスしそうな記述があるのですが、
root@Fonera:~# nslookup radius01.fon.comServer: 210.130.1.1Address 1: 210.130.1.1 ns11.iij4u.or.jpName: radius01.fon.comAddress 1: 213.134.45.160root@Fonera:~# nslookup radius02.fon.comServer: 210.130.1.1Address 1: 210.130.1.1 ns11.iij4u.or.jpName: radius02.fon.comAddress 1: 213.134.45.161
Firewallのアクセスログを見ると、213.134.45.162と213.134.45.163のRadius(udp1812)に1分に1回程度で何か送っている。164バイト程度の時と、328バイト程度の時がある。
ということで、FONルータが何か送っているようなのですが、詳細は不明です。
もう一つ、他のサイトの情報から定期的に自分の生存をfonサイトに送る仕様(213.134.45.191のポート1937に定期的にアクセスする)・・・だという事なんですが、アクセスログに何ものっていない。
何となくというレベルの推測ですが、やはりルータの登録に失敗していて、FONルータの内部で初期設定のWizardで設定されるべき何かがされていないんじゃ無かろうかと。
コメント