元パチ屋店員NWエンジニアの技術ブログ

元パチ屋店員NWエンジニアが技術のアウトプット化を目的に、好き勝手な事を書いてるブログです

AWS VPCと自宅LANをVPN接続してみた


f:id:hayato-ota-rf:20170927024441p:plain

構成図

f:id:hayato-ota-rf:20170927031058p:plain

AWS側の設定

①仮想プライベートゲートウェイの設定

1.VPCコンソールで、仮想プライベートゲートウェイの作成をクリック

f:id:hayato-ota-rf:20170927031846p:plain

2.、各パラメータを設定し、仮想プライベートゲートウェイの作成をクリック

f:id:hayato-ota-rf:20170927033042p:plain

②カスタマーゲートウェイの設定

1.VPCコンソールで、カスタマーゲートウェイの作成をクリック

f:id:hayato-ota-rf:20170927032237p:plain

2.各パラメータを設定し、カスタマーゲートウェイの作成をクリック

f:id:hayato-ota-rf:20170927032849p:plain

VPN接続の設定

1.VPCコンソールで、VPN接続の作成をクリック

f:id:hayato-ota-rf:20170927033246p:plain

2.各パラメータを設定し、VPN接続の作成をクリック

f:id:hayato-ota-rf:20170927033633p:plain

VPCルートテーブルの設定

1.宛先が自宅LANのIP(172.16.1.0/24)は、①で作成した仮想プライベートゲートウェイに向くように設定

f:id:hayato-ota-rf:20170927035127p:plain

自宅側の設定

AWS VPCVPN接続できるルータには制限があります

私はYAMAHACiscoルータを持っていないので、ホスト型VMwereを利用し仮想NW上にVyOSを構築します

今回は検証なので良いのですが、実際に運用するとなると物理マシンにVyOSを導入したものを使用するか、YAMAHACiscoルータを使用する必要がありそうですね

仮想NW構成図

f:id:hayato-ota-rf:20170927043013p:plain

仮想マシンの設定

1.ISOのダウンロード

↓のサイトからISOをダウンロード

VyOS Wiki

CentOS Project

2.仮想マシンの作成

詳細はVMwereでググって下さい

 

3.VyOSの仮想NIC設定

f:id:hayato-ota-rf:20170927043926p:plain

f:id:hayato-ota-rf:20170927044030p:plain

4.CentOSの仮想NIC設定

f:id:hayato-ota-rf:20170927044339p:plain

②NATルータの設定

1.VyOSのeth0のIPを固定

DHCP側で固定させます 

※先にVyOS側のDHCP有効にしてないと、一覧に表示されないかもです

 

2.ポートフォワードの設定

VyOSのeth0に4500と500のUDPが転送されるように設定

何故4500と500のUDPなのかはNATトラバーサルを参照

f:id:hayato-ota-rf:20170927052123p:plain

③VyOSの設定

1.デフォルトログイン

初期ユーザ名:vyos

初期パスワード:vyos

2.初期設定

$ install image

画面に従って入力

Would you like to continue? (Yes/No) [Yes]: [return]

Partition (Auto/Parted/Skip) [Auto]: [return]

Install the image on? [sda]: [return]

Continue? (Yes/No) [No]: Yes

How big of a root partition should I create? (1000MB – 2147MB) [2147]MB: [return]

Which one should I copy to sda? [/config/config.boot]: [return]

Enter password for user 'vyos': [パスワード]

Retype password for user 'vyos': [パスワード]

Which drive should GRUB modify the boot partition on? [sda]: [return]

3.sshの設定

VM上だと超設定し辛いので、取り合いずssh出来るように設定

$ configure

# set interfaces ethernet eth0 address dhcp

# set service ssh

# commit

# save

# exit

$ reboot

4.rootパスワードの設定

ここからTeraTarmを使用

$ configure

# set system login user root authentication plaintext-password [パスワード]

# commit

# save

5.キーボードの設定

# su -

Password:

# vi /etc/default/keyboard

[変更前]

XKBMODEL=”pc105”

XKBLAYOUT=”us”

[変更後]

XKBMODEL=”pc106”

XKBLAYOUT=”jp”

# exit

# exit

$ reboot

6.タイムゾーンの設定

$ configure

# set system time-zone Asia/Tokyo

# commit

# save

# exit

正常な時刻か確認

$ date

7.インターフェイスの設定

$ configure

# set interfaces ethernet eth0 description OutSide

# set interfaces ethernet eth1 address 172.16.1.1/24

# set interfaces ethernet eth1 description InSide

8.VPNインターフェースとNATトラバーサルの設定

# set vpn ipsec nat-traversal enable

# set vpn ipsec ipsec-interfaces interface eth0

# set vpn ipsec nat-networks allowed-network 0.0.0.0/0 ←VPN接続を許可するIPを指定

8.AWS configのダウンロード

f:id:hayato-ota-rf:20170927052938p:plain

9.AWS configの流し込み

③の8でダウンロードしてきたテキストファイルに記載してあるコマンドをコピペして流し込み

10.VPNトンネルのローカルアドレスをVyOSのeth0のアドレスへ変更

トンネルが二つある理由は、冗長化されているからです

# set vpn ipsec site-to-site peer xxx.xxx.76.184 local-address 192.168.1.10

# set vpn ipsec site-to-site peer xxx.xxx.98.6 local-address 192.168.1.10

10.VPN IPsecプロセスの再起動及び、設定の適用

# sudo /etc/init.d/ipsec restart

# commit

# save

CentOSの設定

eth0のIPは172.16.1.2に設定

デフォルトゲートウェイは172.16.1.1に設定

DNSは192.168.11.1に設定

正常性の確認

VPNステータスがアップになっているか確認

正しく設定できていれば、ステータスがアップになる

f:id:hayato-ota-rf:20170927054057p:plain

AWSのEC2からVMnet上のCentOSにプライベートIPでPing疎通確認

EC2側の様子

f:id:hayato-ota-rf:20170927055257p:plain

CentOS側の様子

f:id:hayato-ota-rf:20170927055512p:plain

結果

自宅であっても割りと簡単にAWS VPCVPN張れるようですね

ただAWS VPNは接続時間毎の課金&自宅ルータの固定IPが必要になってくるので、家庭レベルで実用的かどうかといわれると・・・

おまけ

NATトラバーサル

詳しくは↓のリンクを見て下さい

IPsec - NATトラバーサルとは(仕組み)

簡単に説明すると、IPsecは通常だとNAPTを超えることができません

それを可能にするのがNATトラバーサルです

なんでIPsecは通常だとNAPTを超えることができないかというと

まず前提としてNAPTって何と何を変換してるでしたっけ?

送信元IPと送信元ポート番号でしたね

でわ↓のIPsecのパケット構造を見て下さい

f:id:hayato-ota-rf:20170905061529g:plain

 

NW詳しい方ならもうお分かりですよね

そうIPsecTCP/UDPヘッダを暗号化範囲に含んでいるので、パケットを受け取ったNAPTは( ゚Д゚)ハァ?ってなってしまうんですね

そうならないようにNATトラバーサルでは、暗号化した後のIPsecパケットにUDPヘッダを新たに付与します

f:id:hayato-ota-rf:20170927061852p:plain

その付与するUDP番号が、4500(IPsec NAT-T)と500(IKE)なんで②の2では、4500と500のUDPをポートフォワーディングさせたんです

参考サイト

VyOS - VyOSの初期設定

VyOSを利用してルータを自作する。導入編 | インフラエンジニアになりたいSIerのwebサイト

VMware Playerの仮想ネットワーク | NAT、ブリッジ、ホストオンリーの仕組み