Viblo Code
0

GMOクラウド VPS 上に PPTP サーバーを構築する

はじめに

現在、ベトナムのハノイで生活しているのですが、ハノイ市内は殆どのカフェやレストランで wifi を提供してくれて東京よりもネット環境が良い位に感じます。

でも、セキュリティ的にザルなのは間違い無いですし、途中経路で誰が覗いているか分かりません。野良 wifi と変わりませんね。

そんなとき、自前で VPN サーバーを構築しておけば、全ての通信を VPN 経由にすることで、安心して wifi が利用できます。また、政治的な理由で Facebook への接続が遮断されるようなときもこれがあれば安心ですね。

なお GMOクラウド VPS は物理サーバーが関東(東京?)にあるようで、VPNを経由すれば海外からも radiko で東京の放送が聴ける、という噂もあるようです。 利用規約的にOKか分からないので、試していませんし、そのために構築したということもありません。

本当ですよ。

前提条件

ubuntu12.04 上に構築します。仕事では殆ど ubuntu サーバーを使っているので。 また、徹頭徹尾 root ユーザーで作業しています。ミスったら OS 再インストールするのが漢ってもんだ、というワイルドな方以外はちゃんと一般ユーザーで適宜 sudo して下さい。

pptpd のインストール

インストールと言っても、apt-getするだけです。便利な世の中ですね。

:~# apt-get install -y pptpd
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  bcrelay
The following NEW packages will be installed:
  bcrelay pptpd
0 upgraded, 2 newly installed, 0 to remove and 10 not upgraded.
Need to get 95.2 kB of archives.
After this operation, 330 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main bcrelay amd64 1.3.4-5ubuntu2 [11.2 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ precise/main pptpd amd64 1.3.4-5ubuntu2 [84.0 kB]
Fetched 95.2 kB in 1s (51.6 kB/s)
Selecting previously unselected package bcrelay.
(Reading database ... 48203 files and directories currently installed.)
Unpacking bcrelay (from .../bcrelay_1.3.4-5ubuntu2_amd64.deb) ...
Selecting previously unselected package pptpd.
Unpacking pptpd (from .../pptpd_1.3.4-5ubuntu2_amd64.deb) ...
Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot
Processing triggers for man-db ...
Setting up bcrelay (1.3.4-5ubuntu2) ...
Setting up pptpd (1.3.4-5ubuntu2) ...
Starting PPTP Daemon: pptpd.

各種設定

/etc/pptpd.conf

まずは pptpd 自体の設定を。IP アドレスは非VPN環境と同じものにならないようにして下さい。 街の wifi 環境なんて大抵買ってきた router をつるしで使っているでしょうから、第3オクテットが 13 だったら被らないんじゃないか、と思います。 ベトナムでは 13 と言う数字は縁起が悪いですし。

76,77c76,77
< #localip 192.168.0.1
< #remoteip 192.168.0.234-238,192.168.0.245
---
> localip 192.168.13.254
> remoteip 192.168.13.101-150

/etc/ppp/pptpd-options

DNS を指定します。Google さん、いつもありがとうございます。

55,56c55,56
< #ms-dns 10.0.0.1
< #ms-dns 10.0.0.2
---
> ms-dns 8.8.8.8
> ms-dns 8.8.4.4

/etc/ppp/chap-secrets

接続する時に使うアカウントを作成します。街のカフェのインターネットから接続するのでアドレスは any にします。

3c3
<
---
> username pptpd password *

/etc/network/if-pre-up.d/masquerade

このファイルは新たに作成します。ネットワーク起動時に VPN 用に設定したアドレスで IP masquerade を有効にします。

vi /etc/network/if-pre-up.d/masquerade
#######
#!/bin/sh
iptables -t nat -A POSTROUTING -s 192.168.13.0/24 -j MASQUERADE
#######
chmod +x /etc/network/if-pre-up.d/masquerade

/etc/sysctl.conf

忘れずにフォワーディングを有効にします。

28c28
< #net.ipv4.ip_forward=1
---
> net.ipv4.ip_forward=1

/etc/ppp/options

途中のルーターの設定によっては MTU 値を下げておかないとヘッダーが追加された事で通らないことがあり得ます。ちょいとパフォーマンスで損しますが、どこのルーターに繋げるか分かりません。下げておきましょう。

190c190
< #mtu <n>
---
> mtu 1400

接続確認

念のために、ここまでの設定をしたら一度サーバーを再起動して動作確認してみましょう。サーバーの再起動が嫌であれば、

  • sysctl -p を打つ
  • /etc/network/if-pre-up.d/masquerade を実行する
  • pptpd を再起動する

で多分大丈夫です。試して無いですけど。

あとは、iPhone等から、PPTPの設定をして接続できればOKです。 「すべての信号を送信」しておきましょう。


All Rights Reserved