こんにちは。久々に登場のエンジニア(?)のhamanunです。
システムのクラウド化が進む中で、クラウドへの安全な接続というのはほぼ必須になっています。
そこで、今日は手元にあったYAMAHA RTX830を使って実際にAWSへのVPN接続を試してみました。
目次
ネットワーク構成
今回は以下のような構成(イメージ)で設定をしていきたいと思います。
AWS側の前準備
まず、VPN接続をするためにAWS側での準備をしていきます。
VPCを作成する
今回は新規でVPN接続用のVPCを作ります。
必要な項目を入力して「作成」すると、以下のようにVPCが作成されます。
サブネットを作成する
VPC欄には先程作成したVPC IDを選択します。また、IPv4 CIDR ブロック には今回 10.0.1.0/24 を設定します。
「作成」すると、以下のようにサブネットが作成されます。
ルートテーブルを作成する
次にVPC内のルートを定義するために、新規でルートテーブルを作成します。
VPC欄にはサブネットの時と同様に、作成したVPC IDを選択します。
「作成」すると、以下のようにルートテーブルが作成されます。
カスタマーゲートウェイ(CGW)を作成する
カスタマーゲートウェイはAWSからみた対向のゲートウェイ(今回で言えばRTX830)となります。
ルーティングは「動的」を選択、BGP ASNはデフォルトの「65000」、IPアドレスには(拠点側のglobal IP)を設定して「作成」します。
仮想プライベートゲートウェイ(VGW)を作成し、VPCにアタッチする
仮想プライベートゲートウェイはVPC側のゲートウェイでCGWとのVPNの受け口となります。
ASNは「AmazonのデフォルトASN」を選択して「作成」します。
作成できたら、作成したVGWを選択し、アクション→VPCにアタッチを選択します。
VPCに作成したVPCを選択して「アタッチ」します。
ルート伝搬の設定をする
VPCにVGWをアタッチしたのでルート情報を更新します。
VGWからルーティングを伝搬させるので、ルートテーブルを選択し、
詳細のルート伝搬タグのルート伝搬の編集から表示された画面で、VGWの伝搬をチェックします。
VPN接続を作成する
ここまで設定できたら、AWS側の設定もあと一息です。
サイト間のVPN接続画面より、VPN接続の作成をします。
Target Gateway Typeには「Virtual Private Gateway」を選択し、仮想プライベートゲートウェイに作成したVGWを選択します。
カスタマーゲートウェイには「既存」を選択し、Customer Gateway IDに作成したCGWを選択します。
ルーティングオプションは「動的」、Tunnel Inside Ip Versionには「IPv4」を選択します。
その他の項目についてはデフォルトのまま「作成」すると、以下のようにVPN接続が作成されます。
VPN接続を作成する
VPN接続の作成ができたら、設定をダウンロードします。
設定のダウンロードで以下のダイアログが表示されるので、ベンダーに「YAMAHA」、プラットフォーム「RTX Routers」、ソフトウェア「Rev.10.01.16+」を選択して「ダウンロード」します。
※ソフトウェアは作業時点で更新されている可能性があります。
こちらでAWS側の準備は完了となります。
今回は手動でひとつずつ作成していきましたが、「VPCウィザードの起動」からまとめて作成することも可能です。
興味がある方はやってみてください。
RTX830の設定
ここからはRTX830側の設定になります。
設定はダウンロードしたものの、YAMAHAさんのサイトにWebGUI設定なるものがあったのでそれに沿ってやっていきたいと思います。
GUIでの設定
設定手順は以下のページ(のクラウド接続の設定)を参照してやっていきました。
https://network.yamaha.com/setting/router_firewall/cloud/amazon_vpc/setup_rt-gui
ですが、7.まで実施したところで・・・・
なんと、AWSからの設定情報取得に失敗してしまいました。
アクセスキーなどは何度も確認してトライしたし、IAMの権限も間違っていない・・・
AWS側の仕様などが変わってしまったのか、しばらく悩みましたが別の方法でやることに(結局解決してない
AWSからの設定ファイルのインポート
GUIでの設定に失敗してしまったので、ファイルのインポート(tftp)でやりたいと思います。
RTX830でtftpを許可します。
1 |
tftp host lan |
今回はNAT配下での接続となるので、RTX830へ以下の設定も行います。
1 2 3 4 |
nat descriptor address outer 1 (GLOBAL IP ADDRESS) nat descriptor masquerade incoming 1 reject nat descriptor masquerade static 1 1 (LOCAL RTX830 IP ADDRESS) udp 500 nat descriptor masquerade static 1 2 (LOCAL RTX830 IP ADDRESS) esp |
AWSよりダウンロードした設定ファイルをアップロードします。
1 2 |
tftp (LOCAL RTX830 IP ADDRESS) > put vpn-xxxxxxxxxxxxxxxxxx.txt config/(password) |
※AWSからダウンロードしたファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 |
# Amazon Web Services # Virtual Private Cloud # AWS utilizes unique identifiers to manage the configuration of # a VPN Connection. Each VPN Connection is assigned an identifier and is # associated with two other identifiers, namely the # Customer Gateway Identifier and Virtual Private Gateway Identifier. # # Your VPN Connection ID : (VPN Connection ID) # Your Virtual Private Gateway ID : (Virtual Private Gateway ID) # Your Customer Gateway ID : (Customer Gateway ID) # # # This configuration consists of two tunnels. Both tunnels must be # configured on your Customer Gateway. # # -------------------------------------------------------------------------------- # IPSec Tunnel #1 # -------------------------------------------------------------------------------- # #1: Internet Key Exchange (IKE) Configuration # # A policy is established for the supported ISAKMP encryption, # authentication, Diffie-Hellman, lifetime, and key parameters. # # Please note, these sample configurations are for the minimum requirement of AES128, SHA1, and DH Group 2. # Category "VPN" connections in the GovCloud region have a minimum requirement of AES128, SHA2, and DH Group 14. # You will need to modify these sample configuration files to take advantage of AES256, SHA256, or other DH groups like 2, 14-18, 22, 23, and 24. # NOTE: If you customized tunnel options when creating or modifying your VPN connection, you may need to modify these sample configurations to match the custom settings for your tunnels. # # Higher parameters are only available for VPNs of category "VPN," and not for "VPN-Classic". # The address of the external interface for your customer gateway must be a static address. # Your customer gateway may reside behind a device performing network address translation (NAT). # To ensure that NAT traversal (NAT-T) can function, you must adjust your firewall !rules to unblock UDP port 4500. If not behind NAT, we recommend disabling NAT-T. # tunnel select 1 ipsec ike encryption 1 aes-cbc ipsec ike group 1 modp1024 ipsec ike hash 1 sha # This line stores the Pre Shared Key used to authenticate the # tunnel endpoints. # ipsec ike pre-shared-key 1 text (Pre Shared Key) # #2: IPSec Configuration # The IPSec policy defines the encryption, authentication, and IPSec # mode parameters. # Category "VPN" connections in the GovCloud region have a minimum requirement of AES128, SHA2, and DH Group 14. # Please note, you may use these additionally supported IPSec parameters for encryption like AES256 and other DH groups like 2, 5, 14-18, 22, 23, and 24. # NOTE: If you customized tunnel options when creating or modifying your VPN connection, you may need to modify these sample configurations to match the custom settings for your tunnels. # # Higher parameters are only available for VPNs of category "VPN," and not for "VPN-Classic". # # Note that there are a global list of IPSec policies, each identified by # sequence number. This policy is defined as #201, which may conflict with # an existing policy using the same number. If so, we recommend changing # the sequence number to avoid conflicts. # ipsec tunnel 201 ipsec sa policy 201 1 esp aes-cbc sha-hmac # The IPSec profile references the IPSec policy and further defines # the Diffie-Hellman group and security association lifetime. ipsec ike duration ipsec-sa 1 3600 ipsec ike pfs 1 on # Additional parameters of the IPSec configuration are set here. Note that # these parameters are global and therefore impact other IPSec # associations. # This option instructs the router to clear the "Don't Fragment" # bit from packets that carry this bit and yet must be fragmented, enabling # them to be fragmented. # ipsec tunnel outer df-bit clear # This option enables IPSec Dead Peer Detection, which causes periodic # messages to be sent to ensure a Security Association remains operational. ipsec ike keepalive use 1 on dpd 10 3 # -------------------------------------------------------------------------------- # #3: Tunnel Interface Configuration # # A tunnel interface is configured to be the logical interface associated # with the tunnel. All traffic routed to the tunnel interface will be # encrypted and transmitted to the VPC. Similarly, traffic from the VPC # will be logically received on this interface. # # The address of the interface is configured with the setup for your # Customer Gateway. If the address changes, the Customer Gateway and VPN # Connection must be recreated with Amazon VPC. # ipsec ike local address 1 (CGW IP address) # If you are using NAT(IP masquerade) on this device, then you should specify the private IP address for the argument: # ipsec ike local address <CGW local IP address> # Please specify the same local IP address for the 'nat descriptor masquerade' commands: # nat descriptor address inner 1 <CGW local IP address range> # nat descriptor masquerade static 1 1 <CGW local IP address> udp 500 # nat descriptor masquerade static 1 2 <CGW local IP address> esp * # # For more information, please refer: http://www.rtpro.yamaha.co.jp/RT/docs/ipsec/nat.html # ipsec ike remote address 1 (xxx.xxx.xxx.xxx) ip tunnel address (xxx.xxx.xxx.xxx)/30 ip tunnel remote address (xxx.xxx.xxx.xxx) ipsec ike local id 1 0.0.0.0/0 ipsec ike remote id 1 0.0.0.0/0 # This option causes the router to reduce the Maximum Segment Size of # TCP packets to prevent packet fragmentation ip tunnel tcp mss limit 1379 tunnel enable 1 tunnel select none ipsec auto refresh on # -------------------------------------------------------------------------------- # -------------------------------------------------------------------------------- # #4: Border Gateway Protocol (BGP) Configuration # # BGP is used within the tunnel to exchange prefixes between the # Virtual Private Gateway and your Customer Gateway. The Virtual Private Gateway # will announce the prefix corresponding to your VPC. # # The BGP timers are adjusted to provide more rapid detection of outages. # # The local BGP Autonomous System Number (ASN) (65000) is configured # as part of your Customer Gateway. If the ASN must be changed, the # Customer Gateway and VPN Connection will need to be recreated with AWS. # bgp use on bgp autonomous-system 65000 bgp neighbor 1 64512 (xxx.xxx.xxx.xxx) hold-time=30 local-address=(xxx.xxx.xxx.xxx) # To advertise additional prefixes to Amazon VPC, copy the 'import filter' statement and # identify the prefix you wish to advertise. Make sure the # prefix is present in the routing table of the device with a valid next-hop. # For example, the following two lines will advertise 192.168.0.0/16 and 10.0.0.0/16 to Amazon VPC # # bgp import filter 1 equal 10.0.0.0/16 # bgp import filter 1 equal 192.168.0.0/16 # bgp import filter 1 equal 0.0.0.0/0 bgp import 64512 static filter 1 bgp configure refresh # -------------------------------------------------------------------------------- # IPSec Tunnel #2 # -------------------------------------------------------------------------------- # #1: Internet Key Exchange (IKE) Configuration # # A policy is established for the supported ISAKMP encryption, # authentication, Diffie-Hellman, lifetime, and key parameters. # # Please note, these sample configurations are for the minimum requirement of AES128, SHA1, and DH Group 2. # Category "VPN" connections in the GovCloud region have a minimum requirement of AES128, SHA2, and DH Group 14. # You will need to modify these sample configuration files to take advantage of AES256, SHA256, or other DH groups like 2, 14-18, 22, 23, and 24. # NOTE: If you customized tunnel options when creating or modifying your VPN connection, you may need to modify these sample configurations to match the custom settings for your tunnels. # # Higher parameters are only available for VPNs of category "VPN," and not for "VPN-Classic". # The address of the external interface for your customer gateway must be a static address. # Your customer gateway may reside behind a device performing network address translation (NAT). # To ensure that NAT traversal (NAT-T) can function, you must adjust your firewall !rules to unblock UDP port 4500. If not behind NAT, we recommend disabling NAT-T. # tunnel select 2 ipsec ike encryption 2 aes-cbc ipsec ike group 2 modp1024 ipsec ike hash 2 sha # This line stores the Pre Shared Key used to authenticate the # tunnel endpoints. # ipsec ike pre-shared-key 2 text (Pre Shared Key) # #2: IPSec Configuration # The IPSec policy defines the encryption, authentication, and IPSec # mode parameters. # Category "VPN" connections in the GovCloud region have a minimum requirement of AES128, SHA2, and DH Group 14. # Please note, you may use these additionally supported IPSec parameters for encryption like AES256 and other DH groups like 2, 5, 14-18, 22, 23, and 24. # NOTE: If you customized tunnel options when creating or modifying your VPN connection, you may need to modify these sample configurations to match the custom settings for your tunnels. # # Higher parameters are only available for VPNs of category "VPN," and not for "VPN-Classic". # # Note that there are a global list of IPSec policies, each identified by # sequence number. This policy is defined as #202, which may conflict with # an existing policy using the same number. If so, we recommend changing # the sequence number to avoid conflicts. # ipsec tunnel 202 ipsec sa policy 202 2 esp aes-cbc sha-hmac # The IPSec profile references the IPSec policy and further defines # the Diffie-Hellman group and security association lifetime. ipsec ike duration ipsec-sa 2 3600 ipsec ike pfs 2 on # Additional parameters of the IPSec configuration are set here. Note that # these parameters are global and therefore impact other IPSec # associations. # This option instructs the router to clear the "Don't Fragment" # bit from packets that carry this bit and yet must be fragmented, enabling # them to be fragmented. # ipsec tunnel outer df-bit clear # This option enables IPSec Dead Peer Detection, which causes periodic # messages to be sent to ensure a Security Association remains operational. ipsec ike keepalive use 2 on dpd 10 3 # -------------------------------------------------------------------------------- # #3: Tunnel Interface Configuration # # A tunnel interface is configured to be the logical interface associated # with the tunnel. All traffic routed to the tunnel interface will be # encrypted and transmitted to the VPC. Similarly, traffic from the VPC # will be logically received on this interface. # # The address of the interface is configured with the setup for your # Customer Gateway. If the address changes, the Customer Gateway and VPN # Connection must be recreated with Amazon VPC. # ipsec ike local address 2 (CGW IP address) # If you are using NAT(IP masquerade) on this device, then you should specify the private IP address for the argument: # ipsec ike local address <CGW local IP address> # Please specify the same local IP address for the 'nat descriptor masquerade' commands: # nat descriptor address inner 1 <CGW local IP address range> # nat descriptor masquerade static 1 1 <CGW local IP address> udp 500 # nat descriptor masquerade static 1 2 <CGW local IP address> esp * # # For more information, please refer: http://www.rtpro.yamaha.co.jp/RT/docs/ipsec/nat.html # ipsec ike remote address 2 (xxx.xxx.xxx.xxx) ip tunnel address (xxx.xxx.xxx.xxx)/30 ip tunnel remote address (xxx.xxx.xxx.xxx) ipsec ike local id 2 0.0.0.0/0 ipsec ike remote id 2 0.0.0.0/0 # This option causes the router to reduce the Maximum Segment Size of # TCP packets to prevent packet fragmentation ip tunnel tcp mss limit 1379 tunnel enable 2 tunnel select none ipsec auto refresh on # -------------------------------------------------------------------------------- # -------------------------------------------------------------------------------- # #4: Border Gateway Protocol (BGP) Configuration # # BGP is used within the tunnel to exchange prefixes between the # Virtual Private Gateway and your Customer Gateway. The Virtual Private Gateway # will announce the prefix corresponding to your VPC. # # The BGP timers are adjusted to provide more rapid detection of outages. # # The local BGP Autonomous System Number (ASN) (65000) is configured # as part of your Customer Gateway. If the ASN must be changed, the # Customer Gateway and VPN Connection will need to be recreated with AWS. # bgp use on bgp autonomous-system 65000 bgp neighbor 2 64512 (xxx.xxx.xxx.xxx) hold-time=30 local-address=(xxx.xxx.xxx.xxx) # To advertise additional prefixes to Amazon VPC, copy the 'import filter' statement and # identify the prefix you wish to advertise. Make sure the # prefix is present in the routing table of the device with a valid next-hop. # For example, the following two lines will advertise 192.168.0.0/16 and 10.0.0.0/16 to Amazon VPC # # bgp import filter 1 equal 10.0.0.0/16 # bgp import filter 1 equal 192.168.0.0/16 # bgp import filter 1 equal 0.0.0.0/0 bgp import 64512 static filter 1 bgp configure refresh # Additional Notes and Questions # - Amazon Virtual Private Cloud Getting Started Guide: # http://docs.amazonwebservices.com/AmazonVPC/latest/GettingStartedGuide # - Amazon Virtual Private Cloud Network Administrator Guide: # http://docs.amazonwebservices.com/AmazonVPC/latest/NetworkAdminGuide # - Yamaha router's manual: # http://www.rtpro.yamaha.co.jp/RT/docs/amazon-vpc/index.html # - Yamaha router's NAT settings in IPsec: # http://www.rtpro.yamaha.co.jp/RT/docs/ipsec/nat.html # - XSL Version: 2009-07-15-1119716 |
正常にアップロードできたら再度RTX830へ以下の設定を行います。
(NAT-Tを有効にする為)
1 2 |
ipsec ike nat-traversal 1 on ipsec ike nat-traversal 2 on |
これで接続設定が完了しました。
実際の接続状態を確認してみましょう。
【AWS側】ステータスが「アップ」となっていればOKです。
【RTX830側】接続状態欄でルーター間が緑の矢印となっていればOKです。
CLIでも確認してみましょう。
「トンネルインターフェースは接続されています」と出れば問題ありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# show status tunnel 1 TUNNEL[1]: 説明: インタフェースの種類: IPsec トンネルインタフェースは接続されています 開始: 2020/10/14 15:18:43 通信時間: 1日2時間38分28秒 受信: (IPv4) 27155 パケット [1861955 オクテット] (IPv6) 0 パケット [0 オクテット] 送信: (IPv4) 48114 パケット [2948683 オクテット] (IPv6) 0 パケット [0 オクテット] # show status tunnel 2 TUNNEL[2]: 説明: インタフェースの種類: IPsec トンネルインタフェースは接続されています 開始: 2020/10/14 15:18:43 通信時間: 1日2時間38分30秒 受信: (IPv4) 56124 パケット [3077347 オクテット] (IPv6) 0 パケット [0 オクテット] 送信: (IPv4) 187578 パケット [102150424 オクテット] (IPv6) 0 パケット [0 オクテット] |
BGPのステータスも見てみましょう。
「state = Established」となっていればOKです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# show status bgp neighbor BGP neighbor is (xxx.xxx.xxx.xxx), remote AS 64512, local AS 65000, external link BGP version 4, remote router ID (xxx.xxx.xxx.xxx) BGP state = Established, up for 05:37:01 Last read 00:00:09, hold time is 30, keepalive interval is 10 seconds Received 2024 messages, 0 notifications, 0 in queue Sent 2026 messages, 0 notifications, 0 in queue Connection established 4; dropped 3 Last reset 06:22:29 Local host: (xxx.xxx.xxx.xxx), Local port: 179 Foreign host: (xxx.xxx.xxx.xxx), Foreign port: 38014 BGP neighbor is (xxx.xxx.xxx.xxx), remote AS 64512, local AS 65000, external link BGP version 4, remote router ID (xxx.xxx.xxx.xxx) BGP state = Established, up for 16:53:54 Last read 00:00:00, hold time is 30, keepalive interval is 10 seconds Received 6086 messages, 0 notifications, 0 in queue Sent 6088 messages, 0 notifications, 0 in queue Connection established 3; dropped 2 Last reset 17:39:16 Local host: (xxx.xxx.xxx.xxx), Local port: 179 Foreign host: (xxx.xxx.xxx.xxx), Foreign port: 33848 |
正常に接続できていない場合は、AWSさんでトラブルシューティングのページが公開されているので確認しましょう!
https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/Yamaha_Troubleshooting.html
接続が切れた・・・!?
後日、VPNが2-3秒切断される現象がありました。
AWSへ問い合わせたところ以下のような回答をいただきました。
1 2 3 |
DPD 有効時には問題(Rekey 中に DPD 受け取るとダウンする事象)が発生する事例を確認しております。 ipsec ike keepalive use 1 on dpd 10 3 事象が継続する場合、 DPD の無効化について、`no ipsec ike keepalive use gateway_id [switch ....] `として実施いただいてもよろしいでしょうか。削除頂いた場合でも BGP のキープアライブは使用されます。 |
ということなので、早速設定をしてみました。
1 2 |
no ipsec ike keepalive use 1 on dpd 10 3 no ipsec ike keepalive use 2 on dpd 10 3 |
その後、2,3日様子をみましたがVPN切断される事象はなかったので解決されていると思います。めでたし。
これで今回の「してみました」は終了です。長々とおつきあいありがとうございました。
- AWSサイト間のVPN接続をYAMAHA RTX830で設定してみました - 2020-11-04
- AWSでEFSを利用してみました - 2018-08-30
- 今さら聞けない UI / UX - 2018-06-11