このチュートリアルでは、OpenConnectVPNサーバーをDebian 11 Bullseye にインストールして、独自のVPNサーバーを実行する方法を説明します。 。 OpenConnect VPNサーバー、別名 ocserv は、Cisco AnyConnnect VPNプロトコルのオープンソース実装であり、企業や大学で広く使用されています。 AnyConnectは、SSLベースのVPNプロトコルであり、個々のユーザーがリモートネットワークに接続できるようにします。
独自のVPNサーバーを設定する理由
- あなたはVPNサービスプロバイダーまたはシステム管理者である可能性があり、独自のVPNサーバーをセットアップする必要があります。
- VPNサービスプロバイダーのノーログポリシーを信頼していないため、セルフホストルートを使用します。
- VPNを使用して、ネットワークセキュリティポリシーを実装できます。たとえば、独自の電子メールサーバーを実行している場合、ファイアウォールにIPアドレスホワイトリストを作成することにより、VPNサーバーのIPアドレスからのみログインするようにユーザーに要求できます。したがって、メールサーバーはハッキング活動を防ぐために強化されています。
- VPNサーバーがどのように機能するかを知りたいだけかもしれません。
OpenConnectVPNサーバーの機能
- 軽量で高速。私のテストでは、OpenConnectVPNを使用してYouTube4Kビデオを視聴できます。私の国(中国)ではYouTubeがブロックされています。
- LinuxおよびほとんどのBSDサーバーで実行されます。
- CiscoAnyConnectクライアントと互換性があります
- Linux、macOS、Windows、およびOpenWRT用のOpenConnectクライアントソフトウェアがあります。 AndroidおよびiOSの場合、CiscoAnyConnectクライアントを使用できます。
- パスワード認証と証明書認証をサポートします
- RADIUSアカウンティングをサポートします。
- システム管理者向けのセットアップが簡単
- エンドユーザー向けの簡単なセットアッププロセス。
- OpenConnect VPNは、TCPポート443で動作するように構成でき、標準のTLSプロトコルを使用してネットワークトラフィックを暗号化します。標準のHTTPSプロトコルのように見えるため、ブロックされにくくなっています。
特に、他のVPNテクノロジーと比較して、エンドユーザーがOpenConnectVPNを使用するのが非常に簡単で便利であるという事実が気に入っています。 Linuxディストリビューションをコンピューターにインストールして、Webサイトのブロックをすばやく解除したり、IPアドレスを非表示にしたりする場合は常に、OpenConnectクライアントをインストールし、2行のコマンドでサーバーに接続します。
sudo apt install openconnect sudo openconnect -b vpn.mydomain.com
Fedora、RHEL、CentOS、Arch Linux、およびOpenSUSE用のOpenConnectVPNクライアントもあります。パッケージマネージャーを使用して簡単にインストールできます。
sudo dnf install openconnect sudo yum install openconnect sudo pacman -S openconnect
要件
このチュートリアルに従うには、ブロックされたWebサイトに自由にアクセスできるVPS(仮想プライベートサーバー)が必要です(国外またはインターネットフィルタリングシステム)。次の機能を備えたカマテラVPSをお勧めします:
- 30日間の無料トライアル。
- 月額4ドル(1 GB RAM)から
- 高性能KVMベースのVPS
- 米国、カナダ、英国、ドイツ、オランダ、香港、イスリアルを含む世界中の9つのデータセンター。
以下にリンクされているチュートリアルに従って、KamateraでLinuxVPSサーバーを作成してください。
- カマテラでLinuxVPSサーバーを作成する方法
Debian 11 Bullseyeを実行しているVPSを入手したら、以下の手順に従ってください。
OpenConnect VPNでHTTPSを有効にするには、ドメイン名も必要です。 NameCheapからドメイン名を登録したのは、価格が安く、whoisのプライバシー保護が一生無料になるからです。
ステップ1:Debian11BullseyeにOpenConnectVPNサーバーをインストールする
SSH経由でDebian11Bullseyeサーバーにログインします。次に、apt
を使用します ocserv
をインストールするには Debianリポジトリからのパッケージ。
sudo apt update sudo apt install ocserv
インストールすると、OpenConnectVPNサーバーが自動的に起動します。次のコマンドでステータスを確認できます:
systemctl status ocserv
サンプル出力:
● ocserv.service - OpenConnect SSL VPN server Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-09-25 21:35:29 EDT; 8s ago Docs: man:ocserv(8) Main PID: 52509 (ocserv-main) Tasks: 2 (limit: 1095) Memory: 2.0M CPU: 12ms CGroup: /system.slice/ocserv.service ├─52509 ocserv-main └─52519 ocserv-sm
ヒント:上記のコマンドがすぐに終了しない場合は、Q
を押すことができます ターミナルの制御を取り戻すためのキー。
実行されていない場合は、次のコマンドで開始できます:
sudo systemctl start ocserv
デフォルトでは、OpenConnect VPNサーバーはTCPおよびUDPポート443でリッスンします。ポート443がWebサーバーによって使用されている場合、VPNサーバーを起動できない可能性があります。 OpenConnectVPN構成ファイルでポートを変更する方法については後で説明します。
ステップ2:UFWファイアウォールをインストールする
Linuxで利用できるファイアウォールソリューションはいくつかあります。 iptablesファイアウォールのフロントエンドであり、管理しやすいUFWを使用します。次のコマンドを使用してDebianにUFWをインストールします:
sudo apt install ufw
まず、SSHトラフィックを許可する必要があります。
sudo ufw allow 22/tcp
次に、TCPポート80と443を開く必要があります。
sudo ufw allow 80,443/tcp
次に、UFWを有効にします。
sudo ufw enable
ステップ3:Let’s Encrypt Client(Certbot)をDebian 11BullseyeServerにインストールする
gnutls-bin
ocserv
と一緒にインストールされたパッケージ 独自のCAおよびサーバー証明書を作成するためのツールを提供しますが、 Let’s Encryptを取得してインストールします 証明書。 Let’s Encrypt証明書を使用する利点は、VPNクライアントソフトウェアによって無料でセットアップが簡単で信頼できることです。
次のコマンドを実行して、Let’s Encryptクライアント(certbot)をDebian11にインストールします。
sudo apt install certbot
バージョン番号を確認するには、
を実行しますcertbot --version
サンプル出力:
certbot 1.12.0
ステップ4:Let’sEncryptから信頼できるTLS証明書を取得する
standalone
を使用できます 、apache
、またはnginx
TLS証明書を取得するためのプラグイン。次のテキストでは、example.com
を置き換える必要があります 実際のドメイン名を使用します。
スタンドアロンプラグイン
Debian 11 Bullseyeサーバーで実行されているWebサーバーがなく、OpenConnect VPNサーバーでポート443を使用する場合は、スタンドアロンプラグインを使用してLet’sEncryptからTLS証明書を取得できます。 vpn.example.com
のDNSAレコードを設定します ドメインレジストラのウェブサイトで、次のコマンドを実行して証明書を取得します。
sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.example.com
説明:
-
certonly
:証明書を取得しますが、インストールしないでください。 --standalone
:スタンドアロンプラグインを使用して証明書を取得します-
--preferred-challenges http
:http-01チャレンジを実行して、ポート80を使用するドメインを検証します。 -
--agree-tos
:Let'sEncryptの利用規約に同意します。 --email
:メールアドレスはアカウントの登録と復旧に使用されます。-
-d
:ドメイン名を指定してください。
次のスクリーンショットからわかるように、私は正常に証明書を取得しました。
次のエラーが発生した場合は、すでにポート80を使用しているウェブサーバーがあることを意味します。そのため、ウェブルートプラグインを使用してTLS証明書を取得する必要があります。
Problem binding to port 80: Could not bind to IPv4 or IPv6.
webrootプラグインの使用
Debian 11 Bullseyeサーバーにポート80と443でリッスンするWebサーバーがある場合、webrootプラグインはほとんどすべてのWebサーバーで機能し、インストールする必要がないため、webrootプラグインを使用して証明書を取得することをお勧めします。 Webサーバーの証明書。
まず、vpn.example.comの仮想ホストを作成する必要があります。
Apache
Apacheを使用している場合 Webサーバーの場合は、CertbotApacheプラグインをインストールする必要があります。
sudo apt install python3-certbot-apache
/etc/apache2/sites-available/
の下に仮想ホストを作成します ディレクトリ。
sudo nano /etc/apache2/sites-available/vpn.example.com.conf
そして、次の行をファイルに貼り付けます。
<VirtualHost *:80> ServerName vpn.example.com DocumentRoot /var/www/ocserv </VirtualHost>
ファイルを保存して閉じます。次に、Webルートディレクトリを作成します。
sudo mkdir /var/www/ocserv
www-data(Apacheユーザー)をWebルートの所有者として設定します。
sudo chown www-data:www-data /var/www/ocserv -R
この仮想ホストを有効にします。
sudo a2ensite vpn.example.com
変更を有効にするためにApacheをリロードします。
sudo systemctl reload apache2
仮想ホストを作成して有効にしたら、次のコマンドを実行して、apacheプラグインを使用してLet’sEncrypt証明書を取得します。
sudo certbot certonly -a apache --agree-tos --email [email protected] -d vpn.example.com
Nginx
Nginxを使用している場合 Webサーバーの場合は、CertbotNginxプラグインをインストールする必要があります。
sudo apt install python3-certbot-nginx
/etc/nginx/conf.d/
の下に仮想ホストを作成します 。
sudo nano /etc/nginx/conf.d/vpn.example.com.conf
次の行をファイルに貼り付けます。
server { listen 80; server_name vpn.example.com; root /var/www/ocserv/; location ~ /.well-known/acme-challenge { allow all; } }
ファイルを保存して閉じます。次に、Webルートディレクトリを作成します。
sudo mkdir /var/www/ocserv
www-data(Nginxユーザー)をWebルートの所有者として設定します。
sudo chown www-data:www-data /var/www/ocserv -R
変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
仮想ホストを作成して有効にしたら、次のコマンドを実行して、Certbot Nginxプラグインを使用してLet’sEncrypt証明書を取得します。
sudo certbot certonly -a nginx --agree-tos --email [email protected] -d vpn.example.com
ステップ5:OpenConnectVPNサーバー構成ファイルを編集する
ocserv構成ファイルを編集します。
sudo nano /etc/ocserv/ocserv.conf
まず、パスワード認証を構成する必要があります。デフォルトでは、PAM(Pluggable Authentication Modules)によるパスワード認証が有効になっています。これにより、Debianシステムアカウントを使用してVPNクライアントからログインできます。この動作は、次の行をコメントアウトすることで無効にできます。
auth = "pam[gid-min=1000]"
ユーザーがシステムアカウントではなく別のVPNアカウントを使用してログインできるようにする場合は、次の行を追加して、パスワードファイルによるパスワード認証を有効にする必要があります。
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
ステップ6では、ocpasswd
を使用します /etc/ocserv/ocpasswd
を生成するためのツール ファイル。ユーザー名とエンコードされたパスワードのリストが含まれています。
注 :Ocservはクライアント証明書認証をサポートしていますが、Let’sEncryptはクライアント証明書を発行しません。証明書認証を有効にする場合は、クライアント証明書を発行するために独自のCAを設定する必要があります。
次に、ocservでTCPおよびUDPポート443(ポート443を使用するWebサーバーがあります)を使用したくない場合は、次の2行を見つけて、ポート番号を変更します。それ以外の場合はそのままにしておきます。
tcp-port = 443 udp-port = 443
次に、次の2行を見つけます。それらを変更する必要があります。
server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem server-key = /etc/ssl/private/ssl-cert-snakeoil.key
デフォルト設定をLet’sEncryptサーバー証明書とサーバーキーファイルのパスに置き換えます。
server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem
次に、クライアントの最大数を設定します。デフォルトは128です。無制限の場合はゼロに設定します。
max-clients = 128
ユーザーが同時にログインできるデバイスの数を設定します。デフォルトは2です。無制限の場合はゼロに設定します。
max-same-clients = 2
デフォルトでは、キープアライブパケットは300秒(5分)ごとに送信されます。 VPN接続のドロップアウトの可能性を減らすために、短い時間(30秒)を使用することを好みます。
keepalive = 30
次に、次の行を見つけます。 false
を変更します true
に MTUディスカバリーを有効にします。
try-mtu-discovery = false
次の2つのパラメータを使用して、クライアントが切断される前にアイドル状態を維持できる時間を設定できます。クライアントが無期限に接続されたままになるようにしたい場合は、これら2つのパラメーターをコメントアウトしてください。
idle-timeout=1200 mobile-idle-timeout=1800
その後、デフォルトのドメインをvpn.example.comに設定します。
default-domain = vpn.example.com
IPv4ネットワーク構成はデフォルトで以下のとおりです。ほとんどのホームルーターもIPv4ネットワーク範囲を192.168.1.0/24
に設定しているため、これにより問題が発生します。 。
ipv4-network = 192.168.1.0 ipv4-netmask = 255.255.255.0
別のプライベートIPアドレス範囲(10.10.10.0/24など)を使用してIPアドレスの衝突を回避できるため、ipv4-network
の値を変更します。 に
ipv4-network = 10.10.10.0
次の行のコメントを解除して、VPN経由ですべてのDNSクエリをトンネリングします。
tunnel-all-dns = true
デフォルトでは、ocservは8.8.8.8(Google)および1.1.1.1(Cloudflare)のパブリックDNSサーバーを使用します。これは問題ありません。
dns = 8.8.8.8 dns = 1.1.1.1
注 :VPNサービスプロバイダーの場合は、独自のDNSリゾルバーを実行することをお勧めします。同じサーバーで実行されているDNSリゾルバーがある場合は、DNSを次のように指定します
dns = 10.10.10.1
10.10.10.1は、VPNLAN内のOpenConnectVPNサーバーのIPアドレスです。これにより、VPNサーバーとDNSリゾルバー間のネットワーク遅延が排除されるため、クライアントのDNSルックアップが少し高速化されます。
次に、すべてのルートパラメータをコメントアウトします(次の行の先頭に#文字を追加します)。これにより、サーバーがクライアントのデフォルトゲートウェイとして設定されます。
#route = 10.0.0.0/8 #route = 172.16.0.0/12 #route = 192.168.0.0/16 #route = fd00::/8 #route = default #no-route = 192.168.5.0/255.255.255.0
ファイルを保存して閉じてから、VPNサーバーを再起動して変更を有効にします。
sudo systemctl restart ocserv
ステップ6:VPNアカウントの作成
次に、ocpasswdツールを使用してVPNアカウントを生成します。
sudo ocpasswd -c /etc/ocserv/ocpasswd username
ユーザーのパスワードを設定するように求められ、情報は/etc/ocserv/ocpasswd
に保存されます。 ファイル。パスワードをリセットするには、上記のコマンドをもう一度実行します。
ステップ7:LinuxカーネルでIP転送を有効にする
VPNサーバーがVPNクライアントとインターネット間でパケットをルーティングするには、IP転送を有効にする必要があります。 sysctl.conf
を編集します ファイル。
sudo nano /etc/sysctl.conf
このファイルの最後に次の行を追加します。
net.ipv4.ip_forward = 1
ファイルを保存して閉じます。次に、以下のコマンドで変更を適用します。 -p
オプションは、/etc/sysctl.conf
からsysctl設定をロードします ファイル。このコマンドは、システムを再起動しても変更を保持します。
sudo sysctl -p
ステップ8:ファイアウォールでIPマスカレードを構成する
サーバーがVPNクライアントの仮想ルーターになるように、サーバーファイアウォールでIPマスカレードを設定する必要があります。サーバーのメインネットワークインターフェースの名前を見つけます。
ip -c a
ご覧のとおり、eth0
という名前です。 私のDebianサーバーで。
IPマスカレードを設定するには、UFW設定ファイルにiptablesコマンドを追加する必要があります。
sudo nano /etc/ufw/before.rules
デフォルトでは、filter
にはいくつかのルールがあります テーブル。このファイルの最後に次の行を追加します。 Nanoテキストエディタでは、Ctrl+W
を押すと、ファイルの最後に移動できます。 、次にCtrl+V
を押します 。
# NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE # End each table with the 'COMMIT' line or these rules won't be processed COMMIT
eth0
を置き換えます 独自のネットワークインターフェイス名を使用します。
上記の行が追加されます( -A ) POSTROOUTINGの最後までのルール natのチェーン テーブル。仮想プライベートネットワークをインターネットにリンクします。また、ネットワークを外界から隠します。そのため、インターネットはVPNサーバーのIPしか見ることができませんが、ホームルーターがプライベートホームネットワークを隠すように、VPNクライアントのIPを見ることができません。
デフォルトでは、UFWはパケット転送を禁止しています。プライベートネットワークの転送を許可できます。 ufw-before-forward
を見つけます このファイルにチェーンを追加し、次の3行を追加します。これは、送信元IPまたは宛先IPが10.10.10.0/24
にある場合にパケット転送を受け入れます。 範囲。
# allow forwarding for trusted network -A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT -A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
ファイルを保存して閉じます。次にUFWを再起動します。
sudo systemctl restart ufw
ここで、次のコマンドを使用して、NATテーブルのPOSTROUTINGチェーンにルールをリストするとします。
sudo iptables -t nat -L POSTROUTING
仮面舞踏会のルールを見ることができます。
UFWがファイアウォールルールを処理するのに時間がかかる場合があります。マスカレードルールが表示されない場合は、UFWを再起動します(sudo systemctl restart ufw
。
ステップ9:ファイアウォールでポート443を開く
次のコマンドを実行して、TCPおよびUDPポート443を開きます。ocservに別のポートを構成した場合は、443を構成済みのポートに変更します。
sudo ufw allow 443/tcp sudo ufw allow 443/udp
これで、OpenConnectVPNサーバーはクライアント接続を受け入れる準備ができました。
ローカルDNSリゾルバーを実行している場合、VPNクライアントのDNSサーバーとして10.10.10.1を指定した場合は、VPNクライアントが次のUFWルールを使用してポート53に接続できるようにする必要があります。
sudo ufw insert 1 allow in from 10.10.10.0/24
また、VPNクライアントが以下のような再帰DNSクエリを送信できるように、BINDDNSサーバーの構成を編集する必要があります。
allow-recursion { 127.0.0.1; 10.10.10.0/24; };
WindowsおよびmacOS用のOpenConnectGUIクライアント
OpenConnectGUIGithubページからダウンロードできます。
Debian 11BullseyeDesktopにOpenConnectVPNクライアントをインストールして使用する方法
次のコマンドを実行して、OpenConnectVPNコマンドラインクライアントをDebianデスクトップにインストールします。
sudo apt install openconnect
以下のようにコマンドラインからVPNに接続できます。 -b
フラグは、接続が確立された後、バックグラウンドで実行されます。
sudo openconnect -b vpn.example.com
デフォルトでは、openconnectクライアントはサーバーのポート443に接続します。サーバーに別のポートを構成した場合は、ポート番号を追加できます。
sudo openconnect -b vpn.example.com:port-number
VPNユーザー名とパスワードの入力を求められます。接続が正常に確立されると、次のメッセージが表示されます。
Got CONNECT response: HTTP/1.1 200 CONNECTED CSTP connected. DPD 60, Keepalive 300 Connected as 10.10.10.139, using SSL + LZ4, with DTLS + LZ4 in progress Continuing in background; pid 17050
接続に失敗した場合は、ocservログをチェックして理由を確認できます。 (パスワードを正しく入力しなかった可能性があります。)
sudo journaltcl -eu ocserv
接続を停止するには、次のコマンドを実行します:
sudo pkill openconnect
クライアントを非対話的に実行するには、次の構文を使用します。
echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin
Network Managerを使用してVPN接続を管理する場合は、これらのパッケージをインストールする必要があります。
sudo apt install network-manager-openconnect network-manager-openconnect-gnome
VPNサーバーに正常に接続しても、パブリックIPアドレスが変更されない場合は、IP転送またはIPマスカレードが機能していないことが原因です。 iptablesコマンドにタイプミスがあったため、コンピューターがインターネットを閲覧できなくなったことがあります。
システム起動時の自動接続
OpenConnect VPNクライアントが起動時にサーバーに自動的に接続できるようにするために、systemdサービスユニットを作成できます。
sudo nano /etc/systemd/system/openconnect.service
次の行をファイルに追加します。赤いテキストを置き換えます。
[Unit] Description=OpenConnect VPN Client After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin' KillSignal=SIGINT Restart=always RestartSec=2 [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。次に、このサービスを有効にして、起動時に開始されるようにします。
sudo systemctl enable openconnect.service
ファイルの内容の説明:
-
After=network-online.target
およびWants=network-online.target
ネットワークが稼働した後にこのサービスを実行します。 - 実際には、このサービスはネットワークが起動する前でも実行できます。
Restart=always
を追加します およびRestartSec=2
このサービスが失敗した場合、2秒後にこのサービスを再起動します。 - Systemdはパイプのリダイレクトを認識しません。したがって、
ExecStart
では ディレクティブでは、コマンドを一重引用符で囲み、Bashシェルで実行します。 - OpenConnect VPNクライアントはバックグラウンドで実行されるsystemdサービスとして実行されるため、
-b
を追加する必要はありません。openconnect
へのフラグ コマンド。 -
KillSignal
ディレクティブはSystemdにSIGINT
を送信するように指示しますsystemctl stop openconnect
のシグナル コマンドが発行されます。これにより、セッションがログオフされ、DNSサーバー設定とLinuxカーネルルーティングテーブルが復元され、クリーンシャットダウンが実行されます。
このSystemdサービスをすぐに開始するには、
を実行しますsudo systemctl start openconnect
このSystemdサービスを停止するには、
を実行しますsudo systemctl stop openconnect
自動-VPN接続が切断されたときに再起動
さまざまな理由でVPN接続が切断されることがありました。 VPNクライアントを自動的に再起動するには、rootユーザーのcrontabファイルを編集します。
sudo crontab -e
このファイルの最後に次の行を追加します。
* * * * * ping -c 10 10.10.10.1 > /dev/null || systemctl restart openconnect
このCronジョブは毎分実行され、VPNクライアントがVPNサーバーのプライベートIPアドレス(10.10.10.1)にpingできるかどうかを確認します。 pingが失敗した場合は、右側のコマンドが実行され、VPNクライアントが再起動されます。 ||
BashのOR演算子です。左側のコマンドがエラーを返した場合にのみ、右側のコマンドを実行します。
ファイルを保存して閉じます。
速度
OpenConnectVPNはかなり高速です。 YouTubeで4k動画を視聴するために使用できます。ご覧のとおり、接続速度は 63356 Kbpsです。 、これは 61 Mbit / sに変換されます 。
そして、これがspeedtest.netでのテスト結果です。
速度の最適化
OpenConnectは、デフォルトでTLS over UDPプロトコル(DTLS)を使用して高速化を実現しますが、UDPは信頼性の高い伝送を提供できません。 TCPはUDPよりも低速ですが、信頼性の高い伝送を提供できます。最適化のヒントの1つは、DTLSを無効にし、標準TLS(TCP経由)を使用してから、TCPBBRを有効にしてTCP速度を上げることです。
DTLSを無効にするには、ocserv構成ファイルの次の行をコメントアウトします(先頭に#記号を追加します)。
udp-port = 443
ファイルを保存して閉じます。次に、ocservサービスを再起動します。
sudo systemctl restart ocserv.service
TCP BBRを有効にするには、次のチュートリアルを確認してください。 ocservでDTLSを無効にする必要があることに注意してください。無効にしないと、TCPBBRが機能しません。
- TCPBBRを有効にしてDebianネットワークのパフォーマンスを簡単に向上させる方法
私のテストでは、TCPBBRが有効になっている標準のTLSはDTLSの2倍高速です。
速度に影響を与えるもう1つの非常に重要な要素は、ローカルコンピューターとVPNサーバー間の接続がどれだけ良好かということです。中東に住んでいて、VPNサーバーが米国にある場合、速度は遅くなります。お住まいの地域に近いデータセンターを選択してください。
Let'sEncrypt証明書の自動更新
rootユーザーのcrontabファイルを編集します。
sudo crontab -e
ファイルの最後に次の行を追加して、Cronジョブを毎日実行します。証明書が30日で期限切れになる場合、certbotは証明書の更新を試みます。 VPNサーバーが新しい証明書とキーファイルを取得するには、ocservサービスを再起動する必要があります。
@daily certbot renew --quiet && systemctl restart ocserv
トラブルシューティングのヒント
OpenVZ VPSを使用している場合は、VPSコントロールパネルでTUN仮想ネットワークデバイスが有効になっていることを確認してください。 (Vultr VPSを使用している場合は、KVMベースのVPSを使用しているため、これについて心配する必要はありません。)
問題が発生した場合は、OpenConnectVPNサーバーのログを確認してください。
sudo journalctl -eu ocserv.service
ポート443を別のポートに変更すると、中国のグレートファイアウォールがこのVPN接続をブロックすることがわかりました。
ocservが/etc/ocserv/ocserv.conf
を読み込めないと言った場合 ファイル、ocservを停止できます。
sudo systemctl stop ocserv
次に、デバッグを有効にしてフォアグラウンドで実行します。
sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10
次に、出力により、ocservが機能しない理由の手がかりが得られる可能性があります。
OpenConnectVPNサーバーとWebサーバーが同時にポート443を使用するようにする
次の記事をお読みください:
- HAProxyを使用して同じボックスでOpenConnectVPNサーバーとApache/Nginxを実行する
ocservでTLS1.0とTLS1.1を無効にする方法
PCI評議会は2018年6月30日にTLS1.0を廃止し、メインストリームのWebブラウザは2020年にTLS1.0とTLS1.1を無効にする予定です。VPNサーバーでも同じことを行う必要があります。メインの構成ファイルを編集します。
sudo nano /etc/ocserv/ocserv.conf
次の行を見つけます:
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"
OpenConnectVPNサーバーでTLS1.0およびTLS1.1を無効にするには、-VERS-TLS1.0
を追加するだけです。 および-VERS-TLS1.1
行に。
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1"
ファイルを保存して閉じます。次に、ocservを再起動します。
sudo systemctl restart ocserv
現在、ocservはTLS1.3とTLS1.2のみを受け入れます。 ocservでのTLSパラメータの設定の詳細については、GnuTLS優先度文字列を参照してください。
OpenConnectVPNサーバーでTLS1.0がサポートされているかどうかを確認するには、次のコマンドを実行します。
openssl s_client -connect vpn.your-domain.com:443 -tls1
そしてTLS1.1を確認してください
openssl s_client -connect vpn.your-domain.com:443 -tls1_1
出力に次のメッセージが表示された場合は、TLSバージョンがサポートされていないことを意味します。
New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported
ユーザーごとまたはグループごとの構成
Ocservでは、ユーザーごとおよびグループごとの構成が可能です。この機能を有効にするには、/etc/ocserv/ocserv.conf
の次の2行のコメントを解除します ファイル。
config-per-user = /etc/ocserv/config-per-user/ config-per-group = /etc/ocserv/config-per-group/
ファイルを保存して閉じます。次に、ユーザーごとおよびグループごとの構成ディレクトリを作成します。
sudo mkdir /etc/ocserv/config-per-user/ /etc/ocserv/config-per-group/
次に、これら2つのディレクトリの下にファイルを作成できます。たとえば、user1
を作成します user1
のカスタム構成を許可するファイル 。
sudo nano /etc/ocserv/config-per-user/user1
group1
を作成することもできます group1
という名前のグループのカスタム構成を許可するファイル 。
sudo nano /etc/ocserv/config-per-group/group1
以下のようなものをファイルに追加できます。
route = 10.10.10.0/255.255.255.0
これは、user1
の後を意味します このVPNサーバーに接続し、10.10.10.0/24
へのトラフィックのみ ネットワークはVPNサーバー経由でルーティングされます。他のIPアドレスへのトラフィックは、元のゲートウェイを介してルーティングされます。これはスプリットトンネリングと呼ばれ、次の場合に役立ちます。
- VPNクライアントが内部リソースを参照できるようにし、すべてのトラフィックがVPNサーバーを通過しないようにする必要があります。
- クラウドサーバー用のプライベートネットワークを構築する必要があります。
- クライアントは複数のVPNに接続する必要があります。 1つのVPNはスプリットトンネリングを使用し、もう1つのVPNはフルトンネルを使用できます。
ファイルを保存して閉じます。 ocserv
を再起動します 変更を有効にするため。