GitHubにOpenWrt用のSoftetherバッケージがありますので、やり方が分かってしまえば難しくはありません。実際の手順を記述したサイトも沢山見つかります。それでも最初は色々と分からないこともあり時間がかかります。何かの参考のために現時点での有効な手順を記述しておきます。
参考webサイト:
Techie blog – Setting up Softether VPN on OpenWRT : 使われているSDKが古いことを除けば完璧な手順書です。
OpenWrt build system – Installation : OpenWrtの公式ガイド、ここの手順に従って最新のSDKを導入しました。
el1n/OpenWRT-package-softether : GitHubのOpenWrt Softetherパッケージです。
最初、Techi blog – Setting ip Software VPN on OpenWRTの手順に忠実に従ってSoftetherのコンパイルまで完了しましたが、残念ながらこのページで使用しているSDKバージョン”barrier_breaker”には小米ルーターで使用するtargetが入っていませんでした。同じmipsのCPUは含まれているので実際のバイナリーは使用できるかも知れませんが作成したパッケージの導入が出来ませんでした。ここは最新のSDKを使うべきでしょう。またGitHubのOpenWRT-softetherのページやその他の手順書にはsvnでSDKを構築するようになっていますが、現在OpenWrtのサイトのsvnサービスは停止しています。公式手順にあるようにgitコマンドを使用します。
[ SDKの導入 ]
テストではubuntuも使用していましたが、以下の手順はParallels下のCnetOS 7を使用しています。公式ガイドOpenWrt build systemに書かれていることをそのまま実行するだけです。一応、投入したコマンドを書いておきます。
$ sudo yum update
$ sudo yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt ncurses-libs sed sdcc intltool sharutils bison wget git-core openssl-devel xz
$ git clone https://github.com/openwrt/openwrt.git
$ cd openwrt
これで最新のstbaleバージョン(わたしの場合は’多分’Chaos Calmer 15.05.1)が導入されました。
[ softetherパッケージの作成 ]
PC上でクロスコンパイルを行いルーター上で動かすためのパッケージを作成します。そのための仕組みは全てSDKに含まれていますし、softetherのコードを完璧にSDKに一体化するための手順が出来上がっていますので、これも手順通りにコマンドを打ち込むだけで大丈夫です。
$ sudo yum install readline-devel
手順書には出てきませんがsoftetherのビルド中にreadlineが無くてエラーしましたので、予め入れておくと良いです。
$ echo "src-git softethervpn https://github.com/el1n/OpenWRT-package-softether.git" >> feeds.conf.default
$ ./scripts/feeds update
$ ./scripts/feeds install softethervpn
以上で準備完了。構成に入ります。
$ make defconfig
$ make menuconfig
まずはTarget Systemを選択しなければなりません。これがなかなか難しいのですが、小米ルーター青春版での答えを書いておきます。
Target Systemで”Ralink RT288x/RT3xxx”を選択、Subtargetで”MT7628 based boards”を選択します。上のキャプチャのようになります。
次にNetwork/VPN/softethervpnを選択すれば構成は完了です。
$ make prepare V=s
ネットワーク環境など不安があるので詳しい経過メッセージを表示するためにV=sを指定しました。このステップは私の環境で2時間弱の時間を要しました。
$ make package/softethervpn/compile V=s
これでパッケージの作成が完了です。わたしの場合”./bin/ramips/packages/softethervpn/softethervpn_4.19-9605_ramips.ipk”が出来上がったパッケージです。これをscp等でルーターの/tmp/にコピーします。
$ scp ./bin/ramips/packages/softethervpn/softethervpn_4.19-9605_ramips.ipk root@192.168.1.1:/tmp/
[ ルーターでの導入作業 ]
ルーターにrootログインします。
# opkg update
# opkg install zlib libpthread librt libreadline libncurses libiconv-full kmod-tun libopenssl
# opkg install /tmp/softethervpn_4.19-9605_ramips.ipk
これでvpnserver, vpnbridge, vpnclientが走り出しました。わたしはvpnbridgeだけを使用するのでLuCIのSystem/Startupからvpnserverとvpnclientを停止し、また自動起動をDisableにしました。
面白いのはバイナリーは一つだけでvpncmdまで共用されています。どうやって実現しているのか時間があれば調べてみたいです。また通常ですと日々沢山のログを吐き出すので容量の小さなサーバーではログ管理をどうしようかと思っていましたが、まったくログを吐かないようになっていました。
[ softetherの設定 ]
細かいことは書きませんが、とりあえずsoftetherの設定にて仮想ハブをすでに存在するブリッジbr-lanに接続し、LuCIからルーターのLANに設定されているIP Addressを調整することによりパケットが流れるようになりました。
3 comments untill now