OpenVPNのインストール

aptからOpenVPN関連パッケージのインストール

sudo apt-get install openvpn libssl-dev openssl easy-rsa

証明書の作成

証明書作成用のディレクトリを作成

sudo make-cadir /etc/openvpn/easy-rsa

作成したディレクトリはrootが所有者なのでsuしておく

sudo su -

以下作業はrootで行う。 作成したディレクトリに移動

cd /etc/openvpn/easy-rsa/

CAファイル生成の設定を変更する

vi vars

ファイルの下の方にある該当箇所を修正

export KEY_COUNTRY="JP"	# 国
export KEY_PROVINCE="Kanagawa"	# 県
export KEY_CITY="Yokohama"	# 市
export KEY_ORG="hogehoge"	# 組織
export KEY_EMAIL="mail@hogehoge.com"	# メールアドレス
export KEY_OU="HOGE"	# 組織単位

鍵を作成する

source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server

cd keys/
openvpn --genkey --secret ta.key

作成した鍵をOpenVPNのディレクトリにコピーする

cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/

server.confの編集

サンプルファイルが用意されているのでコピー・展開する

cd
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
gzip -d server.conf.gz
sudo cp server.conf /etc/openvpn/

このセクションのこれから下はserver.confに対する変更になります。

以下の行を設定ファイルに追加する

mode server
tls-server

上記の方法で鍵を作成するとdh1024.pemではなく、dh2048.pemが作成されているので設定ファイル内のファイル名を変更

;dh dh1024.pem
dh dh2048.pem

自分のネットワーク環境に合わせて、OpenVPNクライアントに伝える情報を編集&行の有効化

push "route 192.168.xxx.0 255.255.255.0"

クライアントのデフォルトゲートウェイをVPNサーバにするために次の行を有効化

push "redirect-gateway def1 bypass-dhcp"

DHCP周りも自分の環境に合わせて設定する

;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

push "dhcp-option DNS 192.168.xxx.yyy"
push "dhcp-option DOMAIN chibatching.com"

クライアント間の通信を有効にする

client-to-client

TLS暗号化を有効にする

tls-auth ta.key 0

暗号化の設定(クライアントとサーバで方式を合わせる)

cipher AES-128-CBC

セキュリティが向上するらしいので、OpenVPNの実行権限を下げる

user nobody
group nogroup

OpenVPNの起動確認

server.confの編集が終わったらOpenVPNの再起動

sudo service openvpn restart

 * Stopping virtual private network daemon(s)...     *   No VPN is running.
 * Starting virtual private network daemon(s)...     *   Autostarting VPN 'server'

Ufwでファイアウォールの設定

OpenVPNに通信を許可する

sudo ufw allow openvpn

/etc/ufw/sysctrl.confの以下の行を有効化

net/ipv4/ip_forward=1

こちらの記事を参考に/etc/ufw/before.rulesを編集する
OpenVPN with UFW | Nattee Niparnan

似たような記載のあるあたりに下記を追加

-A ufw-before-input -i tun+ -j ACCEPT
-A ufw-before-output -i tun+ -j ACCEPT
-A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT

ファイルの最初の方に下記を追加

# rules for NAT Table of iptables
# required line for ufw
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic from OpenVPN through eth0.
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# tell ufw to process the lines
COMMIT

まとめ

これで、OpenVPNクライアントからアクセスするための環境が整いました。 ここでは触れていませんが、当然ルータの設定も必要になってくるので、アクセスできない場合はそちらも確認してみてください。

クライアント側の設定や、クライアント用の証明書・鍵の生成についてはまた次の機会に…