サ終したGoogle one VPSサービスの代替としてopenvpnサーバを立ち上げてみた | ミンキームーンネットワーク

サ終したGoogle one VPSサービスの代替としてopenvpnサーバを立ち上げてみた

インターネット

Google oneのVPNサービスが終了してしまったので、公衆Wi-FiへiPhoneで接続する場合にある程度の通信経路の安全性を確保する手段が無くなってしまった・・・

仕方ないので自宅用メールサーバでリソースを余らせていた、さくらインターネットのVPSサーバでopenvpnサーバを立ち上げてみました。色々とググりながらだったので作業時間は3時間ほど。

完全に自分用の備忘録なので検索から訪れた方向けの詳細解説が皆無なのはご容赦。その代わりubuntuでopenvpnサーバを起動してiPhoneで接続するための情報は一通り揃っているはず。必要な情報だけをピックアップして作業する人向けです。

コマンド毎にsudoしろ!はごもっともですが面倒なので全てのコマンドはsudo /bin/bash後のroot権限で実行していますw

openvpnのインストール

apt -y install openvpn
cd /etc/openvpn

Easy RSAのインストール

私は独自ドメイン持ちなのでLet’s Encryptで発行したSSL証明書を持っているけれども、Webサービスと違って不特定多数が接続することは無くVPNサーバとVPNクライアントの間だけで信頼関係が確立できていれば良いのでオレオレ証明書の方が作業の手間が掛かりませんでした。

cd /etc/openvpn
git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3

初期設定値の変更

cp vars.example vars
vi vars

証明書の有効期限を3,650日に延長

set_var EASYRSA_CA_EXPIRE	3650
set_var EASYRSA_CERT_EXPIRE	3650

サーバ証明書のインストール

./easyrsa init-pki
./easyrsa build-ca
cp pki/ca.crt /etc/openvpn

./easyrsa build-server-full server nopass
cp pki/issued/server.crt /etc/openvpn
cp pki/private/server.key /etc/openvpn

./easyrsa gen-dh
cp pki/dh.pem /etc/openvpn

./easyrsa gen-crl
cp pki/crl.pem /etc/openvpn
chmod o+r /etc/openvpn/crl.pem

openvpnサーバの設定

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

exampleのserver.confからの変更点

# crlで証明書のrevokeを確認する。所詮オレオレだし無くても良いけど。
crl-verify crl.pem

#DNSサーバのアドレスをVPNクライアントへ配布
push "dhcp-option DNS 8.8.8.8"

#VPNクライアント全てのトラフィックをopenvpn側へ流すようにするためコメントアウト
push "redirect-gateway def1 bypass-dhcp"

#自分しか使わないから最大クライアント数は 100→5へ減らす
max-clients 5

#openvpn@server のサービス起動後はrootからnobodyへ。ubuntuではnogroupなので注意
user nobody
group nogroup

ufwの設定を変更

FirewallへVPN通信の穴開け

「いい串」番ポートなので覚えやすいよねw

ufw allow 1194/udp

ポートフォワーディングの許可

VPNクライアントからの通信をインターネット側に流すようにします

vi /etc/default/ufw

#DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"
vi /etc/ufw/sysctl.conf

#フォワーディングを許可するためにアンコメントする
net/ipv4/ip_forward=1

#一番最後の行にある COMMIT の次行以降に 以下 *nat からの4行を追記する。さくらインターネットのVPSサーバでは ens3 だけど、インターネットと通信するインタフェース名を ifconfig で要確認

vi /etc/ufw/before.rules

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o ens3 -j MASQUERADE
COMMIT

ufwを再起動、openvpnサーバを起動

ufw reload
systemctl start openvpn@server

systemctl start openvpnだとsystemctl status openvpn では起動しているように表示されるのだけど、ps -ef | grep openvpn すると実際のプロセスとしては動作しないんだよなぁ。openvpnクライアントも動作させようとしてエラー終了してる??(未確認)

なので、openvpnサーバだけを明示的に起動させています。

openvpnサーバを自動起動させるようにする

systemctl disable openvpn
systemctl enable openvpn@server

systemctl is-enabled openvpn openvpn@server
disabled
enabled

上記赤文字で記載した部分のようにopenvpnがdisable、openvpn@serverがenableで表示されていればOK

iPhoneでopenvpnサーバに繋げる

クライアント用の秘密鍵を作成

usernameは自分の好きなユーザ名でOK。この後コピペするのでcatしておく

cd /etc/openvpn/easy-rsa/easyrsa3
./easyrsa build-client-full username

cat pki/issued/username.crt pki/private/username.key

ここからの作業はopenvpnサーバでは無く、手元のMac端末で作業します

Finderから「ターミナル」をもうひとつ起動

cd Documents
vi openvpn.opvn

テキストファイル(openvpn.opvn)の内容

client
dev tun
remote VPNサーバのIPアドレス 1194
persist-key
persist-tun
<ca>
-----BEGIN CERTIFICATE-----
ここにca.crtの内容をコピペ
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
ここにクライアント用 username.crt の内容をコピペ
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
ここにクライアント用 username.key の内容をコピペ
-----END ENCRYPTED PRIVATE KEY-----
</key>

iCloudで自動同期できていれば「書類」フォルダにopenvpn.ovpnファイルが作成されているはず。

ここからの作業はiPhoneで実施します

  1. iPhoneに OpenVPN Connect をインストールする
  2. iPhoneの「ファイル」アプリを起動
  3. 書類フォルダに移動
  4. openvpn.ovpnをクリック
  5. 画面左下の「共有」アイコンをクリック
  6. openvpnをクリックしてopenvpnクライアントアプリに設定をインポートする

完成!

参考にしたサイト

OpenVPNのインストールとセットアップからインターネット接続までのガイドブック - Qiita
はじめに先日、新しくサーバを借りてVPN環境を構築しました。色んなサイトを参考にしましたがけっこうづまづいたので、つまづいたポイントに着目しながら構築方法を紹介したいと思います。VPNを利用する…

コメント