ラベル OpenWRT・DD-WRT の投稿を表示しています。 すべての投稿を表示
ラベル OpenWRT・DD-WRT の投稿を表示しています。 すべての投稿を表示

2023年7月30日日曜日

OpenWrt 22.03.5 OpenVPN の tun を NAT で接続する

ELECOM WRC-1167GST2 に OpenVPN を入れて,Andoid で外出先から自宅 LAN に接続しできるようにしてみた.
OpenWRT への OpenVPN のインストール・設定自体はここを参考に割と簡単にできるのだが,ここの説明にもある通り,Android がクライアントの場合,ブリッジモード (TAP) が使えず,トンネルモード (TUN) しか使えない.つまりそのままでは,自宅 LAN 配下の機器と通信できない.
で昔 PPTP サーバ立ち上げたときのように iptables の設定で NAT 設定すりゃいいや,と思ったら,OpenWrt 22.03.5 では FireWall の設定が iptables から nftables に変わったみたいで,そのせいでマニュアルでルールを追加する手段がなさげ?
なので,GUI で設定する方法を探してみた.

# 以下,tun0 は人によって違うので適当に読み替えて

(1) OpenVPN 設定時に tun0 を追加するときに,Firewall Setting で tun0 の zone を lan に設定する.

(2) Firewall - NAT Rules で Add して,General Setting の
- Name: てきとう
- Soure address: tun0 のサブネット
- Action: MASQUERADE

Advanced Settings の
- Outbound device: br-lan

で,無事 Android から LAN 配下の資源にアクセスできた.

ちなみに,OpenVPN クライアントとして OpenVPN for Android を使用する場合,DNS の設定を,自宅 LAN の DNS で override すると,自宅 LAN のマシン名とかで名前引きできるので便利.

2023年7月28日金曜日

4台目 OpenWRT

自分,ルータは OpenWRT 化必須で対応ルータは限られているんだけど,ELECOM WRC-1167GST2 がセール \2,838 と安くなってて,念のため OpenWRT サポートリスト確認したら対応してたので,衝動買いしたw
今のは 11年前に買った WZR-HP-AG300H で WiFi も 11n/a と古いので,そろそろアップグレードしたいと思ってたところなのでちょうどよかった.
と思ったら USB ポートないじゃん(;´д⊂)ちょっと早まったかも.

まぁ後悔しても仕方ないので,旧ルータの設定を新ルータに移して乗り換え,と思ったら,WZR-HP-AG300H 用にコンパイルした stone が WRC-1167GST2 で動かなかった.
仕方がないので OpenWRT の mipsel 環境を構築しようと過去の blog 見たら,肝心なところがリンク切れてて意味ねぇ.自分の blog のゴミっぷりを改めて反省した.

なので改めて手順を記載しておく.(基本的な手順はこれ,以下 Fedora での手順)

(1) 環境ビルドに必要なパッケージをインストールする.コマンドラインも載ってるので,コピペするだけ.
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

(2) OpenWRT のソースを取得
git clone https://git.openwrt.org/openwrt/openwrt.git

(3) make menuconfig を実行して,ターゲットデバイスを設定する.
Target System --> MediaTek Ralink MIPS
Subtarget --> MT7621 based boards
Target Profile --> ELECOM WRC-1167GST2

(4) make したら,WRC-1167GST2 用のコンパイル環境が生成される.

で,問題なく stone コンパイルできて WRC-1167GST2 で動いたヽ(´ー`)ノ

で,ルータ変えた感想としては,
・ハード的には 11ac が使えるようになったが USB ストレージが使えなくなった.それ以外の差は無いと言って良い
・自分,使うのは基本有線で,WiFi で帯域が足りないシーンは無い
ので,正直変えなくても良かった気がする.

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 ~]#
行頭が * の行が手入力した行.暗号化は stone がやってくれるので telnet で素のテキストでやり取りできるし,EHLO コマンドを投げたあと裏では SMTP AUTH 認証が走っているので,MAIL コマンドが受け付けられているのがわかる.

これで RD-S1004 が延命できたヽ(´ー`)ノ

2020年12月26日土曜日

OpenWRT で stone-ssl を動かす (2020年版)

Buffalo WZR-HP-AG300H で DD-WRT を動かしていたけど,DD-WRT はもう長らく開発が止まってるので,OpenWRT の最新版を入れた.
で 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

●以下の手順通りに OpenWRT ビルド環境を構築
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() が無いと怒られる.

●AG300H 用の make エントリ作成
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 あたりをコピーして修正するのが楽.

というわけで,AG300H に持っていって動いたヽ(´ー`)ノ
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 につぶやかせてみる

DD-WRT は素の Linux に近いとはいえ,/var/log 系があまり充実していない.また出先から DD-WRT の状態を知ろうにも,Android で PPTP セッション張ってブラウザ立ち上げて…,とか面倒なので,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 を作る

訳あってゲスト用 WiFi アクセスポイント (WAN とは繋がるが LAN の他機器とは繋がらない AP) を作ることにした.といっても物理的な WiFi ルータを増設するわけではなく,DD-WRT なら仮想 WiFi I/F を作れるので,設定だけで下のようなネットワークを構成できる.
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

そろそろ Gb Ether のルータがほしいなと思って物色してたら,Buffalo WZR-HP-AG300H が安くなってたので ¥6,600 で Get.
こいつのいい所は,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-US300MiniS11n/g44.4Mbits/sec
WNDR330011n/g20.6Mbits/sec
WNDR330011a24.9Mbits/sec
WNDR330011n/a26.4Mbits/sec
んーGbEther と言えど,実効速度はこんなもんか? Jumbo Frame の威力はすごいけど.
あと気になったのが無線 LAN の遅さで,WZR-HP-AG300H とは 2m ほどしか離れておらず,どれもフルスピートでリンクできていたにも関わらず,かなり遅め (;´д⊂)計測結果から見て,WNDR3300 が足を引っ張っている可能性が高いが.

(2) WAN速度
PC --- (有線) --- (ルータ) --- 外部速度計測サイト (Radish)
の接続で,速度計測サイトで計測.
通信機器通信速度
WNDR330042Mbits/sec
WZR-HP-AG300H78Mbits/sec
WAN との通信はかなり速くなった.これだけでも買い換えた価値あり.実際のファイル転送でもこれくらいの差は出ている感じ.

2010年7月15日木曜日

La Fonera+ 復活

無線 LAN AP が欲しくて Get した La Fonera+,速攻で DD-WRT を入れて遊んでいたため,Fon の権限が Alien になったまま (汗.WNDR-3300 に DD-WRT を入れて以来,Fonera+ は完全に遊んでしまっている.
で,Desire も入手したことだし,外で Fon AP にめぐり合うこともあるかもしれないということで,Fonera+ のファームウェアを Fon 公式のに戻して,Linus 権限を取り戻すことにした.

で,ここを見ながら Fon の FW を戻したのだが,なんか中途半端にうごかねぇ… でふと気づいたのだが,コレって FON2100 (Fonera無印) の FW じゃね? なまじ動くもんだから,無駄な時間を食っちまった.
で,Fonera+ (FON2201) のリカバリ方法を捜し求めてたどり着いたのがここ

無事標準 FW に戻せた.これで大阪あたりなら FON スポット見つけて無線 LAN 接続できるかもしれない.

2010年6月17日木曜日

Desire で VPN + リモートデスクトップ

長年の夢であった,「携帯端末でリモートデスクトップ」を Desire を使ってやってみる.これができたら,出先から家の PC を自在に操れることになる.
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対PCPC対WAN
Buffalo BBR-4HG53.4Mbps45Mbps
Netgear WNDR330040.9Mbps40.0Mbps
FON220113.63Mbps12.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.9Mbps9.5Mbps22.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 0x007B0000

erase してから 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 しかもってないのに,何で俺こんなの買ったんだろ_| ̄|○