PPTPでVPN

PPTPとは

OpenVPNのページでも説明したが、PPTPとはMicrosoft社が開発したVPN技術である。クライアントがWindowsであれば、OSデフォルトの機能で実現が可能である。使用するプロトコルがTCP(1723)と専用プロトコル(GRE)を使用する為、環境によっては使用ができない所が多い。OpenVPNであればTCP,UDPの任意のポートで使用が可能である為、環境を考えればOpenVPNの方が使用しやすいだろう。

2つのコネクション

PPTPでは、TCPでサーバに接続し、さらにサーバからクライアントに対してGREで接続ある。NAT環境ではルータがPPTPに対応していないと、まず使用できないだろう。

PPTP接続図

構成

今回やりたい事は、同じネットワークセグメントに接続して各サーバに接続できる様にする。pptpdはarpプロキシができる為、同じセグメントでも通信が可能みたいだ。

カーネル再構築

ソース&パッチを取得

PPTPではMPPEという暗号化を使用しています。こちらをdebianで有効化するにはカーネルの再構築が必要になります。まずは、カーネルのパッチを取得します。カーネルソース自体を持っていなければ、同時にインストールされるハズです。できれば、自分が使っているカーネルのソースを持ってきたほうがいいね。

debian etchでは標準でモジュールが作成されているのでカーネルの再構築は必要ありません。

#apt-get install kernel-patch-mppe

環境準備

ソースの展開やらリンクを貼ってやります。

#cd /usr/src
#tar -bzxvf kernel-source-2.4.27.tar.bz2
#ln -s kernel-source-2.4.27 linux
#cd linux

パッチの適用

確か、これでOK。。

#../kernel-patches/all/apply/mppe

カーネル再構築でダイエットのページでかかれている方法で、カーネルを再構築。コンフィグで忘れずにmppeを有効にすること。たぶん、パッチを当てた段階で有効になりそうでけどなぁ・・・。

インストール

おりゃ

#apt-get install pptpd

サーバ設定

/etc/pptpd.conf

pptpdに設定するIPアドレスと、クライアントに割り振るIPアドレス範囲を設定する。localipってのが、サーバ。remoteipってのがクライアントに割り振るIPアドレスの範囲。ちなみに、内部は192.168.20.0〜192.168.20.30くらいを使用する予定。remoteipは内部のアドレスとかぶらない様にしよう。

localip  192.168.20.100
remoteip 192.168.20.101-110

/etc/ppp/pptpd-options

name pptpdsrv #後で書くパスワードと同じにしなきゃだめ
refuse-pap         #無効
refuse-chap        #無効
refuse-mschap      #無効
require-mschap-v2  #MS-CHAPv2を有効にする
require-mppe-128   #MPPEを有効
proxyarp           #ARP プロキシ
nodefaultroute     #デフォルトゲートウェイをVPNに向けさせない

/etc/ppp/chap-secrets

パスワードを設定する。一目瞭然なので、あえて説明しまそん。

iptablesの設定

iptablesを使用しているのならば、以下の様にフィルタを許可してやってください。

#echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
#iptables -A OUTPUT -p 47 -j ACCEPT

ルータ設定

VPNスルーパスだとか、そういう機能あるならば有効にしてください。あと、フィルタとNATも有効に。

pptpd起動

起動してみてください。ログも忘れずに確認。

#/etc/init.d/pptpd start
#tail -f /var/log/syslog

クライアント設定

接続先を設定してやります。コントロールパネル→ネットワーク接続→新しい接続を作成する

windows新しい接続

次へをクリック

windows新しい接続

「職場のネットワークへ接続する」を選択

windows新しい接続

「仮想プライベートネットワーク接続」を選択

windows新しい接続

「接続名」は何でもいいです。任意の名前を記入

windows新しい接続

「最初の接続にダイヤルしない」を選択

windows新しい接続

サーバ名を記入。IPなり、ドメインなり。

windows新しい接続

終了

windows新しい接続

プロパティをクリック

windows新しい接続

ネットワークタブのTCP/IPをクリックし、プロパティをクリック

windows新しい接続

詳細設定をクリック

windows新しい接続

全般タブのリモートネットワークでデフォルトゲートウェイを使うをチェックアウトし、OKをクリック

ユーザ名とパスワードを入力し接続をクリックすれば接続しにいきます。次回からはネットワーク接続内にアイコンができているので、そこから起動できます

接続確認

ルータが対応していれば基本的にこれで接続できるはずだ。自分が試した結果、接続が不安定(2,3回試行すると接続できる?)だが何とかOKだった。後は、pingなりsmbやるなりして試してみてくれ。

やってみた感想だが、カーネル再構築がめんどくさい。2時間とかコンパイルが掛かるから・・。後は、windowsはデフォルトOKだし、OpenVPNの様にブリッジの設定などややこしいのは無い。

debian etchは標準でモジュールがあるのでコンパイルいらないですね。


debian Valid HTML 4.01 Strict [VALID RSS!]