ちなみに,OpenVPN クライアントとして OpenVPN for Android を使用する場合,DNS の設定を,自宅 LAN の DNS で override すると,自宅 LAN のマシン名とかで名前引きできるので便利.
2023年7月30日日曜日
OpenWrt 22.03.5 OpenVPN の tun を NAT で接続する
ちなみに,OpenVPN クライアントとして OpenVPN for Android を使用する場合,DNS の設定を,自宅 LAN の DNS で override すると,自宅 LAN のマシン名とかで名前引きできるので便利.
2023年7月28日金曜日
4台目 OpenWRT
sudo dnf --setopt install_weak_deps=False --skip-broken install \
bash-completion bzip2 gcc gcc-c++ git make ncurses-devel patch \
rsync tar unzip wget which diffutils python2 python3 perl-base \
perl-Data-Dumper perl-File-Compare perl-File-Copy perl-FindBin \
perl-IPC-Cmd perl-Thread-Queue
git clone https://git.openwrt.org/openwrt/openwrt.git
Target System --> MediaTek Ralink MIPS
Subtarget --> MT7621 based boards
Target Profile --> ELECOM WRC-1167GST2
2021年1月9日土曜日
OpenWRT PPTP サーバで LAN リソースにアクセス
外出先から家 LAN にアクセスできるよう,OpenWRT で PPTP サーバを立ち上げた.
手順はここに載ってる通りで,Android -> OpenWRT -> WAN という経路はあっさり繋がったけど,家の LAN にぶら下がってる機器には一切アクセスできない.こんなんみんな困ってるはずと思ってググってみたけど,困ってる書き込みはあったものの解決策の書込みがなさげ.なので拙いネットワーク知識をフル動員して自力で解決してみる.
まず Android から OpenWRT の PPTP サーバに繋ぐ前の,ルータのネットワークはこんな感じ.
WAN ---(nat)-----[OpenWRT]----- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) (192.168.0.1) (192.168.0.0/24)
Android から OpenWRT の PPTP サーバに繋ぐと,ppp1 が現れて以下のようになる.
WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) | (192.168.0.1) (192.168.0.0/24)
+-- ppp1 ----------- android
(192.168.0.31) (192.168.0.32)
この状態で Android で発生したパケットは ppp1 に投げられて WAN には出るものの,br-lan には伝わらない.
●作戦1
上の状態で br-lan のブリッジに ppp1 を含めたら行けるはずと思ったけど,ppp1 は PPTP サーバに接続・切断するたびに生成・消滅するので,OpenWRT ブート時に bridge することができない.PPTP サーバに接続・切断する度に bridge 構築する何かコマンドを実行できればいいんだけど,設定を眺める限りそういう機能もなさげ?
ということで失敗.
●作戦2
WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) | (192.168.0.1) (192.168.0.0/24)
+-- ppp1 ----------- android
(192.168.1.1) (192.168.1.2)
ppp1 のサブネットを LAN と違うものにする.
LAN / ppp1 それぞれ自サブネットでない宛先パケットは一旦 OpenWRT に投げられて,OpenWRT はすべてのサブネットのルーティングを知っているはずだから,LAN <--> ppp1 のルーティングを適切に行なってくれるはず,と予想.
実際は,LAN --> android の ping は通ったが,android --> LAN の ping が通らなかった.
br-lan まではパケットが流れていそうなことは見えたが,br-lan 配下の PC まで何故かパケットが届いていない.
頑張れば行けそう感があるものの,解析が難航したので諦めた.
●作戦3
WAN --- LAN が NAT を介して接続しているように,LAN --- ppp1 を NAT を介して繋げばいいのでは,と以下のようにしてみた.
WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) | (192.168.0.1) (192.168.0.0/24)
+---(nat)--- ppp1 ----------- android
(192.168.1.1) (192.168.1.2)
これがビンゴ! 無事 android から LAN 機器が見えるようになった.
でこれを実現するために iptables で nat テーブルの POSTROUTING チェインに -j MASQUERADE を追加すれば良い.OpenWRT ではカスタムルールを追加するために postrouting_rule チェインが用意されているので,これに追加することにする.
OpenWRT の Network→Firewall→Custom Rules に図のようなコマンドを入力することで実現できる.
2020年12月27日日曜日
SMTPs / POPs ゲートウェイを立てる
ウチの HDD 録画機であるところの VARDIA RD-S1004K,ネット録画予約するにはメールを介してやり取りするが,古い機種なので SMTP-AUTH / SMTP over SSL / POP over SSL にことごとく対応していない.
プロバイダが提供するメールサーバはこれらが必須になったので,ローカルでメールサーバを立てようかと思ったけど,メールサーバは非常に管理がめんどくさい.
なので素の SMTP / POP を SMTP-AUTH over SSL (SMTPs) / POP over SSL (POPs) に変換するゲートウェイを立ててメール処理自体は gmail のメールサーバに丸投げすることにした.
で,* over SSL の部分は,stone で以下のようにすれば実現できる.
stone smtp.gmail.com:465/ssl 10025 -- pop.gmail.com:995/ssl 110これで少なくとも POPs に関しては,stone を実行しているマシンのポート 110 で POP アクセスできる.次に SMTP を SMTP AUTH に変換する簡単なゲートウェイプログラムを作った.→GitHub
SMTP AUTH のプロトコルはググれば色々出てくる.
これを上記 stone と同じサーバに仕掛けて以下のような経路を作ると,
port25 → [SMTP AUTH GW] → port10025 → [stone] → gmail smtp (port993)port 25 で受けた素の SMTP プロトコルを SMTPs に変換して gmail smtp サーバに転送する.試しに telnet で手動でメール投げてみた.
[yoshi@rafale ~]# telnet ag300h 25
Trying 192.168.0.254...
Connected to ag300h.
Escape character is '^]'.
220 smtp.gmail.com ESMTP y23sm35522980pfc.178 - gsmtp
* EHLO hoge.com
250-smtp.gmail.com at your service, [xx.xx.xx.xx]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
* MAIL FROM: <yyyy@gmail.com>
250 2.1.0 OK y23sm35522980pfc.178 - gsmtp
* RCPT TO: <xxxx@gmail.com>
250 2.1.5 OK y23sm35522980pfc.178 - gsmtp
* DATA
354 Go ahead y23sm35522980pfc.178 - gsmtp
* From: yyyy@gmail.com
* To: xxxx@gmail.com
* Subject: TEST
*
* test mail
* .
250 2.0.0 OK 1609073620 y23sm35522980pfc.178 - gsmtp
* QUIT
221 2.0.0 closing connection y23sm35522980pfc.178 - gsmtp
Connection closed by foreign host.
[yoshi@rafale ~]#
2020年12月26日土曜日
OpenWRT で stone-ssl を動かす (2020年版)
で stone をクロスコンパイルしてこれで動かしてみる.
下記修正を行ったものを GitHub で公開しているので,欲しい人はどうぞ. https://github.com/yoshinrt/stone
の branch: ag300h
ハード: Buffalo WZR-HP-AG300H
OpenWRT: 19.07.5 r11257-5090152ae3 / LuCI openwrt-19.07 branch git-20.341.57626-51f55b5
stone: 2.3e
https://openwrt.org/docs/guide-developer/quickstart-build-images
export OPENWRT_DIR=~/openwrt
export PATH=$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/bin:$PATH
export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl
●openssl のビルドOpenWRT の toolchain でビルドされる openssh は 1.1.1i で stone の想定と合っていないので,旧 ver. をビルドして static link するのが楽.
1.0.2u なら無理なく通せそうなので,これ持ってきて configure, make.
./Configure linux-mips32 --prefix=/usr --libdir=lib \
--openssldir=/etc/ssl --cross-compile-prefix="mips-openwrt-linux-musl-" \
-I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/usr/include \
-I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include/fortify \
-I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include \
-L$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/usr/lib \
-L$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/lib \
-znow -zrelro -Wl,--gc-sections shared enable-weak-ssl-ciphers \
enable-ssl enable-ssl2 enable-ssl2-method enable-ssl3 enable-ssl3-method \
-DOPENSSL_PREFER_CHACHA_OVER_GCM -DOPENSSL_SMALL_FOOTPRINT
make
キモは SSLv2, SSLv3 あたりを有効にしないと,stone リンク時に SSLv2_server_method(), SSLv3_server_method() が無いと怒られる.TOOLDIR_AG300H = $(OPENWRT_DIR)/staging_dir/target-mips_24kc_musl
ag300h:
$(MAKE) CC="mips-openwrt-linux-musl-gcc" CFLAGS="$(CFLAGS) -D_GNU_SOURCE \
-I$(TOOLDIR_AG300H)/usr/include -L$(TOOLDIR_AG300H)/usr/lib" \
FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
mips-openwrt-linux-musl-strip stone
ag300h-pop:
$(MAKE) CC="mips-openwrt-linux-musl-gcc" TARGET=ag300h pop_stone
ag300h-ssl:
$(MAKE) CC="mips-openwrt-linux-musl-gcc" CFLAGS="-static -I./openssl/include -L./openssl" \
SSL_LIBS="-lssl -lcrypto" TARGET=ag300h ssl_stone
基本的に fon あたりをコピーして修正するのが楽.SSLv2, SSLv3 もちゃんと組み込まれている.
root@ag300h:~# stone -h ssl
Dec 26 17:33:25.671984 6325176 stone 2.3e http://www.gcd.org/sengoku/stone/
Dec 26 17:33:25.673056 6325176 Copyright(C)2007 by Hiroaki Sengoku
Dec 26 17:33:25.675053 6325176 using OpenSSL 1.0.2u 20 Dec 2019 http://www.openssl.org/
opt: -q ; SSL client option
-z ; SSL server option
SSL: default ; reset to default
(略)
tls1 ; just use TLSv1
ssl3 ; just use SSLv3
ssl2 ; just use SSLv2
no_tls1 ; turn off TLSv1
no_ssl3 ; turn off SSLv3
no_ssl2 ; turn off SSLv2
(略)
2014年7月17日木曜日
DD-WRT につぶやかせてみる
最初は Basic Auth とかで wget で適当な URL + Query String を指定すれば ok だろうと軽く考えていたのだが,なんか Twitter は OAuth を採用していて (今更気づいた),wget + スクリプトで対応できる範疇を超えている.
んー,と思って色々探してみたら,StewGate-U というサービス発見!!
これは OAuth の認証を肩代わりしてくれるプロキシで,StewGate に対し簡単な http アクセスをするだけであとは StewGate⇔Twitter 間で OAuth 認証をやってくれる.
というわけで,DD-WRT からつぶやいてみたのが上の画像.
DD-WRT 内蔵の wget コマンドは POST データを送信するオプションが省かれていたので,curl をクロスコンパイルしてやってみた.
これで色々面白いことができそうヽ(´ー`)ノ
2014年4月20日日曜日
DD-WRT でゲスト用 WiFi AP を作る
WAN--DD_WRT-+-有線,WiFi I/F [192.168.0.x/24] ←本来の LAN
+-仮想 WiFi I/F [192.168.1.x/24] ←ゲスト用 WiFi
というわけでここを見ながら仮想 WiFi I/F の追加と DHCP の設定までしたところで,本来の LAN から外に一切出れなくなった.参照ページの後ろの方に iptables の設定が載っているので仮想 WiFi⇔WAN 通信には iptables 設定が必要なのだろうけど,I/F 足しただけでなんで本来 LAN に影響が出るんだ? と思って,iptables -nvL してみたら,root# iptables -nvL
Chain INPUT (policy ACCEPT 46 packets, 4591 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 28 packets, 1912 bytes)
pkts bytes target prot opt in out source destination
root#
↓
ルールがカラなうえ,default が全部 ACCEPT とかもうね.内から外に出られないばかりか,外からは丸見え状態www
なんか仮想 WiFi I/F 足しただけで,iptables の設定はすべて吹っ飛ぶのね…
というわけで昔 Linux でルータ組んだ時のことを思い出しつつ下のような iptables スクリプトを組んだ.
長ったらしいけど,キモは FORWARD チェインのところで,*->WAN, WAN->* のパケットを先に ACCEPT なり DROP なりした後,ゲスト LAN->*, *->ゲスト LAN のパケットを全破棄すれば,「ゲスト LAN は WAN しかアクセス出来ない」ということが実現できる.
#! /bin/sh
WanIF=ppp0 # WAN I/F
LanIF=br0 # 本来 LAN I/F
LanGstIF=ath0.1 # ゲスト WiFi I/F
LanIP=192.168.0.0/16 # 本来 LAN とゲスト LAN をカバーする IP アドレス・マスク
echo 1 > /proc/sys/net/ipv4/ip_forward
### local service ############################################################
State(){
iptables -A $1 -m state --state ESTABLISHED,RELATED -j ACCEPT # 接続済みを許可
iptables -A $1 -p tcp ! --syn -m state --state NEW -j DROP # おかしいパケットを廃棄
}
# ポート開放用のサブルーチン
OpenLocalPort(){
iptables -A WanIn -p tcp --dport $1 -j ACCEPT
}
# ポートフォワーディング用のサブルーチン
PortForward(){ # sport, dip, dport
iptables -t nat -A PREROUTING -p tcp -i $WanIF --dport $3 -j DNAT --to-destination $2:$3
iptables -A WanInFwd -p tcp -d $2 --dport $3 -j ACCEPT
}
### Flush & Reset ############################################################
iptables -F
iptables -t nat -F
iptables -X
### WAN in/out filter ########################################################
# WAN->lo 入力フィルタ
iptables -N WanIn
OpenLocalPort 80 # ポート開放例
iptables -A WanIn -j DROP
# WAN->どこか (FWD) 入力フィルタ
iptables -N WanInFwd
PortForward 21211 192.168.0.13 21211 # ポートフォワーディング例
iptables -A WanInFwd -j DROP
# WAN へ出力フィルタ
# ローカルアドレスを外に出さない
iptables -N WanOut
for ip in 10.0.0.0/8 176.16.0.0/12 192.168.0.0/16 127.0.0.0/8; do
iptables -A WanOut -d $ip -j DROP
done
# SMB 関係のパケットを外に出さない
for port in 137:139 445 111; do
iptables -A WanOut -p tcp --dport $port -j DROP
iptables -A WanOut -p udp --dport $port -j DROP
done
iptables -A WanOut -j ACCEPT
# ゲスト LAN からの入力フィルタ
# ゲスト LAN からルータの http サーバや SMB サーバにアクセスさせない
iptables -N LanGstIn
for port in 80 8080 22 137:139 445 111; do
iptables -A LanGstIn -p tcp --dport $port -j DROP
iptables -A LanGstIn -p udp --dport $port -j DROP
done
iptables -A LanGstIn -j ACCEPT # Guest LAN->lo を許可
### Deafult Rule #############################################################
iptables -P INPUT ACCEPT
State INPUT # ステートフルパケットフィルタ
iptables -A INPUT -i $WanIF -j WanIn # WAN->lo を filter
iptables -A INPUT -i $LanGstIF -j LanGstIn # ath0.1 からのパケットフィルタ
iptables -P OUTPUT ACCEPT
State OUTPUT # ステートフルパケットフィルタ
iptables -A OUTPUT -o $WanIF -j WanOut # lo->WAN を filter
iptables -P FORWARD ACCEPT
State FORWARD # ステートフルパケットフィルタ
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -i $WanIF -j WanInFwd # WAN->* を filter
iptables -A FORWARD -o $WanIF -j WanOut # * ->WAN を filter
iptables -A FORWARD -i $LanGstIF -j DROP # Guest->* を DROP
iptables -A FORWARD -o $LanGstIF -j DROP # *->Guest を DROP
# NAT
iptables -t nat -A POSTROUTING -s $LanIP -o $WanIF -j MASQUERADE
2012年1月24日火曜日
3台目 DD-WRT
こいつのいい所は,CPU 680MHz, MEM 128MB,Flash 32MB という家庭用ルータにしては豪華なスペック.数値的なスペックだけで言えば PentiumII 位の PC と変わらん.おまけに USB もついてるのでファイルサーバにもなってくれるし.
つうわけで,一度も普通に使うことなく,箱開けて速攻で DD-WRT ファームを流し込んだ.
今のところルータ・WiFi の動作に何の問題も無く安定している模様.USB-HDD の SMB マウントも問題なく動作した.
メモリ余りすぎwww
WNDR3300 とはちがうのだよWNDR3300 とは!
CPU パワーやストレージ容量に余裕ができたので,http サーバとか svn サーバとかいろいろ入れて遊べそう.
-----
せっかくなんで通信速度測ってみた.
(1) LAN速度
PC --- (通信機器) --- (有線 or Wifi) --- WZR-HP-AG300H
の接続で,PC・WZR-HP-AG300H で iperf を実行.
| 通信機器 | 設定 | 通信速度 |
|---|---|---|
| PC オンボード GbEther | 有線 | 195Mbits/sec |
| PC オンボード GbEther | 有線, Jumbo Frame (9KB) | 260Mbits/sec |
| GW-US300MiniS | 11n/g | 44.4Mbits/sec |
| WNDR3300 | 11n/g | 20.6Mbits/sec |
| WNDR3300 | 11a | 24.9Mbits/sec |
| WNDR3300 | 11n/a | 26.4Mbits/sec |
あと気になったのが無線 LAN の遅さで,WZR-HP-AG300H とは 2m ほどしか離れておらず,どれもフルスピートでリンクできていたにも関わらず,かなり遅め (;´д⊂)計測結果から見て,WNDR3300 が足を引っ張っている可能性が高いが.
(2) WAN速度
PC --- (有線) --- (ルータ) --- 外部速度計測サイト (Radish)
の接続で,速度計測サイトで計測.
| 通信機器 | 通信速度 |
|---|---|
| WNDR3300 | 42Mbits/sec |
| WZR-HP-AG300H | 78Mbits/sec |
2010年7月15日木曜日
La Fonera+ 復活
で,Desire も入手したことだし,外で Fon AP にめぐり合うこともあるかもしれないということで,Fonera+ のファームウェアを Fon 公式のに戻して,Linus 権限を取り戻すことにした.
で,ここを見ながら Fon の FW を戻したのだが,なんか中途半端にうごかねぇ… でふと気づいたのだが,コレって FON2100 (Fonera無印) の FW じゃね? なまじ動くもんだから,無駄な時間を食っちまった.
で,Fonera+ (FON2201) のリカバリ方法を捜し求めてたどり着いたのがここ.
無事標準 FW に戻せた.これで大阪あたりなら FON スポット見つけて無線 LAN 接続できるかもしれない.
2010年6月17日木曜日
Desire で VPN + リモートデスクトップ
RDP クライアントは Remote RDP Lite を使用した.まずは無線 LAN で接続してみると,何の問題もなく接続できた.
次に 3G 回線を使って接続してみる.Android は標準で VPN 接続ができ,さらに今使ってる家のルータの DD-WRT には PPTP サーバがあるので,PPTP でセッションを張ることにしたのだが,ここでハマる.
DD-WRT のサーバ設定をここを見ながらやって,Android の VPN の設定を行って接続してみたら,どうやら DD-WRT の PPTP サーバは (標準では) 暗号化をサポートしないようなので,「暗号化を有効にする」のチェックを外さないと PPTP サーバにログインできなかった.
で,ログインはできるのだが,その後の通信が一切できない(;´д⊂)
で何度かもがいているうちに,PPTP サーバに暗号化を設定できる方法があることがわかったので,ここを見ながら DD-WRT 側の設定を行ったあと,Android 側の設定で「暗号化を有効にする」のチェックを入れると,サーバログインもその後の通信もできたヽ(´ー`)ノ
VPN 接続だとローカル LAN に接続してるのと同じだから,あらゆるローカルネットワークリソースにアクセスできるので超便利ヽ(´ー`)ノ
で,肝心のリモートデスクトップは… Remote RDP Lite が機能制限版なので操作性がちょっと悪いが,速度的には我慢できるレベル.緊急用の操作は十分できる.そのほかにも ssh で Linux サーバログインとかもできるので,いろいろ遊べそう.
2009年3月8日日曜日
2台目 DD-WRT @ WNDR3300

ウチの自宅 LAN ネットワークは,有線 BB ルータ + La Fonera (無線 LAN AP) になっているが,そろそろ 11n MIMO + Gb Ether の 無線 LAN ルータを物色中.
この条件に合うものはいくつかあるが,やはり DD-WRT が入れられるやつがいい.というのも,ルータがフリーズするのを避けるために定期的にリブートをかける,なんて事が簡単に出来るし,中身は素の Linux に近いだけにそのほかにも色々融通が効く.が,この条件がついたとたん,今のところ条件に合うやつがない.
と,ふと目にとまったのが Netgear WNDR3300 の特売品 (\5,980).まさかね…と思って DD-WRT の対応機器リストを見てみたら,対応してるじゃん! 速攻でぽちっとな(笑) Gb Ether じゃないけど,11n MIMO だし,この値段なら万が一壊しても被害は最小で済む.
というわけで,今日届いた.まずざっと正規 FW の設定項目を眺めてみる… 特に試すべき機能もないな.というわけで一度もネットに繋げることなく DD-WRT 化決行!
最初は,筐体あけてシリアル線引っ張り出して,みたいなことを覚悟していたのだが,なんと標準の FW アップデート操作で DD-WRT が入った.箱から出してからわずか 10分足らずで DD-WRT 化完了www こりゃらくでいいわ.
で,いろいろいじってみる.WNDR3300 は FLASH が 4MB と,LaFonera の半分なので,いくつかの機能が削られているらしいのだが,何が削られているのかわからなかった.あ,そういや CIFS マウントとかの項目がないなぁ.
で,早速今のルータと置き換えて速度計測しようと思ったら… 外に出れねぇ_| ̄|○ DD-WRT の ssh コンソールでは外が見れるのだが,WNDR3300 の LAN ポートにつないだ PC とかから外に出れない.明日 iptables の設定でも見てみるか.
仕方がないので,今は単なる AP と化している.
----
追記:
iptables じゃなくて,DNS サーバの設定がまずかっただけだった orz 今のところ,何の問題もなく動いている模様.さすが,「標準 FW より安定している」と言われているだけあるw
あんまり意味ないかもしれないけど,有線でスピードテストやってみた.(11n の LAN アダプタ持ってないので,無線はテストできないの(゜ーÅ)ほろり↓のほうで計測しました) PC対PC は,WAN・LAN にそれぞれつないだ PC 同士で iperf で計測,PC対WAN は,普通のブロードバンド速度計測サイトでの計測.
| ルータ | PC対PC | PC対WAN |
| Buffalo BBR-4HG | 53.4Mbps | 45Mbps |
| Netgear WNDR3300 | 40.9Mbps | 40.0Mbps |
| FON2201 | 13.63Mbps | 12.9Mbps |
素の状態 (セキュリティ関係を全部 OFF にした状態) で実測 90Mbps 出るといわれた 4HG と比べて,WAN アクセスする限りそんなに遅くはないのでまあまあ満足.
しっかし,FON の遅さは際立ってるなぁw
WNDR3300 の DD-WRT 化によって,FON2201 は完全に引退.SD カードでもくっつけて Web & メールサーバにでもしようかなぁ? そうしたら今の Linux サーバを引退させられるし.
----
4/5追記:
GW-US300MiniS を入手したので,こんな構成↓で 11n の速度計測してみた.
PC<--11g / 11n / 有線 -->WNDR-3300<--有線-->PC
| 有線 | 11g (54Mbps) | 11n (135Mbps) |
| 91.9Mbps | 9.5Mbps | 22.0Mbps |
無線 LAN の距離は 1m ほど離して.11n がなぜか 135Mbps でしかリンクできなかった.Buffalo だと「倍速リンク」なる項目があるらしいが,DD-WRT だとどの項目に相当するんだ? たぶんチャンネル帯域: 40MHz だと思うんだけど,それ設定しても 300Mbps にならなかった(´・ω・`) まぁ 20MHz に設定したら 65Mbps でリンクしたから,倍速っちゃ倍速なんだけどw
で,実際測った見たら,意外とショボイねー.たとえ 300MHz でリンクできたとしても有線にはかなわねぇなぁ.無線 LAN で DLNA 環境構築しようとか思ってたけど,こりゃ無理かも知れんなぁ orz
2008年12月27日土曜日
stone を DD-WRT で動かす
Linux サーバ (11b 無線 LAN で繋がっているので遅い) で動かしていた ssh サーバ + http プロキシサーバ を DD-WRT にやらせてみる計画発動.
ssh はすでに動いているので,問題は proxy サーバ.すでにコンパイル済みの tiny proxy なるものがあるらしいが,色々と考えて DD-WRT で stone を動かしてみたくなった.
というわけで,クロスコンパイル環境の構築から入る.最初は DD-WRT のクロスコンパイル環境を構築しようと思ったが,情報があまりないので断念.やりたいのは stone のクロスコンパイルだけだから,OpenWRT のクロスコンパイル環境でもいいのでは? ということで,楽なほうの OpenWRT の環境を構築.
http://downloads.openwrt.org/docs/buildroot-documentation.html
http://blog.gcd.org/archives/50849644.html
ここらへんの情報を元に Vine Linux 4.2 でやってみたら,make が古いだの autoconf の build に失敗しただの,わけがわからんので,CentOS の最新版を VMWare 上にインストールしてやっと構築できた.
環境ができたところで stone のコンパイル.stone の Makefile にはすでに fon のコンパイルの設定があるので,それを参考に WNDR3300 用の make ターゲットを追加.
mipsel:
$(MAKE) CC="mipsel-linux-uclibc-gcc" FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL $(FLAGS) -I/home/hoge/openwrt/staging_dir/mipsel/usr/include/" LIBS="-lpthread $(LIBS)" stone
mipsel-linux-uclibc-strip stone
mipsel-pop:
$(MAKE) CC="mipsel-linux-uclibc-gcc" TARGET=mipsel pop_stone
mipsel-ssl:
$(MAKE) CC="mipsel-linux-uclibc-gcc" SSL_LIBS="-lssl -lcrypto -L/home/hoge/openwrt/staging_dir/mipsel/usr/lib" TARGET=mipsel ssl_stone基本的に s/fon/mipsel/g s/mips-/mipsel-/g しただけ.-I とか -L オプションはもっとスマートなやり方があるはずだが,よくわかんないので安易な方法で逃げた (^^; この状態で,
[mirage ~/stone]# set path = ( $path /home/hoge/openwrt/staging_dir/toolchain-mipsel_gcc3.4.6/bin/ )
[mirage ~/stone]# make mipsel
make CC="mipsel-linux-uclibc-gcc" FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL -I/home/hoge/openwrt/staging_dir/mipsel/usr/include/" LIBS="-lpthread " stone
make[1]: Entering directory `/home/hoge/stone'
mipsel-linux-uclibc-gcc -O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL -I/home/hoge/openwrt/staging_dir/mipsel/usr/include/ -o stone stone.c -lpthread
make[1]: Leaving directory `/home/hoge/stone'
mipsel-linux-uclibc-strip stone
[mirage ~/stone]# (文字にすると) あっさりとコンパイル完了.
出来上がったバイナリを /jffs/ にほり込んでやると,WNDR3300 で無事動作したヽ(´ー`)ノ
2008年11月3日月曜日
DD-WRT v24 SP1 インストールと復活劇
最近 YahooBB から eo 光に乗り換えて,La Fonera ( 以下 FON ) では光の帯域を生かせないので,再び部屋間の LAN ケーブルを復活させることにした.11n MIMO がもうちょっと安くなったらまたそのときに無線 LAN 化するかな.
で,FON が遊んでしまったので,壊れてもいいやということで DD-WRT v24 SP1 にアップデートしてみた.やり方はここが詳しい.
で,インストール自体はうまくいった.でいろいろ設定をいじっていると,再起動してもリセットしても FON と通信できない事態に.幸い REDBOOT とはつながるので再インストールしてみたけど,やはりだめ.
ググってみると,こういうときは,nvram 領域 ( DD-WRT の設定がおさめられている? ) を REDBOOT で初期化するおまじない
fis erase -f 0xA83D0000 -l 0x00010000すればいいらしいのだが,これは以前の DD-WRT のバージョンの話で,fis list で見たときの nvram 領域を erase しているのだが,v24 SP1 で fis list してみても
RedBoot> fis list
Name FLASH addr Mem addr Length Entry point
RedBoot 0xA8000000 0xA8000000 0x00030000 0x00000000
linux 0xA8030000 0x80041000 0x00644000 0x80041000
FIS directory 0xA87E0000 0xA87E0000 0x0000F000 0x00000000
RedBoot config 0xA87EF000 0xA87EF000 0x00001000 0x00000000そんな領域はねぇ(゜ーÅ)ほろり
そこで,ダメもとで 0xA8030000~0xA87E0000 を 以下のコマンドで
fis erase -f 0xA8030000 -l 0x007B0000erase してから v24 SP1 をインストールしてみたら,ビンゴ!! 無事 DD-WRT の管理画面に行き着いたよ.
-----
で,このときに問題になっていた,有線 WAN ポートと LAN ポートのネットワーク分離も実装されたみたい.( vlan0/1 が出来ていたので) でももうブロードバンドルータとして使うことはないんだけどね…
-----
ちなみに eo 光は,混んでそうな時間帯でも 35Mbps 出てちょっとらっきぃ.Y!BB の 600Kbps とはえらい違いだw
2008年1月6日日曜日
LA FONERA+ の LAN/WANポートの謎

DD-WRT 化した LA FONERA+ (以下 FON),今使ってるいわゆるブロードバンドルータ (以下 BB ルータ) より高機能なので,今の BB ルータを FON で置き換えてみようといろいろやってみた.
で,FON には LAN/WAN という 2つの有線 LAN ポートがあるので,図a のような接続でやってみた.当然 WAN/LAN ポートはネットワーク的に分離されていて (? ネットワーク用語に詳しくないので適当に書いてます(^^; ),WAN/LAN ポートは NAT で接続するような感じだと思っていたのだが,どうもうまく行かない.
んー,と思っていろいろ調べてみたら,なんと WAN ポートからのアクセスで LAN 側 IP アドレスにアクセスできてしまうではないか(汗 これって WAN/LAN ポートはタダの HUB って事? ググってみると,なんかそれを裏付けるようなページもちらほらと.
これが真実だとすると,実際は図b のように,プロバイダからのネットワークに HUB かまして家の全 PC 等をぶら下げてるって事か? これじゃファイアーウォールになってねぇよ┐('~`;)┌
んー,でも FON の正規 FW だと a) のような接続になるはずだし←未確認,単に設定ミスなのかなぁ…
-----
1/12追記:
ここの情報によると,タダの HUB ではなく,VLAN が構成できる HUB(?) らしく,Fon 正規 FW ではその機能を使って WAN/LAN ポートのネットワークを分離していたようだ.でも今のところ DD-WRT にはその機能がない模様.DD-WRT のバージョンアップに期待.
2008年1月5日土曜日
DD-WRT化成功

キャンペーンで送料込み \1,500 で手に入れた La Fonera+ だが,実は問題があってまったく使っていなかった.というのも,PSP で Web ページを見ると,ある程度ページを読み込んだ後タイムアウトしてしまうという現象が起こっていた.これは PSP と La Fonera+ との相性かと思っていたのだが,ノート PC でも同じ現象が起こる事が確認できた.
更に詳しく調べて見ると,どうやら定期的 (2分に1回くらい(--# ) に固まっているようだ.固まっている間は,無線 LAN アクセスのみならず,有線アクセスによる La Fonera+ 設定ページにもアクセスできない.何じゃこりゃ,使い物にならねー┐('~`;)┌
そこでふと思い出したのが,DD-WRT というキーワード.これは La Fonera (+じゃ無いほう) のファームウェアを書き換えて高機能 AP+ルータにしてしまう FW なのだが,La Fonera+ に入れた人いないかなー,と思ってググってみたら,いたよ…
というわけでさくっとインストール.手順は上のページの通りでいけたが,若干 RedBoot 接続時の TeraTerm の設定に気をつけなければならないようだ.ウチの環境では,
Setup→Terminal
New-Line
Receive: CR
Transmit: CR+LF
Local echo にチェック
にしないと,上手くコマンドが受け付けられなかった.
で,入れてみたが… スゲー!!! なんかいろんな機能が追加されまくってるヽ(´ー`)ノ 個人的にほしかった,MAC アドレスによる接続制限とかも付いてるし,当然のごとく,定期的に固まったりしないので,やっとまともに使える AP になったよ.
まぁ,Fon の使い方から大きく逸脱していることには変わりはないが( ̄ー ̄)にやり
2007年12月17日月曜日
LA FONERA+ ゲットヽ(´ー`)ノ

LA FONERA+ 破格で GET!! ヽ(´ー`)ノ 「+」じゃ無いほうの LA FONERA は無料で,「+」は +\500 でくれるキャンペーンがやっていたので,速攻申し込んで GET.ただし,本体は無料だが送料は自己負担で,更に支払いは代引き only なので,\1,000 位はけっきょく払うはめになる微妙な「無料」だが.今回の「+」も \1,500 くらいはかかった.まぁ,アクセスポイントが \1,500 で手に入ったと考えればもうけもんか.
で,LA FONERA とは何ぞやというと,詳しくはここを見れ(ぉ
要するに,FON というプロジェクトの会員になって LA FONERA (無線 LAN アクセスポイント (以下AP)) を設置すれば,他の FON 会員の AP も無料で利用できるというプロジェクトらしいです.
だが断る
AP がほしかっただけだし,AP を公開する気も他会員の AP を利用する気もありませんw
で,早速設置.設置自体は何の問題もなく,PSP でのアクセスも OK.と思ったら,PSP の Web ブラウザでページを読み込めねぇ_| ̄|○ google とかは上手くいくのに,他のページは途中までページのデータが読めるがその後タイムアウトという訳の分からなさ.一応は通信は確立できているので,基本的な設定ミスとは考えにくい…
てか,WiFi機器は PSP しかもってないのに,何で俺こんなの買ったんだろ_| ̄|○










