vine/PPTP

背景

はじめはWindows Mes

sengerを使って音声チャットをしたかったのだが,相手のFirewallがupnpに対応していなかったので,PPTPを使って接続してもらいNetmeetingで音声チャットをしている.
なんだか最新のWindows Messengerもupnpに対応していなかったり,すっかりupnpも下火になっているので,この方法でよかったのかもとも思っています.
yahoo Messengerの音声チャットも試したが・・・トランシーバーの様で使いにくい.

参考ページ1
参考ページ2

pppdの最新版へのアップグレード

pppの最新版をダウンロード

  • cvsでsamba.orgからダウンロードする.
% cvs -z5 -d :pserver:cvs@pserver.samba.org:/cvsroot co ppp

kernel再構築

  • kernelにmppeのパッチを当てる.
# cd ppp/linux/mppe
# sh mppeinstall.sh  /usr/src/linux-2.4.20/
  • kernelの再構築
# make mrproper
# make menuconfig
  • チェックをつける項目
Network device - PPP MPPE compression 
Network device - PPP over Ethernet
Charactor device - Non-standard serial port support - HDLC line
  • 以下の項目を確認
CONFIG_PPP=m
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_MPPE=m
CONFIG_PPPOE=m
CONFIG_N_HDLC=m
CONFIG_UNIX98_PTYS=y
  • 実行
# make dep
# make clean 
# make bzImage
# make modules
# make modules_install
# make install

pppのインストール

  • /dev/pppがあるかを確認.無かったら下のコマンドで作成
# mknod --mode=664 /dev/ppp c 108 0
  • /etc/modules.confに下記を追加
alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-13 n_hdlc
alias tty-ldisc-14 ppp_synctty
alias net-pf-24 pppoe
  • pppをインストール
$ cd ppp
$ ./configure
$ make
$ su
# make install

PPTPサーバの構築

poptopのインストール

  • poptopの取得

poptopサイトからダウンロード

  • poptopのインストール
$ tar zxvf pptpd-1.1.4-b4.tar.gz
$ cd poptop-1.1.4
$ ./configure
$ make
$ su
# make install

PPTPの設定

  • /etc/pptpd.confの作成

pptpで接続してきたユーザには192.168.1.210~219を割り当てる.

option /etc/ppp/options.pptpd
debug
localip 192.168.1.1
remoteip 192.168.1.210-219
  • /etc/ppp/options.pptpdの作成
lock
name pptpd

auth
proxyarp

refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe
nomppe-stateful
  • アカウントの設定

/etc/ppp/chap-secretsに追記
ユーザ名 hogehoge,パスワード foofooと場合

hogehoge pptpd "foofoo" *

pptpの起動

  • スクリプトの修正(poptop-1.1.4/pptpd.init)
daemon /usr/sbin/pptpd
 ↓
daemon /usr/local/sbin/pptpd
  • マシン起動時に有効にする
# cd /etc/rc.d/init/
# chkconfig --level 35 pptpd on

ip-tablesの設定

pptpのパケットは,カプセル(エンベローブ)するGREと,トンネリングの制御をするパケットに分けられる.

  • p 47でGREのパケットを許可している.

PPTPパケット(port 1723)はtcpだけで良さそうだが,よくわからないのでUDPも許可している.

-A INPUT -i ppp0 -p 47 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 1723 -j ACCEPT 
-A INPUT -i ppp0 -p udp -m udp --dport 1723 -j ACCEPT 

kernel-mode pppoe

kernelを再構築するついでにpppoeをkernel-modeにしてしまいました.

  • rp-pppoeインストール
$ cd rp-pppoe-3.5/src
$ ./configure --enable-plugin=../../ppp
$ make
$ su
# make install
  • /etc/ppp/pppoe.confの作成
# adsl-setup
ウィザードに従い作成
  • /etc/ppp/pppoe.confを編集
以下の行のコメント(#)をはずす
LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
  • rp-pppoe.soをpppのものと交換する.
# mv /etc/ppp/plugins/rp-pppoe.so /etc/ppp/plugins/rp-pppoe.so.org
# cp /usr/lib/pppd/2.4.2b3/rp-pppoe.so /etc/ppp/plugins/