社内からのみ接続を許可しているサーバーがあり、
EC2上から直接ファイルの転送する必要があるときなどの用途になります。
FireWallを開けるほうが楽な場合はそっちをオススメします。
PPTP周りのソフトをインストールします。
yum install pptp-setup ppp-devel
VPN接続プロフィールを作成します。
pptpsetup –create “{接続名}” –server “{ルータのIPアドレス}” –username “{ユーザー名}” –password “{パスワード}” –encrypt
http://network.station.ez-net.jp/os/linux/network/pptp/centos/5.6.asp
こちらのページを参考にスクリプトを作成します。
mkdir -p /root/script
vim /root/script/get_network.sh
#!/bin/sh # Usage: NETINFO=(`get_network "192.168.1.130" "28"`) # # ${NETINFO[0]}: Network Address # ${NETINFO[1]}: Broadcast Address # ${NETINFO[2]}: Netmask function get_network() { local NETWORK="" local BROADCAST="" local NETMASK="" local IPADDR="$1" local MASKBIT="$2" local ip_array=(`echo "$IPADDR" | sed -e "s/./ /g"`) local ip_index=0 while [ $ip_index -lt 4 ] do if [ "$MASKBIT" -lt 8 ] then MASK=$((256-2**$((8-MASKBIT)))) MASK_REV=$((~MASK%256+256)) MASKBIT=0 else MASK=255 MASK_REV=0 MASKBIT=$((MASKBIT - 8)) fi NETWORK="${NETWORK}.$((ip_array[ip_index] & MASK))" BROADCAST="${BROADCAST}.$((ip_array[ip_index] | MASK_REV))" NETMASK="${NETMASK}.$MASK" ip_index=$((ip_index + 1)) done NETWORK=`echo $NETWORK | sed -e "s/^.//"` BROADCAST=`echo $BROADCAST | sed -e "s/^.//"` NETMASK=`echo $NETMASK | sed -e "s/^.//"` echo "$NETWORK $BROADCAST $NETMASK" }
vim /root/script/ppp-network-start.sh
#!/bin/bash PPTPNAME="{接続名}" MASKBIT=24 . /root/script/get_network.sh function clear_status() { DEVICE="" LOCAL_IP="" REMOTE_IP="" } function check_progress() { local LINE="$1" case "$LINE" in "Using interface "*) DEVICE=`echo "$LINE" | sed -e "s/^Using interfaces*//"` ;; "local IP address "*) LOCAL_IP=`echo "$LINE" | sed -e "s/^local IP addresss*//"` ;; "remote IP address "*) REMOTE_IP=`echo "$LINE" | sed -e "s/^remote IP addresss*//"` ;; "Connection terminated.") clear_status ;; *) ;; esac } clear_status while read LINE do echo $LINE check_progress "$LINE" done < <(/usr/sbin/pppd call $PPTPNAME updetach) if [ "$DEVICE" ] then NETINFO=(`get_network "$LOCAL_IP" "$MASKBIT"`) NETWORK=${NETINFO[0]} BROADCAST=${NETINFO[1]} NETMASK=${NETINFO[2]} ROUTECMD="route add -net $NETWORK/${MASKBIT} dev $DEVICE" $ROUTECMD exit 0 else echo "Failed to connect to $PPTPNAME." exit 1 fi
vim /root/script/ppp-network-stop.sh
#!/bin/sh PPTPNAME="{接続名}" pkill -f "^/usr/sbin/pppd call ${PPTPNAME}s"
chmod +x /root/script/*
VPNに接続します
/root/script/ppp-network-start.sh
route -n
ppp0が追加されていることを確認します。
これでVPNへの接続は完了ですが、
すべてのパケットをVPN経由で飛ばさないと目的のサーバーにログインできません。
route add default ppp0
これでデフォルトゲートウェイがppp0に切り替わるので、目的のサーバーにログインできます。
※DNSの解決を内部のサーバーとかでおこなっているとそちらが参照できなくなるので、
/etc/resolv.confを「nameserver 8.8.8.8」などに書き換えてください。
元に戻すときは、
route del default ppp0
/root/script/ppp-network-stop.sh
でVPN接続が切れます。