====== OpenVPN サーバをインストールする (TUN) ======
OpenVPN サーバをインストールし、外出先からでもルータ以下のネットワークに暗号化回線でアクセスできるようにする。(TUN - レイヤ3ネットワーク)
===== 環境 =====
* OpenWrt: ATTITUDE ADJUSTMENT (12.09, r36088)
===== パッケージをインストール =====
* [[http://wiki.openwrt.org/doc/howto/vpn.server.openvpn.tun|OpenVPN Setup Guide]]
関連パッケージをインストール。
# opkg update
# opkg install openvpn openvpn-easy-rsa
鍵生成に必要な情報の設定を行う。
# vi /etc/easy-rsa/vars
ファイル下方の以下の情報を修正。
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Shinjuku"
export KEY_ORG="My OpenWrt Router"
===== サーバ用の鍵を生成 =====
以前生成した鍵を消去し、鍵生成のための初期化を行う。
以下のコマンドは未確認だが、代替コマンドとして使用可能なはず。
pkitool --initca ## equivalent to the 'build-ca' script\\
pkitool --server my-server ## equivalent to the 'build-key-server' script\\
pkitool my-client ## equivalent to the 'build-key' script\\
build-dh ## this script will 'take a long time'
# clean-all
# build-ca
# build-dh
サーバの鍵を生成する。
# build-key-server server
クライアント用の鍵を生成する。
# build-key Alice
# build-key Bob
# build-key Charlie
PKCS12 形式の鍵を生成する場合は以下のコマンド。
# build-key-pkcs12 Alice
# build-key-pkcs12 Bob
# build-key-pkcs12 Charlie
生成した鍵を、 OpenVPN の設定ファイルディレクトリにコピー。
# cd /etc/easy-rsa/keys
# cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn/
===== ネットワークインタフェースを作成 =====
ネットワークの設定ファイルを編集する。
# vi /etc/config/network
以下の設定を追加する。
config interface 'vpn0'
option ifname 'tun0'
option proto 'none'
設定ファイルをリロードする。
# /etc/init.d/network reload
以下の警告が出るが、まだ tun0 を作成していないので、今は気にしない。
command failed: No such device (-19)
===== ファイアウォールを設定 =====
ファイアウォールの設定を変更し、外出先からのアクセスを受け付けるようにする。
# vi /etc/config/firewall
以下の設定をファイルの末尾に追記。
VPNの接続開始を許可する。
config rule
option name Allow-OpenVPN-Inbound
option target ACCEPT
option src *
option proto udp
option dest_port 1194
VPNで接続してきたクライアントの通信を許可する。
config zone
option name vpn
option input ACCEPT
option forward ACCEPT
option output ACCEPT
option network vpn0
option masq 1
ファイアウォールを再起動し、設定を有効にする。
# /etc/init.d/firewall restart
===== OpenVPN のサーバ設定 =====
# vi /etc/config/openvpn
以下の設定を記述する。
/etc/config/openvpn に元から記述されている内容はすべて消して新しく作り直す。
option enabled 0 が設定されていても、設定が読み込まれているらしく、新しく作り直さないと後々エラーが発生する。
config openvpn vpn-tun
option enable 1
option dev tun
option port 1194
option proto udp
option verb 3
option ca '/etc/openvpn/ca.crt'
option cert '/etc/openvpn/server.crt'
option key '/etc/openvpn/server.key'
option dh '/etc/openvpn/dh1024.pem'
option server '192.168.222.0 255.255.255.0'
option keepalive '10 120'
option comp_lzo adaptive
option log '/tmp/openvpn.log'
list push 'comp_lzo adaptive'
list push 'route 192.168.1.0 255.255.255.0'
* server '192.168.222.0 255.255.255.0'
* 192.168.222.1 がVPNアダプタのアドレスになる。サブネットマスクは 255.255.255.0
* route 192.168.1.0 255.255.255.0
* クライアントからサーバ側のネットワークにアクセスできるようにする
サーバを開始し、ブート時に自動起動するように設定。
# /etc/init.d/openvpn start
# /etc/init.d/openvpn enable
===== クライアントの設定 =====
クライアントの設定ファイルは以下になる。
クライアントソフトには [[https://code.google.com/p/tunnelblick/|TunnelBlick]] を使用した。
設定ファイルの openwrt.ovpn は以下の内容で作成。
remote 1194 # OpenVPN サーバのホスト名か IP アドレスを記述
dev tun
proto udp
# redirect-gateway def1 # すべてVPN経由でアクセスする場合はコメントをはずす
resolv-retry infinite
persist-key
persist-tun
ca ca.crt
cert kyxw22.crt
key kyxw22.key
dh dh1024.pem
#pkcs12 Jimmy.p12 # PKCS #12 形式の鍵を使う場合は、上記4行をコメントアウトし、この行を用いる
verb 3