OpenVPNの設定

cloud組むとかやってましたがそれほど使いやすくない。。。
もう Sambaのファイルサーバ に OpenVPNでアクセスするのが最強なんじゃなかろうか。
ということで、OpenVPNの設定をします。
SambaはLAN内からはフリーでアクセスできる設定で使ってます。
サーバはラズパイ2に変えてから調子が悪くて(熱暴走してる?)、ST110のUbuntu 18.04サーバです。

参考URL

図解!のページが分かりやすい。

UbuntuでOpenVPNサーバーを構築する – web net FORCE
基本的なOpenVPNの構築手順 – Qiita
Easy-RSA – Arch wiki
図解!UbuntuでOpenVPNを使う

サーバへのソフトインストール

さくっとインスコ

$ sudo apt install openvpn easy-rsa

後でファイルを転送するためのディレクトリを作っておく。

$ mkdir ~/keys

環境設定ファイルの作成と鍵の生成

Arch wikiを見ると、認証鍵の生成は別のPCでやれと書いてある。幸いUbuntu on Windowsがあるので、こいつで鍵の生成は実施してやることにする。(別に使えるLinux環境が無いならサーバ上で実施する。)

ここからは認証局用PCでの作業

まずはeasy-rsa (鍵生成ソフト)をインストール

$ sudo apt install easy-rsa

$ make-cadir ~/ca
$ cd ~/ca
$ vim vars

これらを自分の状況に合わせて設定します。以下私の例。

修正したら保存して終了し、環境変数に設定する。

$ source vars

なんかエラー出た。

No ~/ca/openssl.cnf file could be found
Further invocations will fail

ディレクトリを見ると opensslのバージョン違いっぽいファイルが3つ。
opensslのバージョンを確認してみる。

$ openssl version

opensslのバージョンは1.1.1だそうなので、ファイルはopenssl-1.0.0.cnfを使うことする。

varsの設定ではそのあと上手くいかなかったので、openssl-1.0.0.cnfをopenssl.cnfに別名コピーしておく。

$ cp openssl-1.0.0.cnf openssl.cnf

.rndファイル作成

ついでに、この後でSSLに怒られるので先手を打って.rndファイルをHOMEディレクトリに作っておく。一定以上のサイズのランダムなバイナリファイルならOKなので、以下のコマンドで作成。(参考)

$ ps -ef > ~/.rnd

再度環境変数設定を実行

$ source vars

これでエラーが消えました。

証明書と鍵の作成

以下のコマンドをcaフォルダで実行

$ ./clean-all
$ ./pkitool –initca

エラーが無ければ(あっても) keysディレクトリが出来てると思う。
こん中にindex.txt.attrファイルを作ってやる。後での怒られ防止。書いた中身の意味は「発行シリアル番号の重複を許さない」

$ echo ‘unique_subject = yes’ > ./keys/index.txt.attr

乱数パラメータ作成

$ ./build-dh

暫くかかるので待つ。

サーバー証明書の生成

VPNサーバー名は「respberrypi」とする。
以下のコマンドを実行。

$ ./pkitool –server raspberrypi

index.txt.attrが無いとここで怒られる。

出来たファイルをVPNサーバーにコピー

SSH経由でファイルをコピーするscpコマンドを使います。
raspberrypi.crt, raspberrypi.keyは各自のサーバ名のファイルに置き換え。
user@aaa.bbb.ccc.ddd:/home/user/keysのところは各自サーバのユーザー名とIPアドレスに置き換え。

$ cd ~/ca/keys
$ scp ca.crt raspberrypi.crt raspberrypi.key dh2048.pem user@aaa.bbb.ccc.ddd:/home/user/keys

クライアント証明書の作成と転送

作ってなかったので作成して、これもサーバに転送しておきます。クライアント名:iphone

$ cd ~/ca
$ ./pkitool iphone

出来たファイルを転送

$ scp keys/iphone.crt keys/iphone.key user@aaa.bbb.ccc.ddd:/home/user/keys

以上で認証局PCでの作業はいったん終了。

OpenVPNサーバの設定

こっからサーバに戻っての作業です。

TLS認証用キーの作成とファイルの移動

TLS認証用キーを以下のコマンドで作成

$ openvpn –genkey –secret ~/keys/ta.key

キーをすべて/etc/openvpnフォルダへコピーします。

$ cd ~/keys
$ sudo cp ca.crt dh2048.pem raspberrypi.crt raspberrypi.key ta.key /etc/openvpn
$ rm ca.crt dh2048.pem raspberrypi.crt raspberrypi.key ta.key

OpenVPNサーバ設定

/etc/openvpn/に以下の内容でserver.confを作成(参考)

port 1194 # ポート番号
proto udp # プロトコル
dev tun # ルーティング方式を採用
#
ca ca.crt # CA証明書
cert raspberrypi.crt # サーバー証明書
key raspberrypi.key # サーバー秘密鍵
dh dh2048.pem # DHパラメータ
#
ifconfig-pool-persist ipp.txt # IPアドレスのテーブルファイル
#
server 10.8.0.0 255.255.255.0 # VPNで使用するプライベートIPとサブネットマスク
#
push “redirect-gateway def1 bypass-dhcp” # トラフィックのすべてをOpenVPN経由とする
push “route 192.168.1.0 255.255.255.0” # 外部からLANへのトラフィックをVPNサーバ経由とする
push “dhcp-option DNS 8.8.8.8” # Google DNS使用
#tls-auth ta.key 0 # TLS認証を有効化
#cipher AES-256-CBC #認証形式
#auth SHA512 #認証形式
comp-lzo #転送データのlzo圧縮有効化
client-to-client #クライアント間の接続を許可
keepalive 10 120 #生存確認を実施
#
user nobody
group nogroup #Ubuntuはnobodyではなくnogroup
#
persist-key #設定の永続化
persist-tun
#
status /var/log/openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log
#
verb 3 #ログレベル

サーバ起動

以下のコマンドでサーバを起動します。
$ sudo service openvpn start

クライアント(iPhone)の設定

クライアントは「OpenVPN Connect」をアップストアからインストールしておいてください。

設定ファイルを作成

サーバの設定に合わせた設定ファイルは以下。(TLSは無効になってる)
以下のファイルに~~.ovpnと名前を付けて保存する。

client

dev tun
proto udp

remote aaa.bbb.ccc.ddd 1194

resolv-retry infinite
nobind

persist-key
persist-tun

comp-lzo

<ca>
—–BEGIN CERTIFICATE—–
(中略)
—–END CERTIFICATE—–
</ca>
<cert>
—–BEGIN CERTIFICATE—–
(中略)
—–END CERTIFICATE—–
</cert>
<key>
—–BEGIN PRIVATE KEY—–
(中略)
—–END PRIVATE KEY—–
</key>

設定ファイルの転送

iTunesでiPhoneを繋いで、OpenVPN Connectに上記設定ファイルを転送します。

OpenVPN connectを開くと設定追加するか?みたいな画面になるので、「add」を2回選択。

上手くいくと接続のためのトグルスイッチが表示されるので、オンにして接続できれば完了。

ふぅ、長かった。疲れた。。

ここではまったら(私ははまったが)、OpenVPNの接続ボタンの右上にLOGを見るボタンがあるので、それを見ながら設定ファイルを調整する。

この後

以下不具合があるので、直したい。
(というか目的が達成できてない orz )

・VPN接続した後にWEBページにアクセスできない。
・VPN接続してSambaにアクセスできない。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする