このトピックでは、Ubuntu オペレーティングシステムを実行している Elastic Compute Service (ECS) インスタンス上で Point-to-Point Tunneling Protocol (PPTP) VPN を設定する方法について説明します。
前提条件
-
このトピックは、Ubuntu 18.04、Ubuntu 20.04、および Ubuntu 22.04 に適用されます。
-
このトピックでは、Ubuntu 18.04 を実行する ECS インスタンスを例として使用します。ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
-
インスタンスのセキュリティグループには、VPN クライアントのパブリック IP アドレスからのポート 1723 および GRE プロトコルのトラフィックを許可するインバウンドルールが必要です。詳細については、「セキュリティグループルールの管理」をご参照ください。
VPN サーバーの設定
PPTP サーバーとして使用する ECS インスタンスにログインし、以下の手順に従って PPTP サーバーを設定します。ECS インスタンスへのログイン方法の詳細については、「Linux インスタンスへの接続」をご参照ください。
PPTP サービスの設定
-
次のコマンドを実行して、pptpd をインストールします。
sudo apt-get update sudo apt-get -y install pptpd -
pptpd ファイルを設定します。このファイルは、PPTP クライアントの IP アドレス範囲を指定し、各デバイスが一意の IP アドレスを受信できるようにします。
-
sudo vim /etc/pptpd.confコマンドを実行し、次の設定を追加します。localip 192.168.0.1 remoteip 192.168.0.234-238説明-
localipは、VPN サーバーのアドレスを指定します。サーバーのプライベート IP アドレスを使用することを推奨します。必要に応じて、この値を調整してください。 -
remoteipは、PPTP クライアントの IP アドレス範囲を指定します。競合を回避するために、他のデバイスがこの IP 範囲を使用していないことを確認してください。必要に応じて、この値を調整してください。
-
-
設定を追加すると、ファイルの内容は次のようになります。
# (推奨) #localip 192.168.0.1 #remoteip 192.168.0.234-238,192.168.0.245 localip 192.168.0.1 remoteip 192.168.0.234-238
-
-
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 サーバーアドレスに変更できます。
-
設定を追加すると、ファイルの内容は次のようになります。
# セカンダリ DNS アドレスを指定します。 #ms-dns 10.0.0.1 #ms-dns 10.0.0.2 ms-dns 223.5.5.5 ms-dns 223.6.6.6
-
-
ユーザーを作成します。このユーザーは PPTP 接続を認証し、許可されたクライアントのみが接続できるようにします。
-
sudo vim /etc/ppp/chap-secretsコマンドを実行して、pptpd のユーザー名とパスワードを追加します。必要に応じて、ユーザー名 pptpd パスワード IP アドレス形式でアカウントを追加します。各項目をスペースで区切り、1 行につき 1 つのユーザーアカウントのみを追加してください。説明例:
test pptpd 123456 *。アスタリスク (*) は、すべての IP アドレスを示します。test pptpd 123456 *
-
IP フォワーディングの有効化
-
次のコマンドを実行して、IP フォワーディングを有効にします。
sudo echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf -
次のコマンドを実行して、システムパラメーターをロードします。
sudo sysctl -p "/etc/sysctl.conf"コマンドが正常に実行されると、出力の
net.ipv4.ip_forward = 1は IP フォワーディングが有効になっていることを示します。root@iZZ:~# sudo sysctl -p vm.swappiness = 0 kernel.sysrq = 1 net.ipv4.neigh.default.gc_stale_time = 120 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_slow_start_after_idle = 0 net.ipv4.ip_forward = 1
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 -t nat -A POSTROUTING -s 192.168.0.232/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.service
VPN クライアントの設定
-
次のコマンドを実行して、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