Tips

何をやっているのか完全に理解できない場合は絶対に実行しないこと。
La Foneraが使用不能になる場合があります!

UNIX,LINUX系のOSを管理出来る能力がある人のみ実行してください。最低限でもviの操作ができる人が対象です!
2008年5月24日現在の最新ファームウェアは0.7.2 r3です。

SSHでアクセスする方法

firmware 0.7.1 r1

この手順でSSHを有効に出来るのはファームウエアのバージョンが0.7.1r1の場合のみです。
r2以降の場合はfirmware 0.7.1 r2以降を参照するか、シリアルケーブルを使用してください。

Part7-186氏

http://www.mariomix.net/mariomix-blog/2006/11/hacking-la-fonera-parte-3/

この方法はLa Foneraのロックを外してSSHサーバを動かします。

  1. (Windowsの人は)SSHクライアントであるPuttyをインストールしておきます。
    http://www.chiark.greenend.org.uk/~sgtatham/putty/
    http://hp.vector.co.jp/authors/VA024651/#PuTTYkj_top (日本語版)
  2. 次のHTMLファイルをfirst.htmlというファイル名で作っておきます。
    <html><head></head><body><center>
    <form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
    <input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)" size="68" />
    <input type="submit" name="submit" value="Submit" />
    </form></center></body></html>
  3. 次のHTMLファイルをsecond.htmlというファイル名で作っておきます。
    <html><head></head><body><center>
    <form method="post" action="http://169.254.255.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
    <input name="username" value="$(/etc/init.d/dropbear)" size="68" ><input type="submit" name="submit" value="Submit" />
    </form></center></body></html>
  4. 自分のPCのLANインタフェースを次のように設定しておきます。
    Subnet mask: 255.255.255.0
    Gateway: 169.254.255.1
    DNS: 169.254.255.1
    WindowsXPの人は、TCP/IPのプロパティで、 詳細設定→IPアドレス→追加で「IP:169.254.255.2、ネットマスク:255.255.255.0」 にすればいいはずです。
  5. La FoneraとPCをLANケーブルで接続します。
  6. ブラウザで先ほどのfirst.htmlを開いてSubmitをクリックします。もし要求されたらユーザ名とパスワードを入力します。(設定前のデフォルトのユーザ名とパスワードは両方adminです。)
  7. ブラウザで先ほどのsecond.htmlを開いてSubmitをクリックします。もし要求されたら同様にユーザ名とパスワードを入力します。
  8. Puttyを起動してホスト名に169.254.255.1を指定してLa Foneraにrootでログインします。rootのパスワードのデフォルト値はadminです。(SSH1を利用すること)
  9. La Fonera上で以下のコマンドを実行します。
    mv /etc/init.d/dropbear /etc/init.d/S50dropbear
  10. 以下のようにviを起動します。
    vi /etc/firewall.user
  11. viが起動されたら、以下の行のコメントを外します。
    # iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
    # iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT
  12. ファイルを書き込み保存してviを抜けます。
  13. 以下のようにviを起動します。
    vi /bin/thinclient
  14. viが起動されたら、以下の行をコメントにします。(自動アップデートされないようにする)
    . /tmp/.thinclient.sh
    そして以下の行を代わりに加えます。
    cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')
  15. ファイルを書き込み保存してviを抜けます。

以上でLa Foneraでは常にSSHサーバが起動してログインすることができます。

(tmpの下に無用なファイルが増えすぎるのが嫌な方は)

cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')

の代わりに

if [ `cat /tmp/.thinclient.sh | wc -c` -le 33 ]; then
rm /tmp/.thinclient.sh
else
cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')
fi

を加えるのがお勧め

設定した後、接続タイプがunknownになっていないか「ステータス」画面でチェックすること
もし、unknownになっていたらインターネット接続画面で修正すること

firmware 0.7.1 r2以降

firmware 0.7.1 r2以降にアップデートされてしまったLa Foneraをそれ以前のバージョンに戻す

初期化によってファームウェアを0.7.1 r1以前に戻せれば、0.7.1 r1の手順でSSHできます
初期化によって戻るバージョンはLa Foneraの箱を開けて基板の裏のシールをみればわかりますが、現状0.7.0r4 〜0.7.1 r1の模様。

  1. 自分のPCのLANインタフェースを次のように設定します。
    IP: 169.254.255.2
    Subnet mask: 255.255.255.0
    Gateway: 169.254.255.1
    DNS: 169.254.255.1
    WindowsXPの人は、TCP/IPのプロパティで、 詳細設定→IPアドレス→追加で「IP:169.254.255.2、ネットマスク:255.255.255.0」 にすればいいはずです。
  2. http://169.254.255.1 から、設定画面にアクセスできることを確認します。
  3. インターネットから切断します。
  4. La Foneraを初期化します。 裏にあるリセットボタンを30秒ほど長押しし、電源プラグを外して付け直します。
  5. http://169.254.255.1 から、設定画面にアクセスし(再起動から3分ほどかかります)、 ファームウェアが0.7.1 r1になっていることを確認します。

firmware 0.7.1 r2以降にSSHでアクセスする

FoneraのDNSサーバを88.198.165.155にして電源を入れなおし、しばらく待つと
0.7.1r1の場合の7までやってくれるのでログインして8以降を行ってください
終わったらDNSサーバを元のアドレスに戻すのを忘れずに

参考:http://stefans.datenbruch.de/lafonera/#kolofonium
現在のファームウェアでは対策されて使えなくなったようです。

DHCPで渡すDNSサーバを変更

SSHを有効にした後,/etc/dnsmasq.confの最後に下記行を追加.( 例: OpenDNS を追加 )

dhcp-option=6,208.67.222.222,208.67.220.220

無線LAN機器無しでルータを登録する方法(Windows版)

  • FoneraにSSHでログイン出来るようにする
  • windows機のコマンドプロンプトで
    route add 192.168.182.1 192.168.*.* metric 1
    *(Foneraに割り当てたIP)
  • Fonera にログインして以下のコマンドを実行
    iptables -I INPUT 1 -p tcp --dport 3990 -j ACCEPT
    iptables -t nat -I PREROUTING -p tcp --dport 3990 -i eth0 -j DNAT --to-destination 192.168.182.1
  • ブラウザからhttp://192.168.182.1:3990/へアクセスすると Fonera登録ページに飛ばされるので登録

WAN(有線LAN側)からLa Fonelaの設定画面にアクセスする

  1. SSHでLa Fonelaにログイン。
  2. 以下のようにviを起動します。
    vi /etc/firewall.user
  3. viが起動されたら、以下の2行を追加します。
    iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 80 -j ACCEPT
    iptables -A input_rule -i $WAN -p tcp --dport 80 -j ACCEPT
  4. ファイルを書き込み保存してviを抜けます。

これでLa Fonelaを再起動するとWAN(有線)側からLa FonelaのWeb設定画面にアクセスできるようになっているはず

IPを半固定でふりわける

/etc/ethersに、MACアドレスとIPを書くだけです。書式はMAC IPを一行にします。例:

00:00:00:00:00:00 192.168.10.10

ブリッジにはしないけど、IPを固定しておきたい(共有設定などで)という時には有効だと思います。

La Foneraでのブリッジ接続設定方法

http://mrmuh.blogspot.com/2006/11/updates-explained-and-bridging-mode.html

0.7.1 rev 1専用。MyPlaceと家庭内ネットワークをブリッジ接続させます。

スクリプトは手動で使用し、/etc/init.d/には置かないでください。

上記ですが、ブリッジ接続設定した後は La Fonera の WAN側の IPアドレスから入ればウェブインターフェース、sshが使えますので自動設定にしても差し支えありません。 (/etc/init.d/にN15として設置しての動作報告あり)

192.168.1.222はFoneraのWAN側アドレスかISPのDNSサーバのアドレスに、XX-XX-XX-XX-XX-XXはFON_AP(ath0)のMACアドレスに置き換えてください。

#!/bin/ash
echo "Setting up LAN bridge"

# Kill DHCP server+ client
/usr/bin/killall dnsmasq
/usr/bin/killall -9 udhcpc

# create bridge interface
/usr/sbin/brctl addbr br0
/usr/sbin/brctl stp br0 off 
/usr/sbin/brctl setfd br0 0

# shutdown/remove IPs from the old interfaces
/sbin/ifconfig eth0:1 down 
/sbin/ifconfig eth0 0.0.0.0
/sbin/ifconfig ath1 0.0.0.0

# bring up the bridge interface
/sbin/ifconfig br0 up

# add the old interfaces to the bridge
/usr/sbin/brctl addif br0 ath1
/usr/sbin/brctl addif br0 eth0

# Set IP for the bridge
/sbin/udhcpc -i br0 -R # get new IP via dhcp
#/sbin/ifconfig br0 192.168.0.103 # static IP
#/sbin/route add default gw 192.168.0.1
/sbin/ifconfig br0:1 169.254.255.1 up # alias for configuration

# set firewall rules
iptables -A INPUT -i br0 -j ACCEPT
iptables -A OUTPUT -o br0 -j ACCEPT

# add bridge to hostapd.conf and restart hostapd (allows to use WPA) 
[ `grep -c bridge=br0 /tmp/hostapd.conf` = "0" ] && echo bridge=br0 >> /tmp/hostapd.conf
/usr/bin/killall killall hostapd
/usr/sbin/hostapd -B /tmp/hostapd.conf

# stopping chillispot
/etc/init.d/N50chillispot stop

# bringing ath0 (hotspot interface) down
/sbin/ifdown hotspot

# bringing it manually up
wlanconfig ath0 create wlandev wifi0 wlanmode ap
iwconfig ath0 essid "FON_AP"
ifconfig ath0 up

# restarting dnsmasq but without dhcp
dnsmasq

# restarting chilli
chilli --dns1=192.168.1.222 --dns2=192.168.1.222 --radiusnasid=XX-XX-XX-XX-XX-XX --dhcpif ath0

# configuring iptables
iptables -R NET_ACCESS 6 -i br0 -j ACCEPT
iptables -R NET_ACCESS 7 -o br0 -j ACCEPT
iptables -t nat -R POSTROUTING 2 -o br0 -j MASQUERADE

生存報告の間隔を調整する

  1. ログイン後、次のコマンドを実行
    # vi /bin/thinclient
  2. /(スラッシュ)キーを押し、「sleep」と入力。すると以下の行がヒットするので「3600」の部分を秒単位で書き直します。
    sleep "$((0x$(head -c2 /dev/urandom | hexdump | awk '$2 > 0 {print $2}') % 3600))"
  3. ESCキーを押し、:wq (先頭からコロン、小文字w、小文字q)と入力し終了します。
    例:sleep "$((0x$(head -c2 /dev/urandom | hexdump | awk '$2 > 0 {print $2}') % 1800))"
    ↑これで毎時0分〜30分以内にFonへアクセスします。

consoleからfirmwareのupdate・復旧を行う

24 名前:anonymous 投稿日:2006/12/19(火) 01:20:26 ID:???
前スレでアドバイスくれた方サンクス。
携帯用シリアルケーブルを作成してconsoleから無事ファームのアップデートが出来ました。おおまかな手順を書いておきます。

ケーブルは9-KEケーブル相当品を使いシリアルコンソールに接続。
1Pin TxD、2Pin RxD、4Pin GND

下記サイトを参考にしました。
http://www.kannet.ne.jp/tomaru/kenkyuushithu/technic/9-ke/9-ke.htm
http://jauzsi.hu/2006/10/13/inside-of-the-fonera
http://log.tigerbus.de/?p=89
http://www.mizore.jp/wiki/index.php?LANDISK%2Fserial-console
http://iohack.sourceforge.jp/tanks/index.php?SERIAL-KIT
http://www.konoie.net/archives/2007/01/07_0045.php

1. TFTP鯖を立ち上げる。
  windowsで鯖を立てる場合は以下のtftpd等を使用
  http://www.vector.co.jp/soft/dl/winnt/net/se377860.html
  http://www.vector.co.jp/soft/win95/net/se174412.html
2. FONのダウンロードからfonera_0.7.1.1.fonを持ってくる。
(1/24現在ダウンロードはfonera_0.7.1.2.fonに変わっています)
fonera_0.7.1.1.fon
ハッシュ

MD5 (fonera_0.7.1.1.fon) = 7da3bcfefc100ab89ce94524e2b3b516
SHA1 (fonera_0.7.1.1.fon) = 05e41f0798c1269e6a8206f78510b8662e66cadb
SHA256 (fonera_0.7.1.1.fon) = 14a51da343cf599cf27bb2f0b80a5cdbedd830a011b47f3579fb34abfcc97fb9
SIZE (fonera_0.7.1.1.fon) = 2026683
dd if=fonera_0.7.1.1.fon of=fonera_0.7.1.1.fon.tgz bs=1 skip=519

  fonera_0.7.1.2.fonの場合

dd if=fonera_0.7.1.2.fon of=fonera_0.7.1.2.fon.tgz bs=1 skip=519

3. 展開してkernel.lzmaとrootfs.squashfsを取り出しTFTP鯖へ
4. シリアルコンソールを立ち上げる。
  ^Cでコマンドモードにする。

ip_address -l 192.168.1.2/24 -h 192.168.1.1
load -r -b %{FREEMEMLO} kernel.lzma
fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
load -r -b %{FREEMEMLO} rootfs.squashfs
fis create -r 0xA8030000 -e 0x00000000 rootfs

電源再投入で元通りに...

追記:
上記コマンドで復旧出来ない場合(telnet経由RedBoot時?)

ip_address -l 192.168.1.2/24 -h 192.168.1.1
fis init
load -r -v -b 0x80041000 rootfs.squashfs
fis create -b 0x80041000 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
load -r -v -b 0x80041000 kernel.lzma
fis create -r 0x80041000 -e 0x80041000 -l 0x000B0000 vmlinux.bin.l7

ip_addressコマンドですが筐体を開けずにRedBootにアクセスを既に実行してある場合La Foneraのアドレスは192.168.1.254/24に設定済みのはずなので

ip_address -h 192.168.1.1

  の様にTFTP鯖の指定のみでOK(-l 192.168.1.2/24は省略可)

オリジナルのフラッシュレイアウトは以下の通りです。

RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0xA8000000  0x00030000  0x00000000
rootfs            0xA8030000  0xA8030000  0x00700000  0x00000000
vmlinux.bin.l7    0xA8730000  0x80041000  0x000B0000  0x80041000
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000

オリジナルのfconfigのBoot script

Boot script:
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>>

La Fonera のソースを build する

Debian sarge で動作確認しました。
1. ソースをダウンロード & 展開します。(カレントディレクトリに展開されるので注意)

mkdir fonera-source
cd fonera-source
wget http://download.fon.com/firmware/fonera/latest/fonera.tar.bz2
tar xvfj fonera.tar.bz2

2. build します。(make -j2 とかすると失敗するので注意)

make

3. 以下に mips-linux-uclibc-gcc などが生成されます。

./staging_dir_mips/bin/mips-linux-uclibc-gcc

4. 以下に kernel と rootfs のイメージが生成されるのでシリアルから FlashROM に書き込みます。(Version 0.7.0 rev 5)

./bin/openwrt-ar531x-2.4-vmlinux.lzma
./bin/openwrt-ar531x-2.4-root.squashfs

FON_APに誰かがつなぎに来たら、メールを送るようにするやりかた(暫定)

590 名前:anonymous 投稿日:2006/12/22(金) 22:24:05 ID:???
FON_APに誰かがつなぎに来たら、メールを送るようにするやりかた

1.FONルータのsyslogdで別のLinuxマシンにログを送る。

syslogd -C 16 -L -R 送り先 

2.Linuxマシンで swatch で daemon.log を監視し /Client MAC=/ を見つけたらメール送信。 こんな内容のメールが送られてきます。

Dec 22 19:51:07 fon chillispot[689]: chilli.c: 3051: Client MAC=xx-xx-xx-xx-xx-xx assigned IP 192.168.182.10 

FONルータ単体で出来れば楽なんですけどね。

591 名前:anonymous 投稿日:2006/12/22(金) 22:28:28 ID:???
cronとシェルスクリプトとtelnetコマンドでメール送れるんじゃない?

Fonera単体でFON_APにアクセスがあったらメールで知らせる(適当版)

  1. /etc/mail.txtに
    HELO example.com
    mail from:hoge@example.com
    rcpt to:fuga@example.com
    data
    From:hoge@example.com
    To:fuga@example.com
    Subject:FON access
    Somebody access to FON AP
    .
    というファイルを作る
    各項目は環境に応じて変える
  2. POP before SMTPが必要ない人は3へ
    /etc/pop.txtに
    user ユーザ名
    pass パスワード
    quit
    というファイルを作る
  3. /usr/bin/foncheck.shに
    #!/bin/sh
    wlanconfig ath0 list > /tmp/fonap.txt
    new=`wc -l /tmp/fonap.txt|cut -d" " -f7`
    old=`wc -l /tmp/fonap.old|cut -d" " -f7`
    if [ $new -gt $old ]
    then
      telnet POPサーバのアドレス 110 < /etc/pop.txt#POP before SMTPがいらない場合はコメントアウトする
      telnet SMTPサーバのアドレス 25 < /etc/mail.txt
    fi
    mv /tmp/fonap.txt /tmp/fonap.old
    というファイルを作る
  4. 実行権限を与える
    chmod +x /usr/bin/foncheck.sh
  5. crontab -eで
    * * * * * /usr/bin/foncheck.sh
    と入れる
    誰かがFON_APに繋いできたらログインしなくてもメールが来ます
    MACアドレス等を記録したい人は
    wlanconfig ath0 list >> /www/fonaccess.txt
    とか追加してブラウザで見るといいのでは

筐体を開けずにRedBootにアクセス

DD-WRTのフォーラムより
http://www.dd-wrt.com/phpBB2/viewtopic.php?p=49386#49386

1. RedBoot Config領域の書き換えを可能にしたvmlinuxをダウンロード

wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma

2. vmlinux.bin.l7領域に書き込み

mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7

3. La Foneraを再起動

reboot

4. RedBootのTELNET設定済ファイルをダウンロード

wget http://fonera.info/camicia/out.hex

5. RedBoot config領域に書き込み

mtd -e "RedBoot config"  write out.hex "RedBoot config"

6. La Foneraの電源を切る

5. PCのネットワークの設定を下記のように設定

     IP : 192.168.  1.x
NETMASK : 255.255.255.0
xは1〜253の間

6. La FoneraとPCをLANケーブル or ハブ経由で接続

7. La Foneraの電源を入れる

8. 数秒後に192.168.1.254のポート9000にtelnet

telnet 192.168.1.254 9000

以上で筐体を開けずにRedBootにアクセスできます.
ファームウェアを破壊する前にこの設定を行っておけば
もし破壊してしまってもTFTPを使ってファームウェアを書き込むことができます.

MyPlaceのSSIDが表示されないようにする

/etc/functions.shに

iwpriv ath1 hide_ssid 1

を追加
iwprivのオプション一覧はこちら
http://madwifi.org/wiki/UserDocs/UsersGuide

Foneraでsnmpdを動かす

Foneraの時間を日本時間にする

/etc/TZにJST-9と書く

RTS/CTSを有効にする

/etc/function.shに

iwconfig ath0 rts 数値

を追加
設定した数値より大きいパケットを送る前に送信要求(RTS)を送信します
リピータを使っていたり、指向性アンテナを付けていて隠れ端末が問題になっている人以外は必要ありません

FON_APからのメールの送信を禁止する

SPAMの発信源にされたくないなどの理由で、FON_APからメールの送信を禁止したい人は /etc/firewall.fonの

# DNS is always allowed from the tunnel
iptables -A NET_ACCESS -p udp --dport 53 -j ACCEPT
iptables -A NET_ACCESS -p tcp --dport 53 -j ACCEPT

の後に

iptables -A NET_ACCESS -p tcp --dport 25 -j DROP

を追加します。

リンク

関連項目


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-05 (金) 18:04:24 (420d)