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にアクセスできない。