LoginSignup
4
6

More than 5 years have passed since last update.

VPNPPTPを利用したLAN間接続

Last updated at Posted at 2014-12-22

1.はじめに  

SoftLayerが提供するPrivate LAN側への接続方法は、SSL/PPTP/IPSecの合計3種類です。このうち、無償で利用できるのはSSLとPPTP の1セッション(2014年2月 現在)ですが、いずれの場合も作業用PCからの接続を想定しているのか、複数デバイス間でデータのやり取りをする場合には少々不便です。
Public LAN側からSSH接続やVPN接続をする方法ももちろんありますが、提供されるIPアドレス数の問題やインターネットにはそもそも接続したくないという要望もあるように思います。
そこで、今回は費用をかけずに「社内の作業用ネットワークとSoftLayer側のPrivate LANをPPTPで接続する方法」をご紹介します。

PPTPは、IPSecと比較すると暗号強度は劣りますが、低価格の機器でも広く対応しており、社内LANなどのNAT環境化でも正常にセッションを張れることが多いのが強みです。
今回は、余った低スペックのPCなどをソフトルーター化することを前提に、LinuxディストリビューションのDebianを利用しました。

2.導入ステップ概要

手順としては、はじめに、SoftLayerが提供する管理コンソールでPPTPを有効にし、Windows PCからPPTP接続できることを確認します。
その後、接続確認を行った情報を組み込み、PCをソフトルーター化していくような流れとなります。

1.jpg

3.導入         

3-1.PPTP設定の有効化/接続確認

PPTPについては、初期の段階では接続が有効となっていません。このため、ポータル画面に接続しPPTP接続に必要な設定を行います。

SoftLayerポータルの「Account」⇒「Users」よりPPTP利用、VPNパスワードを設定します。

設定された内容が有効かどうか、PCで接続し確認します。(以下は、Windows 7の例です)
参考:http://knowledgelayer.softlayer.com/procedure/set-pptp-vpn-windows-7

[プログラムとファイルの検索]欄に「VPN」のキーワードを入力し、表示された「仮想プライベートネットワーク(VPN)接続のセットアップ」を選択します
2.jpg
インターネットアドレス欄に、接続先のデータセンターを入力し、任意のVPN接続名を付けます。
(下記の例の接続先はサンノゼ) 入力したら、[次へ]をクリックします
3.jpg
SoftLayerポータル接続時の認証で利用したユーザー名とパスワードを入力し接続します。
4.jpg
正常に接続されると、下記のようなメッセージが表示されます。
うまく接続できない場合は、ユーザー名・パスワード・接続ポイントを確認してください。
また、インターネット接続にルーターを利用している場合は、ご利用のルーターがVPN(PPTP)パススルーに対応している必要がありますので、ご注意ください
5.jpg

3-2.PCの準備/Debian OSの導入

PPTPルーターとして利用する、PCを用意します。
この項では、OSをインストールして基本的なネットワーク設定を行います。必要のない方は、読み飛ばしてください。

A.LANの口が2つあるPCを用意します。
導入するのは、最低限のコンポーネントですので使わなくなった古いPCなどで充分です
B.インストールするDebian OSを用意します。
インストールイメージは、http://www.debian.or.jp/ から入手できます。本資料で
は、7.4(wheezy)を利用しました
C.メディア作成後、PCにセットしインストーラを起動します。「Graphical Install」または「Install」を選択し、[Enter]キーを押します。 (下記からは、Graphical Installを選択した例です)
EasyCapture6.jpg
D.言語、ロケーション、ネットワーク、ディスク設定などを行います。
OS導入の詳細は割愛しますが、GUIインストールが選択できる場合は、設定項目もすべて
日本語で表示されるので、あまり迷うこともないかと思います

途中でインストールコンポーネントを選択する画面がありますが、今回はルーターとして利用するだけですので、最低限でOKです。ルーターとして必要なものは後で追加します。
デスクトップをご利用の場合は、KVM(キーボード/マウス/モニター)がなくても状態を確認できるSSHサーバーを組み込んでおくと良いかもしれません
EasyCapture7.jpg
E.インストールが終わったら、ネットワークの設定を行います。
ログインし、特権ユーザーでご自身の環境に合わせて以下のファイルを書き換えてください

# vi /etc/network/interfaces

設定例 ) アダプタ1 eth0 (インターネット接続用) DHCP接続
     アダプタ2 eth1 (作業用PC接続用) 固定IP 192.168.50.1/24

※ インターネット側を固定IPとする場合は、IPアドレスの他にデフォルトゲートウェイと、DNSの設定が必要です

ファイル内容
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
#if you want to set default gateway,delete comment-out
#gateway xxx.xxxx.xxxx.xxxx
auto eth1
iface eth1 inet static
address 192.168.50.1
netmask 255.255.255.0

※DNSの設定が必要な場合は、/etc/resolv.confファイルを作成します

/etc/resolv.conf ファイルの内容 (xxx.xxx.xxx.xxxは、DNSサーバーのIP Addressです)
nameserver  xxx.xxx.xxx.xxx

F.設定を反映させます

# /etc/init.d/networking restart

3-3.PPTPクライアントの設定

A.続けてPPTPクライアント用のコンポーネントを追加インストールします

# vi /etc/apt/sources.list

最後尾に以下の行を追加します

deb  http://ftp.jp.debian.org/debian/  wheezy  main  contrib  non-free

追加できたら、次のコマンドを実行します

#apt-get update

Updateコマンド終了後、続けて実行します

#apt-get install pptp-linux
# apt-get install pptp-linux
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  pptp-linux
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
48.3 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 131 kB のディスク容量が消費されます。
以前に未選択のパッケージ pptp-linux を選択しています。
(データベースを読み込んでいます ... 現在 133241 個のファイルとディレクトリがインストールされています。)
(.../pptp-linux_1.7.2-7_i386.deb から) pptp-linux を展開しています...
man-db のトリガを処理しています ...
pptp-linux (1.7.2-7) を設定しています ...
#

B.クライアントがインストールされたら、PPTP接続の設定を行います。
  手順3-1Windows PCで行ったPPTPパラメータを利用します
※コマンドは、改行せず入力してください

# pptpsetup --create [VPN名] --server [接続先] --username [ユーザー名]
 --password [パスワード] --encryp

VPN名「VPN01」、接続先「サンノゼ」、ユーザー名「AB012345」、パスワード「xy@z0123」での実行例

# pptpsetup --create VPN01 --server pptpvpn.sjc01.softlayer.com --username AB012345 --password xyz@0123 --encrypt
#

C.作成したPPTP情報で接続できることを確認します

# pppd call [VPN名] updetach 

手順Bで作成した、VPN01での接続例

# pppd call VPN01 updetach
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local  IP address 10.x.x.x
remote IP address 10.x.x.x
#

D.SoftLayer側のネットワークに対するルーティングを設定します

# route add -net [接続先IPアドレス] netmask [ネッマスク] ppp0

 今回の接続例では、SolftLayer側のネットワークが10.0.0.0/27ですので、このIP Addressをppp0に向けてやります。

# route add -net 10.0.0.0 netmask 255.255.255.247 ppp0
#

E.接続したいサーバーにpingを打って確認します。([CTRL]+[C]で強制終了させます)

# ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_req=1 ttl=61 time=119 ms
64 bytes from 10.0.0.5: icmp_req=2 ttl=61 time=114 ms
64 bytes from 10.0.0.5: icmp_req=3 ttl=61 time=114 ms
^C
--- 10.0.0.5 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2027ms
rtt min/avg/max/mdev = 114.331/116.141/119.744/2.547 ms
# 

F.通信が確認できたら、一旦pptp接続を切断します

# pkill pppd

G.PPTPが接続されたら、自動でルーティングが設定されるようにします
routing_softlayerという名前でファイルを作成します

# vi /etc/ppp/ip-up.d/routing_softlayer

routing_softlayer ファイルの中身

#!/bin/sh
# PPPリンク時のルーティング追加( to SoftLayer Network)
/sbin/route add –net 10.0.0.0 netmask 255.255.255.247 $PPP_IFAC

ファイルを保存したら、パーミッションを変更します

# chmod 755 /etc/ppp/ip-up.d/routing_softlayer

H.毎回ログインして、接続/切断するのは面倒なので起動時に自動で接続するようにします。
pptp-slという名前で起動/停止ファイルを作成します(※1)

# vi /etc/init.d/pptp-sl

pptp-slの中身(2行にまたがっているものも、改行なしの1行で入力してください)

#!/bin/sh -e
# PPPセッションが複数ある場合などは、カスタマイズが必要です
case "$1" in
  start)
   echo "Starting PPP Session....." 
   /usr/sbin/pppd call VPN01 updetach >/dev/null 2>&1
   /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE >/dev/null 2>&1
   /sbin/iptables-save >/dev/null 2&1;;
 stop)
   echo "stopping PPP Session”
   /bin/cat /var/run/ppp0.pid | /usr/bin/awk {'print "kill -9 "$1}'|/bin/sh >/dev/null 2>&1;;
  *) echo "Usage: $0 {start|stop}" >&2; exit 1 ;;

ファイルを保存したら、パーミッションを変更します

# chmod 755 /etc/init.d/pptp-sl

I.Runレベル合わせた起動/停止のシンボリックリンクを作成します

# update-rc.d pptp-sl defaults 99 1

警告が出ますが、問題ありません。
これで、OSが起動すると、SoftLayerに接続できるようになりました

# update-rc.d pptp-sl defaults 99 1
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'pptp-sl' missing LSB tags and overrides
#

(※1) ppp-slファイルには、eth1側のネットワークからppp0インターフェースを介しSoftLayer側に向かう通信に対する、IPマスカレード設定も同時に入れてあります。
ファイルの内容は変更する必要がありませんので、そのままご利用ください

3-4.ルーター、DHCPサーバーの設定

最後に、LAN上から設定したPCを通じてSoftLayer側と通信できるよう、IPルーティングとDHCPサーバーの設定を行います。

A.IPフォワードの設定

# vi /etc/sysctl.conf

デフォルトでは、IPフォワーディングは「無効」となっているので、最終行に設定を追加します

net.ipv4.ip_forward=1

B.DHCPサーバーのコンポーネントをインストールします

# apt-get install udhcpd
# apt-get install udhcpd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  udhcpd
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
21.5 kB のアーカイブを取得する必要があります。
この操作後に追加で 24.6 kB のディスク容量が消費されます。
取得:1 http://ftp.jp.debian.org/debian/ wheezy/main udhcpd i386 1:1.20.0-7 [21.5 kB]
21.5 kB を 0秒 で取得しました (42.2 kB/s)
以前に未選択のパッケージ udhcpd を選択しています。
(データベースを読み込んでいます ... 現在 133257 個のファイルとディレクトリがインストールされています。)
(.../udhcpd_1%3a1.20.0-7_i386.deb から) udhcpd を展開しています...
man-db のトリガを処理しています ...
udhcpd (1:1.20.0-7) を設定しています ...
udhcpd: Disabled. Edit /etc/default/udhcpd to enable it.
#

C.インストールされたら、IPアドレスの割り当て(リース範囲)などを設定します

# vi /etc/udhcpd.conf

下記のサンプルを参考に、必要な箇所を変更します。

# The start and end of the IP lease block
start       192.168.50.100  #リース開始IP Address
end     192.168.50.199  #リース終了IP Address

# The interface that udhcpd will use
interface   eth1        # DHCPを有効にするネットワークカード

# Options
opt dns 192.168.50.254    # DNSサーバー
opt subnet  255.255.255.0    # サブネット
opt router  192.168.50.254     # デフォルトゲートウェイ
option  lease   864000       # IPアドレスのリース時間(10日間/単位:sec)

D.DHCPサーバーが有効にとなるよう設定を変更します

# vi /etc/default/udhcpd

下記のnoをyesに書き換えます

# Comment the following line to enable
DHCPD_ENABLED="no”

E.終わったら、保存してします。
DHCPデーモンを起動させればそのまま使えますが、念のため一度再起動してください。
これで作業は終了です。再起動後は、ネットワークに接続した作業用PCから接続できることが確認頂けると思います
:frog:

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6