見出し画像

ファイルサーバの構築3

VPNサーバの構築

折角Linuxサーバで運用するので外部からもアクセスできるようにしたいと思います。
IPSec-VPNはルータに機能があるので使えないかと試したのですがどうもIPv4 over IPv6である自宅の環境では使えないようでした。
IPv4 over IPv6ではSSL-VPNを使わなければいけないようです。SSL-VPNはOpenVPNと呼ばれているようなので以降はOpenVPNで統一します。

簡単に検索するとSSLの認証用とVPNサーバは別にするような記事が見つかります。そこまではしたくないので一台で設定しているページがありましたのでそちらを、またeasy-rsaの使い方、OpenVPNの概念、設定ファイルの作り方はそれぞれ別のサイトを参考にさせていただきました。

1. openvpnサーバーのインストール

$sudo apt install openvpn easy-rsa

を実行して openvpn と easy-rsa をインストールします。
open-sslは使ったことがあるのですが、easy-rsaというのは初めて見ました。似たようなものでしょうか?なんとなく認証情報を作るものだというのはわかります。

インストールが終わったら

$make-cadir ~/ca

で認証鍵関連のファイルを格納するディレクトリを作ります。ディレクトリを作ったらそこに移動して初期化を行います。

$cd ~/ca
$./easyrsa init-pki

次はca情報(認証局情報)を作ります。

$./easyrsa build-ca

を実行して、パスフレーズを2回入力、CA名を入力すると鍵ファイルが生成されます。

$./easyrsa gen-dh

を実行してdhファイルという物を作りました。

$./easyrsa build-server-full server1 nopass

を実行、これでサーバ用の秘密鍵と証明書ができます。
上記で生成されたファイルは以下のディレクトリに格納されています。

private:秘密鍵
reqs:証明書要求
issues:証明書

生成したファイルを /etc/openvpn にコピーします。

$sudo cp ca.crt private/ca.key issued/server1.crt private/server1.key dh.pem /etc/openvpn

さらにTLS用のキーが必要ということなので

$openvpn --genkey --secret keys/ta.key
$sudo cp private/ta.key /etc/openvpn

としてta.keyも同じ所にコピーします。

次はいよいよ openvpn の設定ファイルを記述します。 /etc/openvpn/server.conf という設定ファイルを作ります。サンプルファイルが用意されているのでそれを利用します。

$gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > ~/server.conf
$sudo cp ~/server.conf /etc/openvpn/server.conf

以下を参考にしてサンプルファイルを修正します。

# OpenVPNのポート番号.
port 1194
# 通信プロトコル: UDP.
proto udp
# VPNプロトコル:ルーティング方式.
dev tun
# 認証局証明書/サーバ証明書・認証鍵/DHパラメータ./etc/openvpn からのパス.
ca ca.crt
cert server1.crt
key server1.key
dh dh.pem
# VPN接続時のネットワークセグメント.他と衝突しないようにうする.
server 10.8.0.0 255.255.255.0
# 再接続用のテーブル.
ifconfig-pool-persist ipp.txt
# サーバ側のLANのセグメント.ifconfigで認識されるLANに接続させる.
push "route 192.168.1.0 255.255.255.0"
# セッション継続頻度.
keepalive 10 120
# 再起動後の処理.
persist-key
persist-tun
# ステータスログ.
status openvpn-status.log
# ログファイル.
log         openvpn.log
# LZO圧縮を有効に
comp-lzo
# ログレベル.
verb 3

修正が終わったら openvpn を起動します。

$service openvpn start

動作確認は

$service openvpn status

で確認することができます。

 openvpn.service - OpenVPN service
    Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor prese>
    Active: active (exited) since Wed 2020-12-09 21:57:18 JST; 1h 40min ago
   Process: 787 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
  Main PID: 787 (code=exited, status=0/SUCCESS)

正常に起動していたら、こんな感じのテキストが表示されます。お疲れさまでした。

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

openvpn でサーバに接続するための設定ファイル、.ovpn を作ります。

こちらを参考にして.ovpnを出力するスクリプトを作り、client.ovpnという名前でAndroidスマホにgoogle driveで転送、問題なくopenvpnクライアントで繋がることを確認しました。

やったね!

画像1



この記事が気に入ったらサポートをしてみませんか?