AWS VPCと自宅LANをVPN接続してみた
構成図
AWS側の設定
①仮想プライベートゲートウェイの設定
1.VPCコンソールで、仮想プライベートゲートウェイの作成をクリック
2.、各パラメータを設定し、仮想プライベートゲートウェイの作成をクリック
②カスタマーゲートウェイの設定
1.VPCコンソールで、カスタマーゲートウェイの作成をクリック
2.各パラメータを設定し、カスタマーゲートウェイの作成をクリック
③VPN接続の設定
2.各パラメータを設定し、VPN接続の作成をクリック
④VPCルートテーブルの設定
1.宛先が自宅LANのIP(172.16.1.0/24)は、①で作成した仮想プライベートゲートウェイに向くように設定
自宅側の設定
私はYAMAHAやCiscoルータを持っていないので、ホスト型VMwereを利用し仮想NW上にVyOSを構築します
今回は検証なので良いのですが、実際に運用するとなると物理マシンにVyOSを導入したものを使用するか、YAMAHAやCiscoルータを使用する必要がありそうですね
仮想NW構成図
①仮想マシンの設定
1.ISOのダウンロード
↓のサイトからISOをダウンロード
2.仮想マシンの作成
詳細はVMwereでググって下さい
3.VyOSの仮想NIC設定
②NATルータの設定
1.VyOSのeth0のIPを固定
DHCP側で固定させます
※先にVyOS側のDHCP有効にしてないと、一覧に表示されないかもです
2.ポートフォワードの設定
VyOSのeth0に4500と500のUDPが転送されるように設定
何故4500と500のUDPなのかはNATトラバーサルを参照
③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”
6.タイムゾーンの設定
正常な時刻か確認
$ 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のダウンロード
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
④CentOSの設定
eth0のIPは172.16.1.2に設定
デフォルトゲートウェイは172.16.1.1に設定
DNSは192.168.11.1に設定
正常性の確認
①VPNステータスがアップになっているか確認
正しく設定できていれば、ステータスがアップになる
②AWSのEC2からVMnet上のCentOSにプライベートIPでPing疎通確認
EC2側の様子
CentOS側の様子
結果
自宅であっても割りと簡単にAWS VPCとVPN張れるようですね
ただAWS VPNは接続時間毎の課金&自宅ルータの固定IPが必要になってくるので、家庭レベルで実用的かどうかといわれると・・・
おまけ
NATトラバーサル
詳しくは↓のリンクを見て下さい
簡単に説明すると、IPsecは通常だとNAPTを超えることができません
それを可能にするのがNATトラバーサルです
なんでIPsecは通常だとNAPTを超えることができないかというと
まず前提としてNAPTって何と何を変換してるでしたっけ?
送信元IPと送信元ポート番号でしたね
でわ↓のIPsecのパケット構造を見て下さい
NW詳しい方ならもうお分かりですよね
そうIPsecはTCP/UDPヘッダを暗号化範囲に含んでいるので、パケットを受け取ったNAPTは( ゚Д゚)ハァ?ってなってしまうんですね
そうならないようにNATトラバーサルでは、暗号化した後のIPsecパケットにUDPヘッダを新たに付与します
その付与するUDP番号が、4500(IPsec NAT-T)と500(IKE)なんで②の2では、4500と500のUDPをポートフォワーディングさせたんです