それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

OpenVPNの起動オプションをovpnファイルのconfig にまとめる。

前回まで

前回までで、コマンドからOpenVPN接続、共通鍵による認証を見てきました。

ここでの目標

サーバーとクライアントのそれぞれの起動に使うコマンド引数を、ファイルに纏めて 起動コンフィグファイルを作ります。

サーバー側

openvpn --config my-server.ovpn

クライアント側

openvpn --config my-server-client.ovpn

のように、設定ファイルでシンプルに起動できる 設定ファイルを作成します。

今回は、共有鍵をパスで指定する。共通鍵を設定ファイルに含めるの2種類を見ていきます。

接続ファイルの作成

共有鍵使った接続をを設定ファイルに書きたいと思います。

コマンドラインからオプションを与える代わりに設定ファイルを使えるようになります。

サーバー設定ファイルを作成

最初にサーバー側で設定ファイルを書きました。

myserver-tun0.conf

dev tun0
ifconfig 10.9.8.1 10.9.8.2
secret /etc/openvpn/static.key

ファイルはこのように設置しています。

root@server:/etc/openvpn# ll
-rw-------    1 root     root           636 Feb 14 11:02 static.key
-rw-r--r--    1 root     root             0 Feb 14 11:02 tun0.conf

設定ファイルを使ってサーバーを起動します。

verb は verbose オプションです。詳細なログが出ます。

root@:/etc/openvpn# openvpn --config /etc/openvpn/tun0.conf --verb 6

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

クライアント側がサーバーへの接続ファイルの作成。クライアント側でも設定ファイルを使ります。

準備

クライアント側に、サーバーで作成した固定鍵(共有鍵)を持ってきます。

mkdir ~/openvpn
cd ~/Desktop/openvpn
scp router:/etc/openvpn/static.key .

クライアント側も設定ファイルを作ります。

ほとんどサーバーと同じですが、remote があるのが異なります。

myserver-tun0.conf

dev tun0
remote 192.168.1.1
ifconfig 10.9.8.2 10.9.8.1
secret /Users/takuya/Desktop/openvpn/static.key

鍵ファイルの場所をパスで指定してます。

接続します。

sudo openvpn --config  ~/Desktop/openvpn/tun0.conf  --verb 6

verb は verbose オプションです。詳細なログが出ます。

実際の接続例です

クライアントから起動ログはこんなかんじ。

takuya@openvpn$ sudo openvpn --config  ~/Desktop/openvpn/tun0.conf  --verb 6
Fri Feb 14 11:07:22 2020 us=467027 disabling NCP mode (--ncp-disable) because not in P2MP client or server mode
Fri Feb 14 11:07:22 2020 us=467785 Current Parameter Settings:
Fri Feb 14 11:07:22 2020 us=467792   config = '/Users/takuya/Desktop/openvpn/tun0.conf'
## 略
Fri Feb 14 11:07:32 2020 us=984572 Peer Connection Initiated with [AF_INET]192.168.1.1:1194
## 少し時間がかかります。
Fri Feb 14 11:07:34 2020 us=175172 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Fri Feb 14 11:07:34 2020 us=175256 Initialization Sequence Completed
## ping を送信してます。
Fri Feb 14 11:09:58 2020 us=450862 UDP WRITE [124] to [AF_INET]192.168.1.1:1194:  DATA len=124
Fri Feb 14 11:09:58 2020 us=453078 UDP READ [124] from [AF_INET]192.168.1.1:1194:  DATA len=124

設定ファイルへの共有鍵を埋め込み

設定と鍵が別々だと、取り扱いが不便。 なので、鍵ファイルを設定ファイルに含めます。

鍵ファイルの中身をを設定に書き込む

先程のファイルに、<secret></secret> タグを書きます。 <secret></secret> なかに、鍵ファイルの中身を書きます。

myserver-tun0.conf

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

dev tun0
remote 192.168.1.1
ifconfig 10.9.8.2 10.9.8.1
<secret>
-----BEGIN OpenVPN Static key V1-----
d862054cc8f4ab583afb71a41da17e53
167de143e89d0ded7449396afe03a3b7
349fc581b6a778ddbb8a000dd2f8134c
691ab43bb039499c6901045752bf7309
6b671f87ed607a378988634d4b074c3c
25f9bc983cfdf945542c20ca254d8127
3184635341bd64d5e42eabe9a3ec0ebc
9260a2fbf8ee8eaefc8edb5c3c9d7c20
d78ad6608ba12fa8f5a03f4369f10668
e047d0f7f86fe2bc44c764e1ad4355b4
5095c6b42c2ee4905f58f843fd214905
6bc48eb4946b6fff827171298afaece5
7cad3833d0d226febf8d890e8143a27d
a366d7468ee20d4ca7d955d86d11a3df
c16ba9c972d244fe8fd07180de3aff2a
4b3d79f168a968468d50c973857b7b20
-----END OpenVPN Static key V1-----
</secret>

これで、各種ソフトウェアから接続ができるようになります。

ほとんどの人は、ここまでの設定で十分だと思います。

拡張子を ovpn に変更

クライアント用 opvn ファイルを作成します。拡張子だけの問題です。

cp myserver-tun0.conf myserver-tun0.ovpn

クライアント設定ファイルを拡張子 .ovpn に変更すると、各種openvpn 対応ソフトで使えます。

tunnelbrickで認識される例。

tunnelbrick でovpn ファイルが認識されて、ダブルクリックで設定ファイルをインポートすると、あとは接続開始します。

f:id:takuya_1st:20200218032212p:plain
ovpnファイルレ
f:id:takuya_1st:20200218032149p:plain
tunnerlbrickで接続完了

接続されました。

まとめ

設定ファイルは、起動オプションをそのまま書いてるだけ --dev tun1 であれば dev tun1

設定ファイルに共通鍵を含める事ができる。ファイルの管理は楽になる。(取り扱いは慎重に)

ただし、共有鍵では「TLS」暗号化はしていません。No X509 PKI です。接続すれば十分な人にはシンプルでいいと思います。