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側)

#自宅側のセットアップ

参考
[ユーザガイド](http://wiki.vyos-users.jp/メインページ)
[さくらのVPSにVyOSをインストールする](http://kentai-shiroma.blogspot.jp/2014/06/vpsvyos.html)

##インストール
最初は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を拠点間接続する](http://blog.serverworks.co.jp/tech/2013/12/04/vyatta_site-to-site/)

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

##VPC
VPCは`10.0.0.0/16`で作成。
SubnetはPublic`10.0.0.0/24`と、Private`10.0.1.0/24`の2つを作成する。

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

##ルートテーブル
Private用のルートテーブルとして、宛先が`192.168.1.0/24`の場合は上記で作成したEC2インスタンスに向けるように設定する。
![スクリーンショット 2015-04-30 21.47.14.png](https://qiita-image-store.s3.amazonaws.com/0/64421/5ef78332-0523-1cb4-9d2b-f036981b0aea.png "スクリーンショット 2015-04-30 21.47.14.png")

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

##EC2の詳細な設定

```
chmod 600 ~/Downloads/VPN.pem.txt
ssh -i ~/Downloads/VPN.pem.txt vyatta@YYY.YYY.YYY.YYY
```

/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

```

#その他自宅側で実施すること
環境及び製品によって異なると思うが、当方の環境は以下のような感じ。
##ルーティングの設定
![スクリーンショット 2015-04-16 23.35.33.png](https://qiita-image-store.s3.amazonaws.com/0/64421/2cbc7a5d-69f8-9b0e-0d40-f367b337c701.png "スクリーンショット 2015-04-16 23.35.33.png")

##外部からの接続を自宅内のVPNサーバに向ける設定
![img.jpg](https://qiita-image-store.s3.amazonaws.com/0/64421/ee24b80c-f6e7-476b-8cba-b721b8b01426.jpeg "img.jpg")


#動作確認

```
$ ssh -i ~/Downloads/VPN.pem.txt vyatta@10.0.1.6
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指定でログインできた。