pptpd で Ubuntu を VPN サーバにする
外部から自宅内のマシンへ接続する必要があった場合、今までは ssh のポートフォワードで済ませていました。大体において、特定のアプリケーションが接続できれば用が足りるので、その都度 ssh で穴を掘るのが面倒がなくてよいのです。
しかしそれだけでは足りず、マシン全体がローカルネットワークに所属していた方が都合がいいという場合もあるかと思います。そこで Ubuntu Server を使って VPN を構築してみました。なおこれは最低限接続ができるだけの設定ですので、詳細は各ソフトウェアのマニュアルを参照してください。
pptpd のインストール
VPN といっても色々と種類がありますが、お手軽に PPTP を使ってみます。Ubuntu では pptpd パッケージをインストールすることで、PPTP のサーバになることが可能です。
/etc/pptpd.conf の設定
ファイル末尾に (Recommended) と書かれてコメントアウトされている部分があります。ここに PPTP サーバの IP アドレスと、接続してきたクライアントに割り当てる IP アドレスを設定します。
localip 192.168.1.25 # pptpdの動作しているマシンのIPアドレス
remoteip 192.168.1.190-199 # クライアントに割り当てるIPアドレス
IP フォワードの設定
/etc/sysctl.conf に以下の設定を行います。これを行わないと、接続した pptpd マシンには接続できるのに、LAN 内の他のマシンへパケットが転送されなかったりします。設定後はマシンを再起動しておきましょう。ちなみに元からコメントアウトされて記述されているので、コメントを解除するだけです。
net.ipv4.ip_forward=1
ユーザ名とパスワードの設定
/etc/ppp/chap-secrets にユーザ名、サーバ名、パスワード、IP アドレスを設定します。サーバ名と IP アドレスはアスタリスクでワイルドカードを記述する事も可能です。
username pptpd "password" *
/etc/ppp/pptpd-options の設定
基本的にいじらなくても接続は可能です。name にサーバ名(デフォルトは pptpd)が指定されていますが、chap-secrets に別のサーバ名を指定した場合は、きちんと合わせておきましょう。
ルータの設定
一般的な家庭では、ブロードバンドルータの類の下にサーバをぶらさげているかと思います。このように pptpd サーバが LAN の内部にある場合、ポート転送が必要になります。ルータの設定にて TCP の 1723 番ポートと、プロトコルの 47 番を pptpd サーバに転送してください。TCP の 47 番ポートではなく、47 番のプロトコル(GRE)であることに注意してください。
クライアントの設定
クライアントマシンには、以下のパッケージをインストールしておいてください。