OpenVPNをインストールして設定する

raspberry pi 5

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/*

長くなったのでクライアントの接続ファイルの作成と設定は

次へ

コメント

タイトルとURLをコピーしました