OpenVPNを使用して独自のプライベートネットワークをセットアップする

Vultrは、同じ場所で実行されているサーバーに素晴らしいプライベートネットワーク接続を提供します。しかし、異なる国やデータセンターにある2つのサーバーがプライベートで安全な方法で通信できるようにしたい場合があります。このチュートリアルでは、OpenVPNを使用してそれを実現する方法を示します。ここで使用されているオペレーティングシステムは、2つの異なる構成を示すために、DebianとCentOSです。これは、Debian-> Debian、Ubuntu-> FreeBSDなどに簡単に適応できます。

  • マシン1:Debian、サーバーとして機能します(場所:NL)
  • マシン2:CentOS、クライアントとして機能します(場所:FR)

マシン1

OpenVPNをインストールして、マシン1を起動します。

apt-get install openvpn

その後、鍵を生成するための構成例およびツールをコピーし、easy-rsa/etc/openvpn

cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn

キーのデフォルト値は安全ではなくなりました。これ/etc/openvpn/easy-rsa/2.0/varsをお気に入りのテキストエディターで開いて修正し、次の行を変更します。

export KEY_SIZE=4096

次に、値が現在のセッションに読み込まれていることを確認し、最終的に既存のキーをクリーンアップして、認証局を生成します。

cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca

情報の入力を求められます。サーバーの場所やFQDNの内容など、サーバーに関する情報を提供することで、生活を楽にします。これは、問題をデバッグする必要がある場合に役立ちます。

Country Name (2 letter code) [US]:NL
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) [changeme]:yourserver1.yourdomain.tld
Name [changeme]:-
Email Address [[email protected]]:[email protected]

別の必要性は、Diffie-Hellman鍵交換のパラメーターです。それらも生成する必要があります:

./build-dh

重要build-dhコマンドは比較的複雑なプロセスであり、サーバーのリソースによっては最大10分かかる場合があります。

この接続のセキュリティをさらに向上させるために、すべてのクライアントに配布する必要がある静的シークレットを生成します。

mkdir /etc/openvpn/keys
openvpn --genkey --secret /etc/openvpn/keys/ta.key

これで、サーバーのキーを生成できます。

./build-key-server server1

このコマンドはいくつかの情報を要求します:

Country Name (2 letter code) [US]:NL
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) [server1]:yourserver1.yourdomain.tld
Name [changeme]:-
Email Address [[email protected]]:[email protected]

最後のステップは、CAのキーで生成されたばかりの証明書リクエストに署名することです。

1 out of 1 certificate requests certified, commit? [y/n]y

必要なキーと証明書を別のフォルダーにコピーします。

cd /etc/openvpn/easy-rsa/2.0/keys
cp dh4096.pem ca.crt server1.crt server1.key /etc/openvpn/keys/
chmod 700 /etc/openvpn/keys
chmod 600 /etc/openvpn/keys/*

次に、構成のために、それを解凍します...

cd /etc/openvpn
gunzip server.conf.gz

...そしてserver.conf、お気に入りのテキストエディタで結果を開きます。構成は次のようになります。

port 1194
proto udp
dev tun

ca keys/ca.crt
cert keys/server1.crt
key keys/server1.key 
dh keys/dh4096.pem
server 10.8.100.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# Uncomment this if you have multiple clients
# and want them to be able to see each other
;client-to-client

keepalive 10 120
tls-auth keys/ta.key 0 

tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
cipher AES-256-CBC
auth SHA384
comp-lzo

user nobody
group nogroup

persist-key
persist-tun
verb 3
mute 20

サービスを再起動した後、ログを少し監視する必要があります...

service openvpn restart && tail -f /var/log/syslog

...すべてが機能していることを確認します。エラーが検出されない場合は、2番目のサーバーのキーを生成できます。

cd /etc/openvpn/easy-rsa/2.0
source ./vars
./build-key server2

ここでも、情報の入力を求められます。

Country Name (2 letter code) [US]:FR
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter FR
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) 
[server2]:yourserver2.yourdomain.tld
Name [changeme]:-
Email Address [[email protected]]:[email protected]

次に、必要なファイルを2番目のサーバーに転送する必要があります。できれば暗号化します。

cd /etc/openvpn/easy-rsa/2.0/keys
cp /etc/openvpn/keys/ta.key .
tar -cf vpn.tar ca.crt server2.crt server2.key ta.key
scp vpn.tar yourusername@server2:~/
rm vpn.tar

マシン2

2番目のサーバーの SSH接続に切り替える時間です。最初のステップはOpenVPNをインストールすることです...

yum install openvpn

...そして非アクティブ化しfirewalldます。置き換えは単純なiptablesになります。

systemctl stop firewalld
systemctl disable firewalld

サーバーに移動したアーカイブを解凍し、ファイルの権限を適切に設定します。

cd /etc/openvpn
mkdir keys
chmod 700 keys
cd keys
tar -xf ~/vpn.tar -C .
chmod 600 *

/etc/openvpn/client.confお気に入りのテキストエディタで作成します。次のようになります。

client
dev tun
proto udp

remote yourserver yourport
resolv-retry infinite
nobind
user nobody
group openvpn


persist-key
persist-tun

ca keys/ca.crt
cert keys/server2.crt
key keys/.key

ns-cert-type server
tls-auth keys/ta.key 1

tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
cipher AES-256-CBC
auth SHA384

remote-cert-tls server

comp-lzo
verb 3
mute 20

最後のステップは、サービスを開始して有効にすることです。

systemctl start [email protected]
systemctl enable [email protected]

すべてが機能していれば、最初のサーバーにpingしても問題はありません。

PING 10.8.100.1 (10.8.100.1) 56(84) bytes of data.
64 bytes from 10.8.100.1: icmp_seq=1 ttl=64 time=17.8 ms
64 bytes from 10.8.100.1: icmp_seq=2 ttl=64 time=17.9 ms
64 bytes from 10.8.100.1: icmp_seq=3 ttl=64 time=17.8 ms

これでインターネット経由でプライベート接続が確立されました!

エラーのトラブルシューティングが必要な場合は、次のコマンドでログを確認してください。

journalctl -xn


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。