知識ベース Profitserver サービスの操作方法の簡単な説明
メイン 知識ベース Linux での VPN サーバーのセットアップ: PPTP または OpenVPN?

Linux での VPN サーバーのセットアップ: PPTP または OpenVPN?


最近では、VPN 技術が普及しつつあります。一般ユーザーは、VPN を使用して安全にインターネットにアクセスします。また、ローカルでブロックされている Web サイトやサービスを回避し、外部の悪意のある行為から保護するのにも役立ちます。VPN サーバーに接続すると、コンピューターとサーバーの間に外部からアクセスできない安全なトンネルが存在するため、VPN サーバーがインターネット アクセス ポイントになります。無料のものも有料のものも含め、VPN サービスはたくさんありますが、何らかの理由でうまく機能しない場合は、いつでも独自の VPN サーバーを構成できます。

独自の VPN を運用するには、VPS サーバーをレンタルする必要があります。VPN 接続を作成できるソフトウェアはいくつかあり、それぞれサポートされているオペレーティングシステムや使用されるアルゴリズムが異なります。ここでは、VPN サーバーをセットアップするための 2 つの独立したアプローチを見ていきます。1 つ目は、すでに時代遅れで安全ではないと考えられている PPTP プロトコルに基づいたものですが、設定は非常に簡単です。もう 1 つは、最新の安全なソフトウェアである OpenVPN を使用しますが、サードパーティのクライアント アプリケーションのインストールと、より詳細なセットアップ プロセスが必要です。

テスト環境では、Ubuntu Server 18.04 を搭載した仮想サーバーを使用します。ファイアウォールの設定については別の記事で説明するため、サーバー上ではファイアウォールをオフにします。Windows 10 でのセットアップ プロセスについて説明します。

準備

どの VPN サーバーを選択しても、インターネット アクセスはオペレーティング システムの統合手段によって設定されます。外部サービス インターフェイスを介してインターネット アクセスを開くには、インターフェイス間のパケット転送を許可し、ネットワーク アドレス変換を構成する必要があります。

パケット転送を有効にするには、 「/etc/sysctl.conf」ファイルを開き、「net.ipv4.ip_forward」パラメータの値を1に変更します。

VPN設定のパケット転送をオンにする

コンピュータを再起動せずに変更を適用するには、次のコマンドを実行します。

sudo sysctl -p /etc/sysctl.conf

ネットワークアドレス変換はiptablesを使用して設定します。まず、 「ip link show」コマンドを実行して外部ネットワークインターフェースの名前を確認してください。次のステップで必要になります。ここでは「ens3」という名前です。

IPリンクショー

すべてのローカル ネットワーク ノードの外部インターフェイスでネットワーク アドレス変換を有効にします。

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

サーバーのインターフェースの実際の名前を指定する必要があることに注意してください。これは、当社のものとは異なる場合があります。

デフォルトでは、iptablesによって作成されたすべてのルールは、サーバーの再起動後にリセットされます。これを防ぐには、「iptables-persistent」ユーティリティを使用してください。以下のパッケージをインストールしてください。

sudo apt install iptables-persistent

インストールプロセス中に、現在のiptablesルールを保存するかどうかを尋ねる設定ウィンドウが表示されます。ルールは既に定義されているため、確認して「はい」を2回クリックしてください。これで、サーバー再起動後にルールが自動的に適用されます。

アドレス変換をオンにする

PPTPサーバー

サーバー構成

パケットをインストールします:

sudo apt install pptpd

インストールが完了したら、任意のテキストエディタで「/etc/pptpd.conf」ファイルを開き、以下のように編集してください。

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

その後、「/etc/ppp/pptpd-options」ファイルを編集してください。ほとんどのパラメータはデフォルトで設定されています。

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

次の段階では、クライアント接続用のレコードを作成する必要があります。たとえば、パスワード「1」を持つユーザー「vpnuser」を追加し、そのユーザーに動的アドレス指定を許可したいとします。 「/etc/ppp/chap-secrets」ファイルを開き、ファイルの末尾にユーザーのパラメータを含む次の行を追加します。

vpnuser pptpd 1 *

「pptpd」の値は、 「pptpd-options」ファイルで指定したサービス名です。 「*」の代わりに固定IPアドレスを指定することもできます。結果として、「chap-secrets」ファイルは次のようになります。

VPNサーバーのセットアップ

設定を適用するには、pptpdサービスをリセットし、自動読み込みに追加してください。

sudo systemctl restart pptpd
sudo systemctl enable pptpd

サーバーの設定が完了しました。

クライアント構成

「スタート」「設定」「ネットワークとインターネット」「VPN」を開き、 「VPN接続を追加する」をクリックします。

VPN接続用のクライアントの設定

開いたウィンドウに接続パラメータを入力し、「保存」をクリックしてください。

  • VPNプロバイダー:「Windows(組み込み)」
  • 接続名: 「vpn_connect」(任意の名前を選択できます)
  • サーバー名またはアドレス: (サーバーの外部 IP アドレスを指定)
  • VPNタイプ:「自動」
  • サインイン情報の種類: 「ユーザー名とパスワード」
  • ユーザー名: ユーザ (サーバー上の「chap-secrets」ファイルに指定された名前)
  • パスワード: 1 (「chap-secrets」ファイルの場合)

パラメータを保存すると、ウィンドウに新しいVPN接続が表示されます。接続を左クリックして「接続」を選択してください。接続が成功すると、「接続済み」と表示されます。

VPN接続の追加

オプションには、クライアントとサーバーの内部アドレスが表示されます。「宛先アドレス」フィールドには、外部サーバーのアドレスが表示されます。

自分でVPNサーバーを設定する方法

接続されると、サーバーの内部IPアドレス(この場合は172.16.0.1)が、すべての送信パケットのデフォルトゲートウェイになります。

外部IPアドレスを確認する

任意のオンライン サービスを使用すると、コンピューターの外部 IP アドレスが VPN サーバーの IP アドレスと同じになっていることを確認できます。

OpenVPNサーバー

サーバー構成

今後の設定ではルート アクセスが必要になるため、現在のユーザーの権限レベルを上げましょう。

sudo -s

必要なパッケージをすべてインストールしてください。暗号化キーを管理するために「Easy-RSA」パッケージが必要になります。

apt install openvpn easy-rsa iptables-persistent

UDP プロトコル経由でポート 1194 への着信接続を許可し、iptables ルールを適用します。

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

「Easy-RSA」パッケージからコピーしたファイルを含むディレクトリを作成し、そこに移動します。

make-cadir ~/openvpn

cd ~/openvpn

公開鍵インフラストラクチャ (PKI) を生成します。

./easyrsa init-pki

証明機関 (CA) ルート証明書を生成します。

./easyrsa build-ca

作成プロセス中に、パスワードの設定と記憶を求められます。また、質問に答え、鍵の所有者に関する情報を入力する必要があります。角括弧で囲まれたデフォルト値のままでも構いません。入力を確定するには、「Enter」キーを押してください。

秘密鍵と証明書リクエストを生成します。引数として任意の名前を指定します。今回の場合は「vpn-server」です。

./easyrsa gen-req vpn-server nopass

共通名の値はデフォルトのままにしておきます。

生成されたサーバー証明書要求に署名します。

./easyrsa sign-req server vpn-server

この手順では、「はい」と答えて署名を確認し、ルート証明書の生成中に作成されたパスワードを入力します。

Diffie-Hellmanパラメータを生成します。これらのパラメータは、サーバーとクライアント間の安全な鍵交換に使用されます。

./easyrsa gen-dh

必要なファイルはすべて生成されました。OpenVPNの作業ディレクトリに「keys」フォルダを作成してキーを保存し、作成したファイルをそこにコピーしましょう。

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

NATを設定するには iptables ルール。名前の付いたファイルを作成します nat 編集用に開いて /etc/openvpn/ ディレクトリにあります。

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

ファイルを保存し、実行可能にします。

sudo chmod 755 /etc/openvpn/nat

サーバー構成テンプレートをコピーします。

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

ファイル「/etc/openvpn/server.conf」を開いて編集し、以下の行が含まれていることを確認し、必要に応じて編集してください。

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

サーバー上でトラフィック転送を有効にします。

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

設定を適用するには OpenVPN を起動します。

systemctl restart openvpn@server

サーバーの設定が完了しました。

クライアント構成

OpenVPNの公式サイト「https://openvpn.net 」にアクセスし、 「コミュニティ」セクションに移動してください。

「https://openvpn.net」、「コミュニティ」を参照してください。

下にスクロールして、お使いのオペレーティングシステムのバージョンに合ったインストーラーをダウンロードしてください。今回の場合はWindows 11 ARM64です。

Сролистываем вниз и скачиваем инсталлятор для своей версии операционной системы. Windows 11 ARM64 に対応しています。

すべてのパラメータをデフォルトのままにしてアプリケーションをインストールします。

次の段階では、サーバー上で次のファイルを準備し、クライアント コンピューターに転送する必要があります。

  • 公開鍵と秘密鍵。
  • 認証センターキーのコピー。
  • 設定ファイルテンプレート。

サーバーに接続し、権限を昇格して、作成したディレクトリに移動します "~/openvpn".

sudo -s

cd ~/openvpn

クライアント用の秘密鍵と証明書要求を生成します。引数として任意の名前を指定します。今回の場合は「client1」です。

./easyrsa gen-req client1 nopass

ルート証明書の作成時に設定したパスワードを入力し、共通名の値はデフォルトのままにします。

Вводим пароль, который мы устанавливали при создании корневого сертификата и оставляем значение 通称 по умолчанию。

生成されたクライアント証明書要求に署名します。

./easyrsa sign-req client client1

この手順では、「はい」と答えて署名を確認し、ルート証明書の生成中に作成されたパスワードを入力します。

「はい」 для подтверждения подписи, после чего вводим пароль, который был создан при создании корневого сертификата。

便宜上、ホーム ディレクトリに「client1」という名前のフォルダーを作成し、クライアント コンピューターに転送するすべてのファイルをそこにコピーします。

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

クライアント設定ファイルテンプレートを同じディレクトリにコピーします。コピー時にファイル拡張子を「.ovpn」に変更してください。

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

クライアントに配布できるように、ディレクトリ「~/client1/」とその中のすべてのファイルの所有者を変更します。ここでは「mihail」を所有者としましょう。

chown -R mihail:mihail ~/client1

クライアントコンピュータにアクセスし、 「~/client1/」フォルダの内容をコピーしてください。これは、Puttyに付属する「PSCP」ユーティリティを使用して実行できます。

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

キーファイル「ca.crt」「client1.crt」「client1.key」は任意の場所に保存できます。この例では、「c:\Program Files\OpenVPN\keys」フォルダに保存し、設定ファイル「client.ovpn」を「c:\Program Files\OpenVPN\config」ディレクトリに移動しています。

それでは、クライアントの設定に取り掛かりましょう。 「c:\Program Files\OpenVPN\config\client.ovpn」ファイルをテキストエディタで開き、以下の行を編集してください。

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

残りはそのままにしておきます。

ファイルを保存し、クライアントアプリケーション「OpenVPN GUI」を起動します。

VPN設定が完了しました

タスクバーにあるアプリのアイコンを右クリックし、「接続」を選択します。接続が成功すると、アイコンが緑色に変わります。

任意のオンライン サービスを使用して、パブリック IP アドレスが変更され、サーバーの IP アドレスと同じになっていることを確認します。

❮ 前の記事 FTPサーバーのセットアップ
次の記事❯ サーバーにWireguard VPNを設定する方法

VPSについてお問い合わせください

私たちは昼夜を問わずいつでもお客様のご質問にお答えする準備ができています。