NAS QNAP TS-253 ProにSoftetherを入れる手順メモ

考えることはみんな同じなようで、ネットにいろいろ情報が出回っているが、2016-01現在、ネックとなるのはOptware IPKGの入手である。Appセンターからは簡単にインストール出来ないので自力で探してきて手動インストールする必要がある。

gcc, gconv-module, makeが必要 makeはともかくとして、gcc, gconv-moduleはIPKGでないとインストール出来ないのでなんとしても入手する必要あり。Linux素人の自分には各種ソースを入手して自前でgccをビルドしろというのは荷が重すぎる。QNAPのDLURLはNot Foundになっていたので、

http://pool.qnapclub.pl/projects/packages/optware/

からOptware_0.99.163.zipをDLして手動でインストールした後、gcc, gconv-moduleをipkg installでインストールした。



http://www.d-suite.co.uk/?p=179

に従いSoftetherのソースをDLし展開する。展開後DLしたファイルはいらないので消す。

cd /share/CACHEDEV1_DATA/.qpkg/Optware/
wget http://uploader.softether.co.jp/vpn3/v3.04-7985-rtm-2014.06.06/VPN/Japanese/Linux/PacketiX%20VPN%20Server%203.0/32bit%20-%20Intel%20x86/vpnserver-v3.04-7985-rtm-2014.06.06-ja-linux-x86-32bit.tar.gz
tar zxf vpnserver-v3.04-7985-rtm-2014.06.06-ja-linux-x86-32bit.tar.gz
rm -f vpnserver-v3.04-7985-rtm-2014.06.06-ja-linux-x86-32bit.tar.gz

Linux Intel32bitをDLした。自分は製品版3.0のライセンスを持っているので製品版3.0の最新のRTMをDLしている。TS-253Proに載っているCPUが64bitっぽかったので64bit版を最初ダウンロードしたが、ビルドに失敗したので諦めた。(gccが32ビットだから?)

make前に

export GCONV_PATH=/opt/lib/gconv

を実行しておく。実はこれはその後もvpnserverの起動などで使用するので重要 
/root/.profileに追加しておくといいと思う。

softetherのビルド自体は非常に簡単。時間もかからずすぐ終わる。/share/CACHEDEV1_DATA/vpnserverに置いた。
起動自体はvpnserverに移動して

./vpnserver start

を実行するだけ。後はSoftetherサーバー管理ツール(Windows PCにインストールしてそこから設定すると楽)からアクセスして各種設定を行う。ポート443はQNAPのHTTPサーバー?に使われているのでポート992か8888でアクセスする。ローカルブリッジはeth0(LANのIPアドレスを持っている方?)を選択する。QNAPの「セキュリティ」設定で同一LAN内からのみアクセスできるようにする設定にしていると外部からのSoftetherへの接続もブロックされてしまうので注意する(ここがハマった)。

自動起動させるために
http://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup#MTD-based_method
を参考にしてqpkg.confの最後にautorun.shの実行を紛れさせる。モデルによってパス名が異なるらしいが要は.qpkgのあるパスを指定すればよさそう。
autorun.shの内容は

#!/bin/sh
export GCONV_PATH=/opt/lib/gconv
/share/CACHEDEV1_DATA/.qpkg/Optware/vpnserver/vpnserver start &

sleep 10
tapdev=`/bin/ip tuntap | awk -F ":" '{print $1}'`
/sbin/brctl addif br0 $tapdev

これで再起動して何もしなくてもSoftetherに接続できることを確認する。1点気になるのが再起動後「ファイスシステムがCleanでない」という警告が2回立て続けに出たこと。3回目は何も出なかった。ただ、3回目は再起動直前にSoftetherを手動で終了させた(vpnserver stop)ので、それが影響しているかもしれない。不定期で起きる問題らしい。Softetherとは無関係?

とりあえず10時間位使って今のところは問題なし。QNAP自身のIPアドレスpingが飛ばないという問題があるのがわかる。仮想ハブとtapをローカルブリッジとして登録し、さらにbrctlでaddする必要があった。これらは起動スクリプトにも追加してSoftether起動後に別途ブリッジを追加する必要がある。これで自動再起動後もLAN内全てにpingが飛ぶようになった。10日ほど運用して問題ないか確認する。


(1/18追記)
ファイルサーバー+SoftEtherが問題なかったのでVirtualization Station上にVirtualPCから変換したVMWare環境を入れたところ、何故かネットワーク全体の通信が途切れがちになるという現象が起きてしまったのでしかたなくQNAPをリセットした。どうせならということで、Softether(フリー版)4.0に差し替えてみたところ、tapデバイスとのローカルブリッジ作成に失敗してしまう(Softether管理画面で「エラー発生」と出る)。しょうがないので今は使わなくなっているPackexitX4.x(製品版)に差し替えたところ、tapデバイスとのローカルブリッジは作成できたものの、br0は作成されず、LANのIPももらえない。eth0とのローカルブリッジは作成でき、IPもLANのものをもらえるが当然のごとくQNAPへの通信はできないままである。

http://jehupc.exblog.jp/14239413/

の図が非常にわかりやすい。これを見る限り、PacketiX3.xをインストールした時の状態(一番はじめの状態)が正しかったようである。ただ、この場合VMWareの仮想PCとの共存ができるのかは不明(VMWareをQNAP上にインストールした直後、VPN接続が切れ、調べるとbr0とtapのリンクがVMWareのネットワークによって上書きされて消されていた)。

(1/19追記)
2つあるLANポートのうち、1つはケーブルを挿してなかったが、LAN内と同じIPを振り、LANケーブルを繋いでLANに参加させた後、Virtualization Stationで仮想スイッチを定義し、このNICを「仮想スイッチ」専用とする。その上でVMWareのイメージのインポート時にこの仮想スイッチをネットワークインターフェースとして指定するとLAN内と同じIPをDHCPでもらってきた。インターネットにも繋がるし別PCからもpingが飛び、リモートデスクトップでのアクセスもできるようになっている。固定IP割当後も同様にアクセスができたのでこれでしばらく様子を見る。これで後はSoftetherのサーバー機能をQNAP上に移動させられればやりたいことは全て出来たことになるのだが…。その後Packetix3.xをもう一度ビルドしてインストールしてローカルブリッジの登録をしたところ、登録がされたようである。すでにVirtualization Station機能が作成したbr0のIPアドレスが変わっていたので元のLANのアドレスに設定し直す。その後手動でbrctrコマンドでtapデバイスをbr0に追加したところ、Softetherクライアント側でLANのIPアドレスをもらってきて更にQNAPにもpingが飛ぶようになった。せっかくPacketiX4.xのライセンスを持っているので3.xをアンインストールした後もう一度PacketiX4.xをインストールし直し、ローカルブリッジの登録含め各種設定を行った後、brctlでtapをbr0に追加したところ、同じ結果が得られた。一応これで「ファイルサーバー」「自身へのアクセスも含めたSoftetherサーバー」「VM Ware上の仮想Windows環境」をQNAPに移動するという目的が全て達成できたことになる。

(1/20追記)
別に2つのNICを使う必要もなかったようで、eth1のケーブルを抜き、Virtualization Stationの仮想スイッチのリンク先のNICをeth0に変えても問題なかった。


(2019-01-21追記)
家が停電になったのでQNAPもリセットされ、復旧後再起動したのだが、DHCPでIPがもらえないという自体が発生した。どうも上のautorun.shが期待した動作をしなかったのだが、手動でbrの登録を行ったところ復旧した。下記の状態が動作したときのブリッジの状態である。

# /sbin/brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.00089bxxxxxx       no              eth0 
                                                        tap_vpn
                                                        vnet0