OpenVPN サービスのデプロイ

このイメージは基本的な機能の正常な動作のみを保証しています。ご自身で設定できる場合は、独自に構築するか、このイメージの実装方法を参考にして完成させることをお勧めします。使用する前に、Linux および Docker に関する基本的な知識が必要です。このイメージは Debian 9 でテスト済みです。ここでは Debian 9 での使用方法について説明しますが、通常、これは Ubuntu などの他のシステムにも適用できます。本サービスのデフォルトポートは 1190/UDP です。ファイアウォールでこのルールを許可していることを確認してください。

準備作業

サーバー上で以下の変更を行い、コマンドを実行する必要があります。

echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
sysctl -p

サーバーに ufw がインストールされている場合は、/etc/ufw/before.rules の先頭数行に以下の内容を書き込む必要があります。ここでの eth0 とネットワークセグメントは、実際のサーバーのインターフェースと設定に応じて変更してください。*filter ルールの前(もしあれば)に追加することに注意してください。

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.27.27.0/24 -o eth0 -j MASQUERADE
COMMIT

次に、/etc/default/ufw 内の以下の設定を ACCEPT に変更します。

DEFAULT_FORWARD_POLICY="ACCEPT"

最後に、以下のコマンドを実行してサーバーの ufw ファイアウォールサービスを再起動します。

ufw reload

サーバーに ufw がインストールされていない場合は、iptables の FORWARD ルールが ACCEPT であることを確認し、以下のコマンドを実行してください。

注目

サーバーを再起動した後、このルールを再適用する必要があるかもしれません。ufw のインストールをお勧めします。
iptables -P FORWARD ACCEPT

設定の初期化

次に、OpenVPN サービスの設定を保存するためのディレクトリを作成します。

mkdir -p ~/lamda-openvpn-server

続いて、以下のコマンドを実行して OpenVPN サービスの初期化操作を行います。

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-server-new

コマンドの実行が完了するのを待ちます。これで ~/lamda-openvpn-server ディレクトリ内にサービスの設定が確認できます。設定ファイルは config.ovpn です。エディタでこのファイルを開き、以下のフィールドのみを修正することをお勧めします。

# VPN のネットワークセグメントとサブネットマスク
server 172.27.27.0 255.255.255.0
# VPN サービスポート
port 1190

# または、サーバー上の特定のネットワークインターフェースにVPNクライアントからアクセスする必要がある場合
# ルートを追加することもできますが、この場合、このネットワークセグメント内の現在のホストのIPにしかアクセスできないことに注意してください
# クライアントがこのネットワークセグメントに完全にアクセスする必要がある場合は、追加の設定が必要です
push "route 192.168.68.0 255.255.255.0"

# 114 をお好みの DNS サーバーに変更してください
push "dhcp-option DNS 114.114.114.114"

クライアント接続証明書の作成

編集が完了したら、クライアントを作成します。myname は他の任意の名前に変更できますが、重複はできません。

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-new myname

作成後、以下のコマンドを使用してこのクライアントのログイン証明書を取得します。

# 注意:設定内の IP は現在のパブリック IP を自動的に取得しますが、正しくない場合は手動で修正する必要があります
#
# ovpn 設定を生成し、myname.ovpn ファイルにリダイレクトして保存します。このファイルは OpenVPN-Connect などのアプリで使用できます
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile ovpn myname >myname.ovpn
# lamda で使用する OpenVPNProfile を生成します。これは lamda で直接使用できます
# これには properties.local のコメント部分が含まれており、その中の openvpn.* 設定を
# /data/usr/properties.local にコピーすることで、VPN への自動接続を実現できます
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile lamda myname

クライアント証明書の失効

特定のクライアント証明書を失効させる必要がある場合は、以下のコマンドを実行してください。失効後、OpenVPN サービスを再起動する必要がある場合があります。

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-revoke myname

OpenVPN サービスの起動

これで、以下のコマンドを実行して OpenVPN サービスをフォアグラウンドで起動できます。クライアントの接続ログを直接確認し、エラーのトラブルシューティングを行うことができます。

docker run -it --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run

問題がないことを確認したら、バックグラウンドで実行することをお勧めします。このコマンドを使用してサービスをバックグラウンドで起動します。

docker run -d --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run

参考ドキュメント

基本ドキュメント:https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/

ルーティング設定:https://community.openvpn.net/openvpn/wiki/BridgingAndRouting