Ubuntu14.04にVPNサーバを構築してMacから繋げる


Ubuntu 14.04上にVPNサーバを構築して、クライアント(Mac)から接続するまでの手順。ほとんど先人の手順通りにやっただけだが、備忘録のために書き留めておく。

環境

  • Ubuntu 14.04-Server
  • OpenVPN
  • Mac OS X 10.11 El Capitan

サーバ:OpenVPNのインストール

必要パッケージをaptでどかっとインストールする。

📄vars
$ sudo apt-get install openvpn libssl-dev openssl easy-rsa

サーバ:証明書と鍵作成

続いて証明書を作成するため、証明書用ディレクトリを作成する。

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

以下の作業はrootになって実施する。

$ cd /etc/openvpn/easy-rsa/

$ vi varsにてvarsファイルの以下の箇所を編集する。なんちゃって証明書なので、適当でも構わない。

...
export KEY_COUNTRY="ここに国名を入力"
export KEY_PROVINCE="ここに県名を入力"
export KEY_CITY="ここに都市名を入力"
export KEY_ORG="ここに組織名を入力"
export KEY_EMAIL="ここにメールアドレスを入力"
export KEY_OU="ここに組織単位?を入力"
...

編集が終わったvarsをネタにサーバ鍵を作成する。(最後のserverという引数がサーバ鍵名になるが、serverで特に問題ない)

📄server.conf
$ source vars && ./clean-all && ./build-dh && ./pkitool --initca && ./pkitool --server server

keysディレクトリ内に色々ファイルが出来上がってるはずなので、ここでOpenVPN鍵を作成する。

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

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

$ cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/

サーバ:OpenVPNサーバ設定

server.confファイルを作成する。サンプルファイルがあるのでこいつをコピーする。

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

vi server.confで設定ファイルを編集していく。

まずは以下の記述をファイル末尾に追加する。

mode server
tls-server

生成したpemファイル名にあわせて変更する。

📄server.conf
;dh dh1024.pem
dh dh2048.pem

routeの設定。元々コメントしてあった1行目をイキにした。

📄server.conf
push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

デフォルトゲートウェイの設定。コメントをはずす。

📄server.conf
push "redirect-gateway def1 bypass-dhcp"

DNSの設定。cat /ect/resolv.confでDNSサーバを調べて、以下のように編集する。

📄server.conf
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
push "dhcp-option DNS xxx.xxx.xxx.xxx"
push "dhcp-option DNS yyy.yyy.yyy.yyy"

クライアント間の通信を有効にするため、コメントをはずす。

📄server.conf
client-to-client

TLSを有効にするため、コメントをはずす。

📄server.conf
tls-auth ta.key 0

暗号方式の設定。今回はAES-256-CBCを使用するので、以下のように記述する。

📄server.conf
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
cipher AES-256-CBC

OpenVPNの実行権限を変えるため、コメントをはずす。

📄server.conf
user nobody
group nogroup

編集が終わったら、忘れずにopenvpnを再起動しておく。

📄/etc/ufw/sysctrl.conf
$ sudo service openvpn restart

サーバ:ファイアーウォール(ufw)の設定

ufwを使ってファイアーウォールを設定する。まずはopenvpnを許可する。

$ sudo ufw allow openvpn

IPフォワーディングを許可する必要があるので、/etc/ufw/sysctrl.confの以下の部分のコメントをはずす。

net/ipv4/ip_forward=1

続いて、/etc/ufw/before.rulesを編集していく。

最初に先頭当たりに次の記述を追記する。

📄/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

~~~~~~~~~~ ここから ~~~~~~~~~~
# 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
~~~~~~~~~~ ここまで ~~~~~~~~~~

# Don't delete these required lines, otherwise there will be errors
*filter
...

さらに以下の箇所にフォワーディングの許可を追加する。

📄/etc/ufw/before.rules
...
# quickly process packets for which we already have a connection
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

~~~~~~~~~~ ここから ~~~~~~~~~~
-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
~~~~~~~~~~ ここまで ~~~~~~~~~~

# drop INVALID packets (logs these in loglevel medium and higher)
...

編集が終わったら、ufwをリロードしておく。

📄任意の名前.ovpn
$ sudo ufw reload

これにてサーバ側の設定は完了!

サーバ:クライアント鍵の生成

VPNサーバの設定は完了したが、クライアント毎に鍵を作ってあげる必要がある。rootになって

$ cd /etc/openvpn/easy-rsa/
$ ./build-key [クライアント鍵の名前]

Enter連打でkeys内に鍵が出来上がっているはず。

クライアント(Mac):Tunnelblickの設定

VPNソフトのTunnelblickをインストールしておく。

インストールしたら、サーバ側で生成した鍵たちをscpか何かで持ってくる。必要なファイルは次の通り。

クライアント鍵の名前.crt
クライアント鍵の名前.key
ca.crt
ta.key

これらのファイルを同一フォルダに入れて、その中に任意の名前.ovpnというファイルを作成する。中身は以下のようにする。VPNサーバのアドレスや鍵の名前は適宜修正して。

client
tls-auth ta.key 1
dev tun
proto udp
remote VPNサーバのアドレス 1194
ca ca.crt
cert クライアント鍵の名前.crt
key クライアント鍵の名前.key
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3

cipher AES-256-CBC

出来上がったovpnファイルをダブルクリックでTunnelblickが起動する。上手くVPNに接続できたら成功!

参考にしたサイト

関連する記事


「Ubuntu14.04にVPNサーバを構築してMacから繋げる」への1件のフィードバック

コメントする

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください