OpenWrtで OpenVPN(2) サーバ設定


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

OpenWrt/OpenVPNで拠点間接続 (2)サーバ設定


ネットワークAに設置するサーバのインストール、設定を行います。

主な流れ

以下の順で説明します。
 
OpenWrtをインストールしたルータを用意する (当ウィキの他頁を参考に、OpenWrtをセットアップしてください)
 ↓
OpenVPN関連のパッケージをインストール
 ↓
CA証明書などを作成する
 ↓
ネットワークの設定を行う
 ↓
OpenVPNの設定を行う
 ↓
OpenVPNを起動する


1.OpenVPN関連のパッケージをインストール

この章では、以下のパッケージをインストールします
OpenVPN本体
 openvpn-openssl
認証局作成ツール
 openvpn-easy-rsa

パッケージのインストール
システム→ソフトウェア
と選択し、 リストの更新 ボタンを押下します。
しばらくするとパッケージリストが更新されます。
(ログがずらずら~っと画面に表示されるので、すぐに分かります)

リストが更新されたら ステータス欄インストール可能なパッケージ タブを開きます。
フィルタ欄に openvpn と入力して検索します。
検索結果から
openvpn-easy-rsa
openvpn-openssl
をインストールします。

2.CA証明書などを作成する(認証局の構築)

以下は、すべてOpenWrtルータにSSHでログインして作業を行います。

/etc/easy-rsa/vars を、以下の要領で編集します。
export EASY_RSA="/etc/easy-rsa"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`/usr/sbin/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="JP"                        ←認証局が設置される「国」を指定
export KEY_PROVINCE="kinki"                    ←同「州」を指定
export KEY_CITY="Osaka"                        ←同「都市」を指定
export KEY_ORG="Private Router"                ←同「組織」を指定
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"

今回デフォルトから変更したのは、コメントを右側に記入した行のみです。
あとは、必要に応じて変更してください。

設定が完了したら、以下のコマンドでCA証明書/DHパラメータを作成します。
# clean-all
# build-ca
→表示される問いには全てデフォルト値を回答する
# build-dh
→相当な時間が掛かります(WZR-HPAG300Hで2~3時間程度)

引き続き、以下のコマンドでサーバ鍵を生成します。
#build-key-server server
 ~質問内容省略~
 A challenge password []:    ←サーバ鍵に設定するパスワードを指定
 Sign the certificate? [y/n]: ←「y」を回答
 1 out of 1 certificate requests certified, commit? [y/n] ←「y」を回答

これで、&bold(){server.key}、&bold(){server.crt}というファイル名でサーバ鍵が生成されます。
※ファイルは&bold(){/etc/easy-rsa/keys}に作成されます

続いて、以下のコマンドでクライアント鍵を生成します。
# build-key my-router
  ※パラメータはすべてサーバ鍵と同一

これで、&bold(){my-router.key}、&bold(){my-router.crt}というファイル名でサーバ鍵が生成されます。
※ファイルは&bold(){/etc/easy-rsa/keys}に作成されます

作成したサーバ鍵/CA証明書を、所定のディレクトリにコピーします。
# cd /etc/easy-rsa/keys
# cp -p ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn/

また、/etc/easy-rsa/keys/に作成された my-router.keymy-router.crt はクライアント側の設定に必要となりますので、ftpなどでPCなどにコピーしておいてください。

3.ネットワークの設定を行う

ファイアウォールの設定を変更し、クライアント(ネットワークBのルータ)からのアクセスを許可します。
/etc/config/firewall の末尾に、以下の設定を追記します。
 #OpenVPN connection setting
 config rule
        option name      openvpn-udp
        option src       wan
        option target    ACCEPT
        option proto     udp
        option dest_port 1194
        option family    ipv4

DHCPサーバでのIPアドレス配布範囲を制限します。
/etc/config/dhcpを、以下の要領で編集します。
 config dhcp 'lan'
         option interface 'lan'
         option start '50'       ←配布開始アドレス
         option limit '50'       ←配布個数
         option leasetime '12h'
         option dhcpv6 'server'
         option ra 'server'

このルータのLAN側IPアドレスは、192.168.1.1/255.255.255.0に設定されています。
この設定で start 50 / limit 50 としていることにより、
 192.168.1.50~192.168.1.100
の範囲でDHCPからIPアドレスの払い出しが行われることになります。

4.OpenVPNの設定を行う

/etc/config/openvpnを以下の要領で編集します。
config openvpn vpntap
       option enabled 1
       option port 1194
       option proto udp
       option dev tap0
       option ca /etc/openvpn/ca.crt
       option cert /etc/openvpn/server.crt
       option key /etc/openvpn/server.key
       option dh /etc/openvpn/dh2048.pem
       option ifconfig_pool_persist /tmp/ipp.txt
       option server_bridge "192.168.1.1 255.255.255.0 192.168.1.150 192.168.1.250"
       option keepalive "10 120"
       option comp_lzo adaptive
       option persist_key 1
       option persist_tun 1
       option status /tmp/openvpn-status.log
       option verb 3
       list push comp_lzo adaptive

server_bridgeの設定内容は以下の通りです。
 第1引数: ネットワークアドレス
 第2引数: サブネットマスク
 第3,4引数: OpenVPNクライアントに払い出すIPアドレスの範囲

この設定例では、クライアントに192.168.1.150~192.168.1.250の範囲でIPアドレスを払い出します。

5.OpenVPNを起動する

以下のコマンドにより、OpenVPNを起動します。
# /etc/init.d/openvpn start
# /etc/init.d/openvpn enable

※OpenWrtのGUI(LuCI)からも起動可能です。



これで、ネットワークA(サーバ側)の設定は完了です。