はじめに
ServersMan@VPS 上に OpenVPN サーバを動かして利用している.
便利だけれども,毎回接続処理が面倒で,Chromecast も利用できない.
外接ルータの配下にOpenVPN兼無線ルータを作ればいいのでは?ということでやってみた.
調べたところ,以下の構成が安くて簡単で面白そうだったので,これで行く.
TP-LINK WR841N + OpenWrt + OpenVPN -> Serverman VPS + OpenVPN の環境に
ipod touch と chromecast をつないで Hulu が視聴できる環境を作る.
TP-LINK WR841N は安くて(£13で購入) OpenWrt が利用できるけれど,Flash が 4MB しかないので,OpenVPN はそのままではインストールできない.
メモリは32MBあり,tmpfs 上に展開することはできるので起動スクリプトで毎回インストールするという方法があったので,それを利用してみる.
参考サイト
http://www.vesiluoma.com/development-projects/how-to-install-openwrt-to-tp-link-wr841nd/
https://blog.zauberstuhl.de/openwrt_tplink_openvpn/
- パス関連が異なる
- liblzo のインストールが必要
- kmod-tun のインストールが必要
- MASQUARADE の設定が必要
TFTP を使ったリカバリー方法
失敗した時はこれで回復できる
Bricked TP-Link WR841N/ND Recovery Unbrick Without A Serial Connection
https://www.youtube.com/watch?v=0k1sxwX5pMk
事前準備
管理画面にログインして Firmware のバージョンを確認する
Support Web から該当の Firmware のイメージをダウンロードする
ファイル転送用に WinSCP をインストール
OpenWrt のサイトからイメージをダウンロード
- OpenWrt のイメージ
openwrt-15.05-ar71xx-generic-tl-wr841n-v9-squashfs-factory.bin
OpenWrt のインストール
- login
- System Tools - Firmware Upgrade
初期設定
- telnet で 192.168.1.1 へ接続
- 'passwd' コマンドでパスワードを設定
- ssh, user -> root, pass -> xxx
設定
Network 関連他
Hostname: OpenWrt
Timezone: UTC
WAN: 192.168.0.254/24
GW 192.168.0.1
DNS: 8.8.8.8,8.8.4.4
LAN: 192.168.1.1/24
WIFI
SSID: OpenWrt
Mode N, Channel Auto, Width 40MHz
Security: WPA2 PSK(CCMP:AES)
DHCP
firewall の設定で forwarding が reject になっているので,accept にする
OpenVPN 関連
# opkg install kmod-tun
# mkdir /etc/openvpn
- インストールスクリプトを winscp でコピー
- openvpn の設定ファイルを /etc/openvpn へコピー
% /etc/init.d/openwrt-openvpn start
% /etc/init.d/openwrt-openvpn enable
# !/bin/sh /etc/rc.common
START=99
. /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/libopenssl/usr/lib:/tmp/lilzo/usr/lib
export PATH=$PATH:/tmp/openvpn/usr/sbin
install() {
local OVPNPATH=/tmp/openvpn
local OSSLPATH=/tmp/libopenssl
local LLZOPATH=/tmp/liblzo
[ ! -d ${OVPNPATH} ] && mkdir ${OVPNPATH}
[ ! -d ${OSSLPATH} ] && mkdir ${OSSLPATH}
[ ! -d ${LLZOPATH} ] && mkdir ${LLZOPATH}
command opkg update || exit 1
# install openvpn
cd ${OVPNPATH}
tar xzf $(opkg download openvpn-openssl |grep Downloaded |cut -d\ -f4 |sed '$s/.$//')
tar xzf data.tar.gz
# delete unnecessary things (save space)
rm -f pkg.tar.gz data.tar.gz control.tar.gz debian-binary getopenvpn.sh
# install libopenssl
cd ${OSSLPATH}
tar xzf $(opkg download libopenssl |grep Downloaded |cut -d\ -f4 |sed '$s/.$//')
tar xzf data.tar.gz
# delete unnecessary things (save space)
rm -f control.tar.gz debian-binary data.tar.gz
# install liblzo
cd ${LLZOPATH}
tar xzf $(opkg download liblzo |grep Downloaded |cut -d\ -f4 |sed '$s/.$//')
tar xzf data.tar.gz
# delete unnecessary things (save space)
rm -f control.tar.gz debian-binary data.tar.gz
}
start () {
# lvl 99 is not enough the script is too
sleep 10 # fast for the install step
install # setup openvpn and libssl
command openvpn --writepid /tmp/openvpn/ovpn.pid --daemon --config /etc/openvpn/client.conf
sleep 30
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE
}
stop() {
PIDOF=$(ps |egrep openvpn |egrep -v grep |awk '{print $1}')
kill ${PIDOF}
}