AWSと自宅をVPNで接続した際のメモ1


自宅側のActiveDirectoryとAWS側のWebサーバを連動させてみる。
まずはVPNを張る所まで。

環境

自宅側
グローバルIP:XXX.XXX.XXX.XXX
ローカルネットワーク:192.168.1.0/24
VPNサーバのIP:192.168.1.7

AWS側
グローバルIP:YYY.YYY.YYY.YYY
ローカルネットワーク:10.0.0.0/24 (Public側)
ローカルネットワーク:10.0.1.0/24 (Private側)
VPNサーバのIP:10.0.0.6 (Public側)
VPNサーバのIP:10.0.1.6 (Private側)

自宅側のセットアップ

参考
ユーザガイド
さくらのVPSにVyOSをインストールする

インストール

最初はCDからブートされるので、ログインしてからユーザーガイドに従ってインストールを行う。
ID/passはvyos/vyos
ログイン後install imageでインストール開始。

セットアップ

各種設定はコンフィグモードによって操作するらしい。

プロンプトの末尾が「$」になっている状態はCiscoルータなどでいうユーザモードです。
設定を変更するためにはコンフィグモードへ遷移する必要があります。

$ configure

プロンプトが「#」に変わりコンフィグモードに遷移するので、下記の通りIPアドレスの設定を流し込んでいきます。

set interface ethernet eth0 address [IPADDRESS/MASK]
set system gateway-address [GATEWAY ADDRESS]

参考サイトに倣って、まずはsshでログインして作業が出来る様に以下のセットアップを行う。
1. IPアドレスの割り当て
2. sshサービス起動設定

$ configure

# set interface ethernet eth0 address 192.168.1.7/24
# set system gateway-address 192.168.1.1
# set service ssh port '22'
# commit
# save
# exit

なお、set inte[tab]と入力するとset interfaceといった具合に入力補完される。

動作確認
ping 8.8.8.8

メモ
設定削除について
IPアドレスを削除する場合delete interface ethernet eth0 address 192.168.1.7/24と打つ。
これも[tab]で入力補完される。

AWS側

参考
VyattaでVPCを拠点間接続する

AWSの画面で色々と設定を実施。

VPC

VPCは10.0.0.0/16で作成。
SubnetはPublic10.0.0.0/24と、Private10.0.1.0/24の2つを作成する。

EC2

ami-07f47b06を利用してPublic側に配置する。
Security Groupは、SSHとCustom UDP(500)とCustom Protocol(50)の3つを、いずれもSource My IPで定義しておく。

ルートテーブル

Private用のルートテーブルとして、宛先が192.168.1.0/24の場合は上記で作成したEC2インスタンスに向けるように設定する。

ENI

Privateに所属するENIを作成して、先程作ったEC2インスタンスに割り当てる。
また、Source/Dest Checkを2つのENIで無効にしておく。

EC2の詳細な設定

chmod 600 ~/Downloads/VPN.pem.txt
ssh -i ~/Downloads/VPN.pem.txt [email protected]

/etc/network/interfaces に先ほど作成した ENI の情報を追記。
eth1として認識させる。

$ sudo vi /etc/network/interfaces

auto eth0
iface eth0 inet static
address 10.0.0.6
netmask 255.255.255.0
gateway 10.0.0.1

auto eth1
iface eth1 inet static
address 10.0.1.6
netmask 255.255.255.0

/etc/init.d/networking を再起動する。

$ sudo /etc/init.d/networking restart

---コマンドで設定状況を確認
$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 06:c6:ee:1c:ba:d5  
          inet addr:10.0.0.6  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::4c6:eeff:fe1c:bad5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:158 errors:0 dropped:0 overruns:0 frame:0
          TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15238 (14.8 KiB)  TX bytes:19074 (18.6 KiB)
          Interrupt:25 

eth1      Link encap:Ethernet  HWaddr 06:97:c2:06:da:93  
          inet addr:10.0.1.6  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::497:c2ff:fe06:da93/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:888 (888.0 B)  TX bytes:478 (478.0 B)
          Interrupt:26 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:398 errors:0 dropped:0 overruns:0 frame:0
          TX packets:398 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:23968 (23.4 KiB)  TX bytes:23968 (23.4 KiB)

設定

$ configure
# set interfaces ethernet eth1 address 10.0.1.6/24
# commit
# save

自宅/AWSそれぞれのVPNで共通の作業

以下のコマンドで設定を流し込む。

configure

---AWS側変数
localID=@cloud
destID=@branch
destIP=XXX.XXX.XXX.XXX
localIP=10.0.0.6
destNet=192.168.1.0/24
localNet=10.0.1.0/24

---自宅側変数
localID=@branch
destID=@cloud
destIP=YYY.YYY.YYY.YYY
localIP=192.168.1.7
destNet=10.0.1.0/24
localNet=192.168.1.0/24

--−以下共通でコマンドを流す
set vpn ipsec ipsec-interfaces interface eth0

set vpn ipsec ike-group IKE-G proposal 1 encryption aes128
set vpn ipsec ike-group IKE-G proposal 1 hash sha1
set vpn ipsec ike-group IKE-G lifetime 3600

set vpn ipsec esp-group ESP-G proposal 1 encryption aes128
set vpn ipsec esp-group ESP-G proposal 1 hash sha1
set vpn ipsec esp-group ESP-G lifetime 1800

set vpn ipsec nat-traversal enable
set vpn ipsec nat-networks allowed-network $destNet

set vpn ipsec site-to-site peer $destIP ike-group IKE-G
set vpn ipsec site-to-site peer $destIP default-esp-group ESP-G

set vpn ipsec site-to-site peer $destIP authentication mode pre-shared-secret
set vpn ipsec site-to-site peer $destIP authentication pre-shared-secret my_shared_secret

set vpn ipsec site-to-site peer $destIP authentication id $localID
set vpn ipsec site-to-site peer $destIP authentication remote-id $destID

set vpn ipsec site-to-site peer $destIP local-address $localIP

set vpn ipsec site-to-site peer $destIP tunnel 1 local prefix $localNet
set vpn ipsec site-to-site peer $destIP tunnel 1 remote prefix $destNet

commit
save

my_shared_secretは各環境で任意のパスフレーズを決める

両方の設定完了後、それぞれのipsecのプロセスを再起動する。

sudo /etc/init.d/ipsec stop    #AWS側
sudo /etc/init.d/ipsec restart #自宅側
sudo /etc/init.d/ipsec start   #AWS側

動作確認

vyos@vyos# run show vpn ike sa
Peer ID / IP                            Local ID / IP               
------------                            -------------
YYY.YYY.YYY.YYY                         192.168.1.7                            

    State  Encrypt  Hash    D-H Grp  NAT-T  A-Time  L-Time
    -----  -------  ----    -------  -----  ------  ------
    up     aes128   sha1    5        no     994     3600

vyatta@vyatta# run show vpn ike sa
Peer ID / IP                            Local ID / IP               
------------                            -------------
XXX.XXX.XXX.XXX                         192.168.0.6                            

    State  Encrypt  Hash  D-H Grp  NAT-T  A-Time  L-Time
    -----  -------  ----  -------  -----  ------  ------
    up     aes128   sha1  5        no     284     3600

その他自宅側で実施すること

環境及び製品によって異なると思うが、当方の環境は以下のような感じ。

ルーティングの設定

外部からの接続を自宅内のVPNサーバに向ける設定

動作確認

$ ssh -i ~/Downloads/VPN.pem.txt [email protected]
Linux vyatta 3.3.8-1-amd64-vyatta #1 SMP Wed Mar 13 10:35:28 PDT 2013 x86_64
Welcome to Vyatta.
This system is open-source software. The exact distribution terms for 
each module comprising the full system are described in the individual 
files in /usr/share/doc/*/copyright.
Last login: Thu Apr 16 14:13:48 2015 from ip-192-168-1-7.ap-northeast-1.compute.internal
vyatta@vyatta:~$

VPCのPrivateなIP指定でログインできた。