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に接続できたら成功!
参考にしたサイト
関連する記事
- UbuntuでOpenVPN(MD5対応)
- 【Linux】トラックパッドでジェスチャーを可能にする
- Ubuntu 21.04インストールしてからやること
- Ubuntu 20.04インストールしてからやること
- Ubuntu 22.04インストールしてからやること
test