ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由:
CentOS 6は、2020年11月30日に保守終了(EOL)に達しました and no longer receives security patches or updates. For this reason, this guide is no longer maintained.

代わりに参照してください:
このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

次のDigitalOceanチュートリアルは、CentOS 7サーバーへのOpenVPNのインストールと構成の概要を示しているため、すぐに役立つ可能性があります。

序章

この記事では、CentOS6クラウドサーバーでのOpenVPNサーバーのセットアップと構成について説明します。 また、新しくインストールしたOpenVPNサーバーに接続するようにWindows、OS X、またはLinuxクライアントを構成する方法についても説明します。

始める前に、クラウドサーバーでEnterprise Linux(EPEL)リポジトリ用の追加パッケージを有効にする必要があります。 これは、OpenVPNパッケージを提供するFedoraProjectによって提供されるサードパーティのリポジトリです。

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

OpenVPNの初期構成

まず、EPELからOpenVPNパッケージをインストールします。

yum install openvpn -y

OpenVPNにはサンプル構成のみが付属しているため、構成ファイルを宛先にコピーします。

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

ファイルが適切な場所にあるので、編集のために開きます。

nano -w /etc/openvpn/server.conf

最初の変更は、クライアントシステムのトラフィックがOpenVPNを介してルーティングされるようにする「push」パラメーターのコメントを解除することです。

push "redirect-gateway def1 bypass-dhcp"

また、DNSクエリをGoogleのパブリックDNSサーバーにルーティングする直後のセクションも変更する必要があります。

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

さらに、セキュリティを強化するために、OpenVPNが起動後に特権をドロップすることを確認してください。 関連する「user」行と「group」行のコメントを解除します。

user nobody
group nobody

easy-rsaを使用したキーと証明書の生成

構成ファイルの変更が完了したので、必要なキーと証明書を生成します。 構成ファイルと同様に、OpenVPNはデフォルトで必要なスクリプトをドキュメントフォルダーに配置します。 必要なフォルダを作成し、ファイルをコピーします。

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa

ファイルを目的の場所に配置して、easy-rsaスクリプトに必要な情報を提供する「vars」ファイルを編集します。

nano -w /etc/openvpn/easy-rsa/vars

ファイルの下部にある「KEY_」変数を変更しようとしています。 変数名はかなりわかりやすいものであり、該当する情報を入力する必要があります。

完了すると、「vars」ファイルの下部が次のように表示されます。

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="Organization Name"
export KEY_EMAIL="[email protected]"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server

OpenVPNは、CentOS6でOpenSSLのバージョンを正しく検出できない場合があります。 予防措置として、必要なOpenSSL構成ファイルを手動でコピーします。

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

次に、作業ディレクトリに移動し、上記の情報に基づいて認証局(CA)を構築します。

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

CAができたので、OpenVPNサーバーの証明書を作成します。 build-key-serverから要求されたら、yesと答えてコミットします。

./build-key-server server

また、build-dhスクリプトを使用してDiffie Hellman鍵交換ファイルを生成し、次のようにすべてのファイルを/ etc/openvpnにコピーする必要があります。

./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

クライアントが認証できるようにするには、クライアント証明書を作成する必要があります。 必要に応じてこれを繰り返し、クライアントまたはデバイスごとに一意の証明書とキーを生成できます。 証明書のペアが2つ以上ある場合は、説明的なファイル名を使用してください。

cd /etc/openvpn/easy-rsa
./build-key client

ルーティング構成とOpenVPNサーバーの起動

iptablesルールを作成して、VPNサブネットを適切にルーティングできるようにします。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save

次に、sysctlでIP転送を有効にします。

nano -w /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

最後に、新しいsysctl設定を適用します。 サーバーを起動し、起動時にサーバーが自動的に起動することを確認します。

sysctl -p
service openvpn start
chkconfig openvpn on

これで、OpenVPNサーバーが機能します。 次の手順では、クライアントを適切に構成する方法について説明します。

OpenVPNクライアントの設定

OpenVPNサーバーがオンラインになったので、接続するようにクライアントを構成しましょう。 お使いのオペレーティングシステムに関係なく、手順はほぼ同じです。

続行するには、リモートサーバーからca.crt、client.crt、およびclient.keyファイルを取得する必要があります。 お気に入りのSFTP/SCP(セキュアファイル転送プロトコル/セキュアコピー)クライアントを使用して、ローカルディレクトリに移動するだけです。 または、nanoでファイルを開き、コンテンツをローカルファイルに手動でコピーすることもできます。 client.crtファイルとclient.keyファイルは、前の「./build-key」で使用されたパラメーターに基づいて自動的に名前が付けられることに注意してください。 必要なファイルはすべて/etc/ openvpn / easy-rsa/keysにあります

nano -w /etc/openvpn/easy-rsa/keys/ca.crt
nano -w /etc/openvpn/easy-rsa/keys/client.crt
nano -w /etc/openvpn/easy-rsa/keys/client.key

証明書がクライアントシステムにあるので、client.ovpnという別の新しいファイルを作成します。ここで、「client」は(ビルドキーから)デプロイされているクライアントの名前と一致する必要があります。内容は次のようになります。 xxxx “とクラウドサーバーのIPアドレス、および指定された領域に貼り付けられた適切なファイル。 以下に示すように、「BEGIN」ヘッダー行から「END」行までのコンテンツのみを含めます。 これらのファイルは、他の認証トークンと同じように機密性を保つようにしてください。

client
dev tun
proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
<ca>
Contents of ca.crt
</ca>
<cert>
Contents of client.crt
</cert>
<key>
Contents of client.key
</key>

接続を確立するために必要なすべての情報が.ovpnファイルに一元化されたため、クライアントシステムに展開できるようになりました。

Windowsでは、エディションに関係なく、GUIがあらかじめパッケージ化された公式の OpenVPNCommunityEditionバイナリが必要になります。 インストール後に必要な唯一の手順は、.ovpn構成ファイルを適切なディレクトリ(C:\ Program Files \ OpenVPN \ config)に配置し、GUIで[接続]をクリックすることです。 Windows上のOpenVPNGUIは、管理者権限で実行する必要があります。

Mac OS Xでは、オープンソースアプリケーション “Tunnelblick” は、WindowsのOpenVPN GUIと同様のインターフェイスを提供し、OpenVPNと必要なTUN/TAPドライバーがあらかじめパッケージ化されています。 Windowsと同様に、必要な唯一の手順は、.ovpn構成ファイルを〜/ Library / Application Support / Tunnelblick/Configurationsディレクトリに配置することです。

Linuxでは、ディストリビューションの公式リポジトリからOpenVPNをインストールする必要があります。 次に、以下を実行するだけでOpenVPNを呼び出すことができます。

sudo openvpn --config ~/path/to/client.ovpn

おめでとう! ここまで進んだら、クラウドサーバーで完全に機能するVPNが実行されているはずです。 GoogleをチェックしてパブリックIPを明らかにすることで、トラフィックがVPN経由でルーティングされていることを確認できます。