エンジニアブログ
CentOS 5.5 で PPTP Client を利用してVPN接続を行う
2011年02月16日
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 を固定する方法を現在探していますが、今のところ不明です。