CentOS7にOpenVPNインストール
参考にしたページ(というより、この3ページを見て作業した方がわかりやすいと思う)。
- http://qiita.com/IK12_info/items/bcf695460363bae87eb9
- http://centossrv.com/openvpn.shtml
- http://yamatamemo.blogspot.jp/2014/01/easy-rsa-3.html
CentOS7にOpenVPNをインストールしたので備忘録として記録。rpmbuildなんかしなくてもrpmパッケージが公式で配布されているのだけれども、せっかくなので手元でrpmを生成してインストールする。
途中でrpmbuildを使うのでrpmdevtoolsとyum-utilsと念のためgcc(デフォルトでは入っていないことがある)をインストールして、rpmdev-setuptreeコマンドを実行する。これでrpmbuildが使用可能。
# yum install rpmdevtools yum-utils gcc-c++ # rpmdev-setuptree
次はOpenVPNをインストール
# yum -y install openssl-devel lzo-devel pam-devel # wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.5.tar.gz # rpmbuild -tb --clean openvpn-2.3.5.tar.gz # yum -y localinstall ~/rpmbuild/RPMS/x86_64/openvpn-2.3.5-1.x86_64.rpm # rm -f ~/rpmbuild/RPMS/x86_64/openvpn-* # rm -f openvpn-2.3.5.tar.gz
次はeasyrsa3をダウンロードして認証局を構築する。まずはダウンロードして/etc/openvpn
へコピー。
# wget https://github.com/OpenVPN/easy-rsa/archive/master.zip # unzip master.zip # cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/ # rm -rf easy-rsa-master/ # rm -f master.zip
init-pkiで認証局を初期化した後、build-caで認証局を作成する(途中でPEMパスフレーズを聞かれるので、何でも良いから4文字以上入力する)。その後、build-server-fullで秘密鍵の作成・署名を行う。パスワードは要らないのでnopassオプションを指定する。さらにgen-dhでDHパラメータを生成する。
# cd /etc/openvpn/easyrsa3/ # ./easyrsa init-pki # ./easyrsa build-ca # ./easyrsa build-server-full server nopass # ./easyrsa gen-dh
証明書廃止リストがあった方が便利なので、いったんクライアントを作成してすぐに廃止し、証明書廃止リストを作成する。
# ./easyrsa build-client-full dummy nopass # ./easyrsa revoke dummy # ./easyrsa gen-crl
作成した諸々のファイルをコピーする。認証局の証明書はpki/ca.crt
にあり、pki/private
に秘密鍵、pki/issued
に証明書があるのでコピー。ちなみに、.crtは証明書、.keyは秘密鍵ファイル。
# cp ./pki/ca.crt /etc/openvpn/ # cp ./pki/issued/server.crt /etc/openvpn/ # cp ./pki/private/server.key /etc/openvpn/ # cp ./pki/dh.pem /etc/openvpn/ # cp ./pki/crl.pem /etc/openvpn/ # chmod o+r /etc/openvpn/crl.pem
OpenVPNを設定する。
# openvpn --genkey --secret /etc/openvpn/ta.key # cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/ # vi /etc/openvpn/server.conf
OpenVPN設定ファイルが開くので設定を一部変更。この辺を書き換える。crl-verify crl.pem
は追記する。
dh dh.pem tls-auth ta.key 0 # This file is secret user nobody group nobody log-append /var/log/openvpn.log crl-verify crl.pem
OpenVPNログローテーション設定
# vi /etc/logrotate.d/openvpn /var/log/openvpn.log { missingok notifempty sharedscripts postrotate systemctl restart openvpn 2>&1 > /dev/null || true endscript }
手元の環境ではfirewalldではなく、(あまりよくないけど)iptablesを使っているのでiptables設定。
# vi /etc/sysconfig/iptables # VPNサーバーからの送信を許可 iptables -I OUTPUT -o tun+ -j ACCEPT iptables -I FORWARD -o tun+ -j ACCEPT iptables -I INPUT -i tun+ -j ACCEPT
# vi /etc/rc.d/init.d/openvpn echo 1 > /proc/sys/net/ipv4/ip_forward
OpenVPN起動
# systemctl start openvpn.service # systemctl enable openvpn.service