CentOS 5.5 で PPTP Client を利用してVPN接続を行う
CentOS 5.5 にPPTP Clientを導入してVPN接続がうまくいきましたので、ここにメモ代わりに残しておきます。
接続先がMicrosoftのサーバなため、案外苦労しました。pppdに与える起動パラメータの少しの違いが絶妙に効いてきます。
必要なソフトは以下のものです。
- pptp-client http://pptpclient.sourceforge.net/
- pppd
- pptp
手順:
1. yumで入れられるものの導入
$ sudo yum install pppd pptp
2. pptp-clientの導入
$ wget http://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.7.2/pptp-1.7.2.tar.gz/download $ tar xzf pptp-1.7.2.tar.gz $ cd pptp-1.7.2 $ make $ sudo make install
3. pptp-client起動スクリプト作成
$ sudo vim /usr/bin/pptp-client
#!/bin/sh
# chkconfig: 3456 98 20
# description: PPTP client for VPN
SERVER="11.xxx.xxx.xxx" # 接続先のIPアドレス or ホスト名
USER="n-yamakawa" # PPTP用 ユーザー名
PASSWORD="xxxxxxxxx" # PPTP用 パスワード
HOSTNET="192.168.0.0" # 接続先のネットワークアドレス
HOSTMASK="255.255.255.0" # 接続先のネットマスク
RESOLVCONF="/etc/resolv.conf"
RESOLVCONFBAK="/tmp/resolv.conf.bak"
DEBUG="debug"
LOGLEVEL="2"
case "$1" in
start)
if [ -z $(/sbin/pidof pptp) ]; then
echo -n "Starting pptp-client"
if [ -f $RESOLVCONF ] ;then
cp -p $RESOLVCONF $RESOLVCONFBAK
fi
/usr/sbin/pppd \
$DEBUG lock noauth nodeflate nobsdcomp refuse-eap \
name $USER \
password $PASSWORD
require-mppe-128 \
pty "/usr/sbin/pptp $SERVER --nolaunchpppd --loglevel $LOGLEVEL"
sleep 10
/sbin/route add -net $HOSTNET netmask $HOSTMASK dev ppp0
echo
else
echo "pptp-client is already started"
fi
;;
stop)
if [ ! -z 1$(/sbin/pidof pptp) ]; then
echo -n "Shutting down pptp-client"
/usr/bin/killall pptp
if [ -f $RESOLVCONFBAK ] ;then
cp -p $RESOLVCONFBAK $RESOLVCONF
fi
echo
else
echo "pptp-client is not running"
fi
;;
restart)
if [ ! -z $(/sbin/pidof pptp) ]; then
echo -n "Shutting down pptp-client"
/usr/bin/killall pptp
if [ -f $RESOLVCONFBAK ] ;then
cp -p $RESOLVCONFBAK $RESOLVCONF
fi
echo
else
echo "pptp-client is not running"
fi
if [ -z $(/sbin/pidof pptp) ]; then
echo -n "Starting pptp-client"
if [ -f $RESOLVCONF ] ;then
cp -p $RESOLVCONF $RESOLVCONFBAK
fi
/usr/sbin/pppd \
$DEBUG lock noauth nodeflate nobsdcomp noccp \
name $USER \
password $PASSWORD \
require-mppe \
pty "/usr/sbin/pptp $SERVER --nolaunchpppd --loglevel $LOGLEVEL"
sleep 10
/sbin/route add -net $HOSTNET netmask $HOSTMASK dev ppp0
echo
else
echo "pptp-client is already started"
fi
;;
status)
if [ ! -z $(/sbin/pidof pptp) ] ; then
echo -n "pptp-client (pid"
echo -n " `/sbin/pidof pptp`"
echo ") is running..."
else
echo "pptp-client is stopped"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0
4. 動作確認
$ sudo /usr/bin/pptp-client start $ /sbin/ifconfig | grep ppp # ppp0 が出てくればOK $ ping [VPN接続先内ホスト]
5. 起動設定
$ sudo ln -s /usr/bin/pptp-client /etc/init.d/pptp-client $ sudo chkconfig --add pptp-client $ sudo chkconfig --level 3 pptp-client on
remote(PPP先での) IP address を固定する方法を現在探していますが、今のところ不明です。






