====== 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