NAS(QNAP TS-109II)をゴニョゴニョやりながらなんとかOpenVPN使って、3G/WiFi経由でGALAXY S(SC-02B)と通信できたのでメモ。
あたりを参考にした。
いずれも自己責任でお願いします。
特にAndroid側はroot化が必要なので高級文鎮にならないように注意が必要です。
最終的に
と、順にGALAXY S⇔QNAP⇔WindowsPCまで通信できるようになりました。
Optware ipkg は、QNAP TS-109Ⅱ で Subversionを使う で色々やったのでそちらを参考にしてください。
# ipkg install openvpn
# openvpn
で動けばとりあえずOK
# cd /opt/etc/openvpn # mkdir log # cd log # touch openvpn.log # touch status.log # mkdir /opt/etc/openvpn/modules
Install the missing tun.ko moduleから適切なtunモジュールをダウンロードし
/opt/etc/openvpn/modules
に配置
起動時に、
# install tun.ko mkdir /dev/net; mknod /dev/net/tun c 10 200; (sleep 10; insmod /opt/etc/openvpn/modules/tun.ko)& easy.confの内容 # exec openvpn (sleep 10; /opt/sbin/openvpn /opt/etc/openvpn/easy.conf)&
が実行されるように、autorun.shなどに書き加える
easy.confの内容
# OpenVPN server configuration QNAP NAS # basic settings port 1194 proto udp dev tun # # detect mtu if the connection is slow. ; mtu-test # # define mtu, if necessary ; tun-mtu xyz # # define the ip-addresses of the underlying tunnel server 10.8.0.0 255.255.255.0 # # Route push "route 192.168.1.0 255.255.255.0" # <--- LANのIPアドレスを指定 # # certificates & keys dh /opt/etc/openvpn/keys/dh1024.pem ca /opt/etc/openvpn/keys/ca.crt cert /opt/etc/openvpn/keys/server.crt key /opt/etc/openvpn/keys/server.key # # data compression comp-lzo # # allow, that several clients with the same common name log on ; duplicate-cn # # different clients can "see" each other through the tunnel. ; client-to-client # # Keepalive keepalive 15 120 # # verbosity of status messages in the console. Activate for debugging (1-9 possible) ; verb 5 # # Log files status /share/HDA_DATA/system/log/openvpn-status.log log-append /share/HDA_DATA/system/log/openvpn.log # # Run as daemon (activate, after everything is set up properly) ; daemon # # Management Interface. Access with "telnet localhost 7505" management localhost 7505
BusyBox、OpenVPN Installer、OpenVPN Settingsをインストール
あと、ターミナルソフト(ConnectBot/Android Terminal Emulatorなど) or adbでも出来るかも? も必要
OpenVPN関連のインストール先は、
/system/xbin/
ifconfig/route関連のインストール先は、
/system/xbin/bb/
にしました。
su # mount -o remount,rw /dev/block/stl9 /system # mkdir /system/xbin/bb # ln -s /system/xbin/busybox /system/xbin/bb/ifconfig # ln -s /system/xbin/busybox /system/xbin/bb/route
で一旦、GALAXY Sを再起動
/sdcard/openvpn/galaxys/
にGALAXY S用のtunドライバ(tun-I9000-JPK.zip)を配置
※HOWTO tun.ko to run OpenVPN on Froyo xxJPK Galaxy S I9000 - xda-developersからダウンロード
OpenVPN Settingsを起動して、Advancedを開き、
Key-generationの手順で認証キーなどを作る
それぞれ、必要なファイルを指定したパス(/sdcard/openvpn/ca/)にアップ
vpn.confを配置
/sdcard/openvpn/vpn.conf
に配置
vpn.confの内容
# connect to QNAP OpenVPN Server script-security 2 proto udp dev tun tls-client remote vpn.example.net 1194 # <--- enter your dyndns-account here! pull # set mtu, if necessary tun-mtu 1500 # resolv-retry infinite nobind persist-key persist-tun # certificates and keys # Note the double \\ in the path for a windows config ca /sdcard/openvpn/ca/ca.crt cert /sdcard/openvpn/ca/key.crt key /sdcard/openvpn/ca/key.key # comp-lzo #status /sdcard/openvpn/status.log #log-append /sdcard/openvpn/log.log
設定の内容はサーバー側の設定と合わせないとうまく繋がりません。
ログを出力するようにしておくと原因の究明に役立つでしょう。
3Gだと実装で20kbpsも出ませんでしたのでまあやれることは限られていますがVPNで繋がるようになりました。
下記コマンドを 起動時に実行されるようにしておく
echo "1" > /proc/sys/net/ipv4/ip_forward
まず、クライアント側で
C:\> route -p add 10.8.0.0 MASK 255.255.255.0 QNAPのアドレス
としてパケットを送り返すことが出来るようにしておく。
ちなみに、-p を指定しておくとPCを再起動しても設定した内容を覚えておいてくれます。
C:\> route add ほげほげ エラー: ネットワーク データベース ファイル タノE を開けません エラー: ネットワーク データベース ファイル タノE を開けません
見たいに、エラーが出る場合は、自己の責任においてレジストリの
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
を、REG_SZからREG_EXPANG_SZに変えてみてください。
まえ、boost::asioでサンプルがうまく動かなかったのはこれが原因かもと今更気が付いた。
ここで、Windows PC⇔Galaxy S でpingの疎通確認をしておく
※Windows PC側は、pingの応答を返さないようになっていることが良くあるので設定を変更しておくこと
※ICMPの「エコー要求の着信を許可する」をONにしておくこと
問題なければ、ファイヤーウォールでファイル共有がローカルエリア外から接続できるかを確認
Windowsファイヤーウォールの場合
で、接続できると思います。
出来なかったら、Wiresharkで確認するのがイイです。
2011年12月10日 公開
トラックバックはありません。
トラックバックURL:
トラックバックを行うときはトラックバックURLに『犬』を英字小文字で追加してください。たとえばサメならば、"http://~.trackbackshark"とします。
コメントはありません。