VPN(バーチャル・プラーベート・ネットワーク)とは通信を暗号化されたトンネルに通すようなイメージです
この設定ができると自宅においたサーバがいよいよ金銭的な付加価値を持ちます(まあ、WordPressでブログが大人気な人は広告費が入るかもですが;)
具体的には Samba(windowsファイル共有システム)との組合せでサーバをクラウドストレージ化することも簡単です
有名なクラウドストレージというと Google One(google) や iCloud (apple), DropBoxなどでしょうか?無料枠を使っているという人もたくさんいると思いますが、使用量が増えればもちろん有料化してしまいます
また、VPNも基本有料サービスで安いところでも¥1,000/月くらいかかります
これらをサーバの使用電気料(Raspberry Pi なら¥100/月 くらい)だけで賄えるのであれば、サーバの作成費も含めて(作ったサーバ機にもよりますが;)一撃でもとが取れるでしょう
頑張りましょう
OpenVPN のインストール
# apt -y install openvpn easy-rsa iptables
認証局や証明書の作成
# cd /usr/share/easy-rsa
初期化
# ./easyrsa init-pki
認証局の作成(passwordあなたのパスワード)
# ./easyrsa build-ca
No Easy-RSA 'vars' configuration file exists!
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
Enter New CA Key Passphrase:password
Re-Enter New CA Key Passphrase:password
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Server-CA
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/usr/share/easy-rsa/pki/ca.crt
サーバ証明書の作成(passwordは認証局の作成で設定したパスワード)
# ./easyrsa build-server-full server1 nopass
sing SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
-----
Using configuration from /usr/share/easy-rsa/pki/easy-rsa-13326.kydt6J/tmp.eOEtJh
Enter pass phrase for /usr/share/easy-rsa/pki/private/ca.key:password
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server1'
Certificate is to be certified until Dec 17 01:08:30 2024 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
クライアント証明書の作成(passwordは認証局の作成で設定したパスワード)
# ./easyrsa build-client-full client1 nopass
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
-----
Using configuration from /usr/share/easy-rsa/pki/easy-rsa-13401.AiWFf5/tmp.PDf2HE
Enter pass phrase for /usr/share/easy-rsa/pki/private/ca.key:password
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'client1'
Certificate is to be certified until Dec 17 01:10:29 2024 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
( DH ) パラメーターの生成
# ./easyrsa gen-dh
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
Generating DH parameters, 2048 bit long safe prime
DH parameters of size 2048 created at /usr/share/easy-rsa/pki/dh.pem
TLS-Auth キーの作成
# openvpn –genkey secret ./pki/ta.key
各証明書をコピー
# cp -pR /usr/share/easy-rsa/pki/{issued,private,ca.crt,dh.pem,ta.key} /etc/openvpn/server/
OpenVPN を設定して起動
サンプル設定ファイルをコピー
# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
# vi /etc/openvpn/server/server.conf
35行目、36行目(35行目のコメントを削除して36行目にコメント)
proto tcp
;proto udp
78行目~コピーした証明書を指定
ca ca.crt
cert issued/server1.crt
key private/server1.key
85行目 コピーした DH ファイルを指定
dh dh.pem
92行目 コメントを削除
topology subnet
101行目 VPNで使用するプライベートネットワークを指定(ローカルネットワークと重複しないように)
server 192.168.50.0 255.255.255.0
142行目 コメントを削除して自分のサーバのローカルネットワークに変更
push "route 192.168.1.0 255.255.255.0"
複数同時接続の設定(PCとかiPhoneとかiPadとかその他同時接続)
222行目~(222行目コメント解除、223行目最大接続数設定)
duplicate-cn
max-clients 100
244行目 コピーしたTLS-Auth キーを指定
tls-auth ta.key 0
念のため iptables の通過設定ファイルを作って OpenVPN の起動ファイルに追加します
# vi /etc/openvpn/server/add-bridge.sh
# 新規作成
#!/bin/bash
# ローカルネットワークに接続可能なあなたのネットワークインターフェース
IF=eno1
# VPN で使用するインターフェース
# 当サイトのように設定ファイルで [tun] を指定した場合、通常は [tun0]
VPNIF=tun0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i ${VPNIF} -j ACCEPT
iptables -t nat -A POSTROUTING -o ${IF} -j MASQUERADE
# vi /etc/openvpn/server/remove-bridge.sh
# 新規作成
#!/bin/bash
# ローカルネットワークに接続可能なネットワークインターフェース
IF=eno1
# VPN で使用するインターフェース
# 当サイトように設定ファイルで [tun] を指定した場合、通常は [tun0]
VPNIF=tun0
echo 0 > /proc/sys/net/ipv4/ip_forward
iptables -D FORWARD -i ${VPNIF} -j ACCEPT
iptables -t nat -D POSTROUTING -o ${IF} -j MASQUERADE
# chmod 700 /etc/openvpn/server/{add-bridge.sh,remove-bridge.sh}
# systemctl edit openvpn-server@server
最終行に追記
[Service]
ExecStartPost=/etc/openvpn/server/add-bridge.sh
ExecStopPost=/etc/openvpn/server/remove-bridge.sh
ルーターのNAT設定と ufw で 1194/tcp を通過設定(デフォルトはポート1194,変更していればそのポートを開放)
# ufw allow 1194/tcp
OpenVPN を起動
# systemctl enable –now openvpn-server@server
配布用に自分の Home にクライアント用の公開鍵等をコピーしておきます。
$ mkdir ~/cert
$ sudo cp /etc/openvpn/server/{ca.crt,ta.key} ~/cert/
$sudo cp /etc/openvpn/server/issued/client1.crt ~/cert/
$sudo cp /etc/openvpn/server/private/client1.key ~/cert/
$sudo chmod 644 ~/cert/*
$sudo chown あなたのID:あなたのID ~/cert/*
長くなったのでクライアントの接続ファイルの作成と設定は
コメント