みなさんこんにちは。
前回は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で何かご紹介できればと思います