このトピックでは、Ubuntu を実行する Elastic Compute Service (ECS) インスタンスに Point-to-Point トンネリングプロトコル (PPTP) VPN をセットアップする方法について説明します。
前提条件
このトピックは、Ubuntu 18.04、Ubuntu 20.04、および Ubuntu 22.04 に適用されます。
このトピックでは、Ubuntu 18.04 を実行する ECS インスタンスを例として使用します。ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
インスタンスのセキュリティグループにインバウンドルールを追加して、VPN クライアントのパブリック IP アドレスからのポート 1723 および Generic Routing Encapsulation (GRE) プロトコルを介したトラフィックを許可します。詳細については、「セキュリティグループルールの追加」をご参照ください。
VPN サーバーの構成
PPTP サーバーとして機能する ECS インスタンスにログインし、Ubuntu で PPTP サーバーを構成します。ECS インスタンスにリモートでログインする方法の詳細については、「Linux インスタンスへの接続」をご参照ください。
PPTP サービスの構成
次のコマンドを実行して pptpd をインストールします。
sudo apt-get update sudo apt-get -y install pptpdpptpd ファイルを構成します。このファイルは、PPTP サーバーに接続するクライアントに IP アドレス範囲を割り当てます。これにより、接続されている各デバイスに一意の IP アドレスが割り当てられます。
sudo vim /etc/pptpd.confコマンドを実行し、次の構成を追加します。localip 192.168.0.1 remoteip 192.168.0.234-238説明localip は、クライアントが接続する VPN サーバーのアドレスを指定します。これをサーバーのプライベート IP アドレスに設定します。必要に応じて localip の値を調整します。
remoteip は、PPTP クライアントに割り当てる IP アドレスの範囲を指定します。IP アドレスの競合を避けるため、他のデバイスがこれらの IP アドレスを使用しないようにしてください。必要に応じて remoteip の値を調整します。
構成を追加すると、ファイルの内容は次の図のようになります。

DNS を構成します。
sudo vim /etc/ppp/pptpd-optionsコマンドを実行し、次の構成を追加します。ms-dns 223.5.5.5 ms-dns 223.6.6.6説明IP アドレス 223.5.5.5 と 223.6.6.6 は Alibaba Cloud パブリック DNS サーバーです。必要に応じて、他のパブリック DNS サーバーに変更できます。
構成を追加すると、ファイルの内容は次の図のようになります。

ユーザーを作成します。このユーザーは、PPTP サーバーに接続する際の本人確認に使用されます。これにより、認証されたユーザーのみがダイヤルアップまたはネットワーク接続を介してシステムにアクセスできるようになります。
sudo vim /etc/ppp/chap-secretsコマンドを実行して、pptpd のユーザー名とパスワードを追加します。必要に応じて、username pptpd password IP_address形式でアカウントを追加できます。各項目はスペースで区切り、1 行につき 1 つのユーザーアカウントのみを追加してください。説明例: test pptpd 123456 *。アスタリスク (*) はすべての IP アドレスを示します。
test pptpd 123456 *構成を追加すると、ファイルの内容は次の図のようになります。

IP 転送の有効化
次のコマンドを実行して転送を有効にします。
sudo echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf次のコマンドを実行してシステムパラメーターをロードします。
sudo sysctl -p "/etc/sysctl.conf"
iptables ファイアウォール転送ルールの構成
Ubuntu では、iptables を使用して直接実行されるルールは、デフォルトで一時的なものであるため、ECS インスタンスの再起動後に失われます。iptables-persistent パッケージを使用して iptables ルールを保存し、システム起動時に自動的にロードします。
次のコマンドを実行して
iptables-persistentをインストールします。sudo apt-get install iptables-persistent -yインストール中に、現在のルールを保存するかどうか尋ねられます。
yesを選択します。iptables ルールを追加します。
sudo iptables -A INPUT -p gre -j ACCEPT sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT sudo iptables -t nat -A POSTROUTING -s 192.168.0.234/29 -o eth0 -j SNAT --to-source XXX.XXX.XXX.XXX説明192.168.0.234/29は、VPN クライアントのプライベート IP アドレス範囲を指定します。必要に応じて変更してください。XXX.XXX.XXX.XXX は、ご利用の ECS インスタンスのパブリック IP アドレスです。iptables ルールを保存します。
sudo netfilter-persistent save(オプション) iptables ルールを表示します。
# 詳細ルールを表示します。 sudo iptables -L -v # nat テーブルのルールを表示します。 sudo iptables -t nat -L -v
PPTP サービスの再起動
sudo /etc/init.d/pptpd restart
sudo systemctl enable pptpd.serviceVPN クライアントの構成
次のコマンドを実行して PPTP クライアントソフトウェアをインストールします。
sudo apt-get update sudo apt-get -y install pptp-linux次のコマンドを実行して、test という名前の VPN 接続チャネルを初期化します。
sudo pptpsetup --create test --server [$IP] --username [$User] --password [$Password] --encrypt --start接続が成功すると、次の出力が返されます。
Using interface ppp0 Connect: ppp0 <--> /dev/pts/1 CHAP authentication succeeded MPPE 128-bit stateless compression enabled local IP address 192.168.0.234 remote IP address 192.168.0.1