Apache2 をリバースプロキシとして使用しOpenConnectを構成する

Apache2 をリバースプロキシとして使用し、外部からの接続をポート 443 で受けつつ、内部で OpenConnect サーバー(ocserv)をポート 4443 へ転送する設定を行う場合、mod_proxy を使った設定が必要になります。

1. Apache2 の mod_proxy を有効化

まず、必要なモジュールを有効にします。

bash

sudo a2enmod proxy proxy_http ssl
sudo systemctl restart apache2

2. Apache2 の VirtualHost 設定

Apache の sites-available に新しい設定ファイルを作成します。

bash

sudo nano /etc/apache2/sites-available/openconnect.conf

次のような設定を記述してください:

apache

<VirtualHost *:443>
    ServerName vpn.example.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/vpn.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/vpn.example.com/privkey.pem

    # ocserv へのリバースプロキシ設定
    ProxyRequests Off
    ProxyPass / https://127.0.0.1:4443/
    ProxyPassReverse / https://127.0.0.1:4443/

    # WebSocket の対応(必要な場合)
    ProxyPass /ws/ ws://127.0.0.1:4443/
    ProxyPassReverse /ws/ ws://127.0.0.1:4443/

    ErrorLog ${APACHE_LOG_DIR}/vpn_error.log
    CustomLog ${APACHE_LOG_DIR}/vpn_access.log combined
</VirtualHost>

ここで:

  • ServerName: VPN サーバーのドメイン名(適宜変更)
  • SSL 設定: Let's Encrypt の証明書を使用(適宜変更)
  • ProxyPass / ProxyPassReverse: Apache2 をリバースプロキシとして ocserv に転送
  • WebSocket の設定: ocserv の WebSocket を有効化した場合の設定

3. 設定を有効化

作成した設定ファイルを有効化し、Apache2 を再起動します。

bash

sudo a2ensite openconnect.conf
sudo systemctl reload apache2

この構成で 443 番ポートの HTTPS 通信を受け、内部で 4443 に転送できます! 環境や要件によって設定を調整する必要があるかもしれませんが、基本的な構成はこのようになります。