VPC上にVyattaでPPTPサーバを構築する

記事タイトルとURLをコピーする

みなさんこんにちは。
前回はVyattaでVPC間を拠点間接続する手順をご紹介させていただきましたが、今回はVyattaでPPTPサーバを構築する手順をご紹介します。

構成

  • VPCを作成(192.168.0.0/16)
  • それぞれのVPCのPublicSubnetにVyattaインスタンスを作成
  • VyattaインスタンスにEIPを付与する
  • Vyattaと違うSubnet(PrivateSubnet)に疎通確認用のインスタンスを作成
  • クライアントPCから疎通確認用インスタンスへ通信できればゴール

 Vyattaインスタンスの構築

  • Vyattaのインスタンスは、東京リージョンにある Vyatta Core 6.6 R1 x86_64 rev1 (ami-07f47b06) のAMIを使用して作成しました
  • VyattaインスタンスにはEIPを割り当てておきます
  • インスタンスの起動後に Source/Dest Check を Disable にします
  • SecurityGroupで PPTP(TCPポート番号1723) と GRE(IPプロトコル番号47) を許可します

ENIをアタッチする

192.168.10.0/24 のSubnet(PrivateSubnet)用に新たに eth1 をVyattaインスタンスにアタッチするのですが、アタッチの手順、インスタンスに認識させる方法等は前回ご紹介した手順と同様なのでここでは割愛します。

参考 : http://blog.serverworks.co.jp/tech/2013/12/04/vyatta_site-to-site/

Vyattaの設定

PPTPサーバとして動作させるために、Vyattaサーバへ設定をします。

設定モードに変更します。

$ configure

ローカルでユーザ認証をします。

$ set vpn pptp remote-access authentication mode local

接続ユーザの追加をします。

set vpn pptp remote-access authentication local-users username ${USER} password ${PASSWORD}

接続するPPTPクライアントのアドレスプールの設定をします。
接続してきたクライアントに対して、172.16.0.1〜 順番にIPアドレスが割り当てられます。

$ set vpn pptp remote-access client-ip-pool start 172.16.0.1
$ set vpn pptp remote-access client-ip-pool stop 172.16.0.100

外側と通信するインターフェースのアドレスを設定

$ set vpn pptp remote-access outside-address 192.168.20.10

接続するPPTPクライアントが使用するDNSサーバを指定

$ set vpn pptp remote-access dns-servers server-1 8.8.8.8
$ set vpn pptp remote-access dns-servers server-1 8.8.4.4

設定を保存します。

commit
save

今回はこれだけでVyattaの設定は完了です。

AWSのRouteTable設定

今回もRouteTableの設定が必要になります。
疎通確認用のインスタンスがあるSubnetのRouteTableを以下のように設定します。


PPTPクライアントのアドレスプールに指定した範囲のCIDRを、ENI(eth1)にルーティングします。

接続の確認

さて、設定が完了したので早速PPTPサーバへ接続してみましょう。
今回は Mac でPPTPサーバへ接続する手順をご紹介します。


1. システム環境設定 -> 左下にある + をクリック

インターフェース : VPN
VPN タイプ : PPTP
サービス名 : PPTP (自分が分かりやすい名前を入力)

作成をクリック。

 

2. 左のインターフェース一覧に、作成したPPTP用の設定が追加されたのでそちらをクリックします。

サーバアドレス : VyattaサーバのElasticIP
アカウント名 : Vyattaの設定で作成したユーザ名

 

3. 認証設定をクリック。

パスワードVyattaの設定で作成したユーザ名のパスワード

OKをクリック。

 

4. これで接続する設定が完了しました。
VyattaへPPTPで接続してみましょう。

状況 が 「接続済み」となっていれば接続が正常に確立しています。
IPアドレス」もVyattaの設定で指定したアドレスプールから割り当てられています。

 

ターミナルで ifconfig すると、PPTP用のインターフェースが追加されているのが確認できます。

$ ifconfig ppp0
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1406
inet 172.16.0.1 --> 10.255.254.0 netmask 0xffff0000

VPC(192.168.0.0)への経路を static で追加します。
( 192.168.0.0/16 への通信を ppp0 インターフェースで送信 )

$ sudo route -nv add -net 192.168.0.0/16 -interface ppp0

対向の疎通確認用インスタンスに向けてpingを打ちます。

$ ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10): 56 data bytes
64 bytes from 192.168.10.10: icmp_seq=0 ttl=63 time=141.248 ms
64 bytes from 192.168.10.10: icmp_seq=1 ttl=63 time=151.269 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=63 time=105.733 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=63 time=117.558 ms

疎通の確認が取れました。

まとめ

  • VyattaでPPTPサーバを構築する手順をご紹介しました
  • 上記の方法だとPPTP接続が切れる毎にstaticなrouteが消えてしまいます
  • /etc/ppp/ip-up にシェルスクリプトを書けばppp0がupする毎にrouteを設定できます
  • 次回もVyattaで何かご紹介できればと思います