LoginSignup
25
30

More than 5 years have passed since last update.

ConoHaでOpenVPNサーバーを構築する

Last updated at Posted at 2015-11-16

ConoHa上にOpenVPNサーバーを立てて、プライベートセグメント上のサーバーにアクセスするという構成を、さくっと作ってみます。

VPSを作る

VPSを2台立てます。一つはVPNサーバーとしてグローバル側/プライベート側両方使い、もう一つはプライベートセグメントに配置します。

vpn0.png

VPSを作成してプライベートネットワークに接続する

VPSを2つ作成します。OSはUbuntu14.04を使うとよいでしょう。aptでOpenVPNを簡単にインストールできるからです。そして、オフィシャルのチュートリアルを参考に、VPSをプライベートネットワークに接続します。今回は172.18.0.0/24のプライベートネットワークを作成して使いました。

vpn2.png

OpenVPNサーバを立てる

先に書いときますが長いです。

まずVPNサーバにするVPSにSSHでログインします。

OpenVPNのインストールはapt-getするだけです。easy-rsaは認証局(CA)の作成を簡単にしてくれる便利ツールです。

$ apt-get update && apt-get install openvpn easy-rsa 

CAのディレクトリを作成して、そのディレクトリに移動します。

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

easy-rsaのパラメータファイルを編集します。

vi /etc/openvpn/easy-rsa/vars

↓このあたりの設定を適当に変更すればOKです。

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"

パラメータを環境変数に反映させます。

. /etc/openvpn/easy-rsa/vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

clean-allしろと言われるので、その後build-caでcaを作成します。

./clean-all
./build-ca

PKIの初期化

./pkitool --initca

サーバーの鍵ペアの作成。最後にSign the certificate?と聞かれるのでyを選びます。

./build-key-server conoha

DH共通鍵を作成します。

./build-dh

作成した鍵などを/etc/openvpnにコピーします。

cp keys/*.crt keys/*.key keys/dh2048.pem /etc/openvpn

VPNそのものを暗号化するためのTLS鍵を作成します。このファイルも/etc/openvpnにコピーします。

openvpn --genkey --secret ta.key
cp ta.key /etc/openvpn

最後に接続するクライアント毎の鍵ペアを作成します。clientの部分はクライアントの名前で何でも良いです。これも最後にSign the certificate?と聞かれるのでyを選びます。

./build-key client

ネットワークの設定

IPマスカレードの設定を追加しておきます。これによりVPNクライアントからのパケットがeth1に渡されます。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE

忘れないようにカーネルの設定でIPv4のフォワーディングを有効にしましょう。/etc/sysctl.confの以下の行をコメントアウトして、sysctl -pを実行します。

net.ipv4.ip_forward=1
sysctl -p

server.confの編集

次にサーバー側の設定ファイルを編集します。まずサンプルファイルをコピーしてきて展開します。

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

変更点は以下の通り、意味は頑張って調べよう。

dh dh1024.pem
↓
dh dh2048.pem
server.crt
↓
conoha.crt

server.key
↓
conoha.key
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
↓
push "route 172.18.1.0 255.255.255.0"
;tls-auth ta.key 0 # This file is secret
↓
tls-auth ta.key 0 # This file is secret

OpenVPNサーバの起動

やっと起動です。とりあえず起動するだけなら以下でできます。メッセージも出るので、接続できるまではこの状態でデバッグするのが良さそうです。

openvpn /etc/openvpn/server.conf

serviceコマンドから起動することもできます。運用にはこちらですね。

service openvpn start

クライアントの設定

やっとクライアント側です。長かった・・・('A`)

必要な証明書のコピー

まずVPNサーバーからクライアントに以下のファイルを安全な手段でコピーしてきます。
- /etc/openvpn/ca.crt
- /etc/openvpn/ta.key
- /etc/openvpn/easy-rsa/keys/client.crt
- /etc/openvpn/easy-rsa/keys/client.key

クライアントの設定ファイル

とりあえず以下のファイルをtest.ovpnで保存します。

client
tls-auth ta.key 1
dev tun
proto udp
remote [接続先IPアドレス] [接続先ポート(デフォルトは1194)]
ca ca.crt
cert client.crt
key client.key
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3

以下のコマンドで接続します。「Initialization Sequence Completed」と出れば成功です!

$ sudo openvpn test.vpn
(snip)
Fri Nov 20 13:00:35 2015 Initialization Sequence Completed

疎通確認

OpenVPNは10.8.0.0という仮想ネットワークを作成します。VPNサーバーは10.8.0.1です。このIPアドレスにpingしてみましょう。

$ ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=2.35 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=2.10 ms

VPNに接続すると、ConoHaのローカルネットワークである172.18.1.0/24へのルーティングが自動的に作成されるので、このネットワークにも透過的に接続できます。172.18.1.1がOpenVPNサーバーで、172.18.1.2がプライベートのサーバーです。どちらにもpingが届くことを確認できます。

$ ping 172.18.1.1
PING 172.18.1.1 (172.18.1.1) 56(84) bytes of data.
64 bytes from 172.18.1.1: icmp_seq=1 ttl=64 time=1.94 ms
64 bytes from 172.18.1.1: icmp_seq=2 ttl=64 time=2.14 ms
$ ping 172.18.1.2
PING 172.18.1.2 (172.18.1.2) 56(84) bytes of data.
64 bytes from 172.18.1.2: icmp_seq=1 ttl=63 time=9.31 ms
64 bytes from 172.18.1.2: icmp_seq=2 ttl=63 time=7.83 ms

(参考にしました)
http://qiita.com/mcddx330/items/5814f5c9175fbd517be6

25
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
30