GNU/Linux >> Linux の 問題 >  >> Debian

Debian 10BusterでOpenConnectVPNサーバー(ocserv)をセットアップする

このチュートリアルでは、Debian10BusterにOpenConnectVPNサーバーをインストールして独自の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アカウンティングをサポートします。
  • セットアップが簡単

特に、他の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 10バスターを実行しているVPSを入手したら、以下の手順に従ってください。

OpenConnect VPNでHTTPSを有効にするには、ドメイン名も必要です。 NameCheapからドメイン名を登録したのは、価格が安く、whoisのプライバシー保護が一生無料になるからです。

ステップ1:Debian10BusterにOpenConnectVPNServerをインストールする

SSH経由でDebian10Busterサーバーにログインします。次に、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 Thu 2017-11-30 05:45:07 UTC; 11s ago
     Docs: man:ocserv(8)
 Main PID: 19235 (ocserv-main)
   CGroup: /system.slice/ocserv.service
           ├─19235 ocserv-main                                                  
           └─19242 ocserv-secm 

ヒント:上記のコマンドがすぐに終了しない場合は、Qキーを押して端末の制御を取り戻すことができます。

実行されていない場合は、次のコマンドで開始できます:

sudo systemctl start ocserv

デフォルトでは、OpenConnect VPNサーバーはTCPおよびUDPポート443でリッスンします。Webサーバーで使用されている場合、VPNサーバーを起動できません。 OpenConnectVPN構成ファイルでポートを変更する方法については後で説明します。

サーバーでファイアウォールが実行されている場合は、ポート80と443を開く必要があります。たとえば、UFWを使用している場合は、次のコマンドを実行します。

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

ステップ2:Let’s Encrypt Client(Certbot)をDebian10バスターサーバーにインストールする

gnutls-bin ocservと一緒にインストールされたパッケージ 独自のCAおよびサーバー証明書を作成するためのツールを提供しますが、Let’sEncrypt証明書を取得してインストールします。 Let’s Encrypt証明書を使用する利点は、VPNクライアントソフトウェアによって無料でセットアップが簡単で信頼できることです。

次のコマンドを実行して、Let’s Encryptクライアント(certbot)をDebian10にインストールします。

sudo apt install certbot

バージョン番号を確認するには、

を実行します
certbot --version

サンプル出力:

certbot 0.31.0

ステップ3:Let’sEncryptから信頼できるTLS証明書を取得する

standaloneの使用をお勧めします またはwebroot TLS証明書を取得するためのプラグイン。

スタンドアロンプ​​ラグイン

Debian 10 Busterサーバーで実行されているWebサーバーがなく、OpenConnect VPNサーバーでポート443を使用する場合は、スタンドアロンプ​​ラグインを使用してLet’sEncryptからTLS証明書を取得できます。ドメインレジストラのウェブサイトでvpn.yourdomain.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 :ドメイン名を指定してください。

次のスクリーンショットからわかるように、私は正常に証明書を取得しました。

webrootプラグインの使用

Debian 10バスターサーバーにポート80と443でリッスンするWebサーバーがある場合、webrootプラグインはほとんどすべてのWebサーバーで機能し、インストールする必要がないため、webrootプラグインを使用して証明書を取得することをお勧めします。 Webサーバーの証明書。

まず、vpn.example.comの仮想ホストを作成する必要があります。

Apache

Apache Webサーバーを使用している場合は、/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

仮想ホストを作成して有効にしたら、次のコマンドを実行して、webrootプラグインを使用してLet’sEncrypt証明書を取得します。

sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/

Nginx

Nginx Webサーバーを使用している場合は、/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

仮想ホストを作成して有効にしたら、次のコマンドを実行して、webrootプラグインを使用してLet’sEncrypt証明書を取得します。

sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/

ステップ4: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]"

この構成ファイルの編集が終了したら、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

DNSリゾルバアドレスを変更します。 GoogleのパブリックDNSサーバーを使用できます。

dns = 8.8.8.8
dns = 8.8.4.4

またはCloudflareのパブリックDNSサーバー。

dns = 1.1.1.1
dns = 1.0.0.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

ステップ5:VPNアカウントの作成

次に、ocpasswdツールを使用してVPNアカウントを生成します。

sudo ocpasswd -c /etc/ocserv/ocpasswd username

ユーザーのパスワードを設定するように求められ、情報は/etc/ocserv/ocpasswdに保存されます。 ファイル。パスワードをリセットするには、上記のコマンドをもう一度実行します。

ステップ6: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

ステップ7:ファイアウォールでIPマスカレードを構成する

サーバーがVPNクライアントの仮想ルーターになるように、サーバーファイアウォールでIPマスカレードを設定する必要があります。 iptablesファイアウォールのフロントエンドであるUFWを使用します。次のコマンドを使用してDebianにUFWをインストールします:

sudo apt install ufw

まず、SSHトラフィックを許可する必要があります。

sudo ufw allow 22/tcp

次に、サーバーのメインネットワークインターフェースの名前を見つけます。

ip addr

ご覧のとおり、ens3という名前です。 私のDebianサーバーで。

IPマスカレードを設定するには、UFW設定ファイルにiptablesコマンドを追加する必要があります。

sudo nano /etc/ufw/before.rules

デフォルトでは、filterにはいくつかのルールがあります テーブル。このファイルの最後に次の行を追加します。 ens3を置き換えます 独自のネットワークインターフェイス名を使用します。

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Nanoテキストエディタでは、Ctrl+Wを押すと、ファイルの最後に移動できます。 、次にCtrl+Vを押します 。

上記の行が追加されます( -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 ufw enable

以前にUFWを有効にしたことがある場合は、systemctlを使用してUFWを再起動できます。

sudo systemctl restart ufw

ここで、次のコマンドを使用して、NATテーブルのPOSTROUTINGチェーンにルールをリストするとします。

sudo iptables -t nat -L POSTROUTING

仮面舞踏会のルールを見ることができます。

UFWがファイアウォールルールを処理するのに時間がかかる場合があります。マスカレードルールが表示されない場合は、UFWを再起動します(sudo systemctl restart ufw

ステップ8:ファイアウォールでポート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; };

Debian 10BusterDesktopに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演算子です。左側のコマンドがエラーを返した場合にのみ、右側のコマンドを実行します。

ファイルを保存して閉じます。

WindowsおよびMacOS用のOpenConnectGUIクライアント

OpenConnectGUIGithubページからダウンロードできます。

速度

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仮想ネットワークデバイスが有効になっていることを確認してください。 (Kamatera 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/
sudo mkdir /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を再起動します 変更を有効にするため。

ocservの複数のインスタンスを実行する方法

1つのocservプロセスは、サーバー上の1つのTCPまたはUDPポートにのみバインドできます。 ocservが複数のTCPまたはUDPポートにバインドできるようにする場合は、複数のocservプロセスを実行する必要があります。とても簡単です。 /lib/systemd/system/ocserv.serviceをコピーします 新しいファイルに。

sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service

次に、新しいファイルを編集します。

sudo nano /etc/systemd/system/ocserv2.service

変更

/etc/ocserv/ocserv.conf

/etc/ocserv/ocserv2.conf

ファイルを保存して閉じます。次に、/etc/ocserv/ocserv2.confを編集できます ファイルを作成し、カスタム構成を追加します。完了したら、2番目のocservサービスを開始します。

sudo systemctl start ocserv2

Debian
  1. Debian10バスターで静的IPアドレスを設定する方法

  2. Debian11サーバーでSFTPサーバーをセットアップする方法

  3. MySQLサーバーをDebian10Busterにインストールする方法

  1. Debian10BusterでSambaサーバーをセットアップする方法

  2. Debian10BusterでLAMPサーバーをセットアップする方法

  3. Debian10BusterでNFSサーバーをセットアップする方法

  1. Debian10BusterでLEMPサーバーをセットアップする方法

  2. Debian10BusterでRVMを設定する方法

  3. Debian10でWireGuardVPNを設定する方法