LoginSignup
6
9

More than 3 years have passed since last update.

GCPでRTX1200とCloud VPN構成(BGP)

Last updated at Posted at 2019-10-23

GCPでSite to Site VPN

GCPで自宅のネットワークとVPNを接続してみたので、その内容を記載します。
AWSとのSite to Site VPNは以前からやってた(記事にはしてません)ので、GCPだとどんな感じかなぁというのがきっかけです。

ちなみにネットワークエンジニアではないので、間違ってる解釈とかあるかもです。

1. 構成図

結果として環境はこんな感じになりました。

GCP_VPN_BGP.png

1.1. GCP VPC

AWSと近い考え方ではありますが、VPCは少し違います。
VPCはただの定義(箱)みたいなもので、サブネットでリージョンとネットワークCIDRを設定します。
新規にVPCを構成し、リージョンは今回大阪を選びました。zoneは3つ存在します。
通信確認用に1台GCEを1台用意しときます。
(私の名前が加藤なので、ネーミングの頭にkato-ってつけてます。)

【サブネット】

名前 領域 IPアドレス範囲 ゲートウェイ
kato-subnet-osaka asia-northeast2 172.28.0.0/20 172.28.0.0

1.2. 家 ネットワーク

家のネットワークは単純です。
回線1つ契約してて、業者からレンタルしてるルータがフロントにいますが、スルーさせて個人でもってるrtx1200でグローバルIPを持つ構成にしてます。

【rtx1200】

pp lan IPアドレス IPアドレス範囲
pp1 lan3 グローバルIP : xxx.xxx.xxx.xxx (pppoe) -
- lan1 プラベートIP : 192.168.123.254 192.168.123.0/24
ip route default gateway pp 1
ip lan1 address 192.168.123.254/24
ip lan1 proxyarp on
ip lan1 secure filter in 100000 100001 100002 100003 100004 100005 100006 10000
7 100099
pp select 1
 description pp PRV/PPPoE/0:eo
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan3
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname [プロバイダ接続ID] [プロバイダ接続パスワード]
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp secure filter in 200003 200020 200021 200022 200023 200024 200025 200030
 200032
 ip pp secure filter out 200013 200020 200021 200022 200023 200024 200025 20002
6 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
 pp enable 1

secure filterは環境によって違うと思います。

2. Cloud VPN構成

ネットワークの「ハイブリッド接続」画面より
最初何も作成したことがない場合、こんな感じの画面です。(2019/10現在です。今後ガラッと画面遷移は変わるかもしれません。)

01_ハイブリッド接続1.png

2.1. クラウドルーター

そのままVPNのウィザードで進めてもいいですが、流れ的にはまず「クラウドルーター」を作成します。

02_クラウドルーター1.png

【クラウドルーター】
クラウドルーター側のASNを設定します。BGP使うので必要です。
今回の環境ではアドバタイズさせる必要のあるネットワークが1つのサブネットしか存在しないため、上図ではカスタムですが、デフォルトでもいいです。

名前 ネットワーク リージョン Google ASN アドバタイズされたルート
kato-cloud-router kato-vpc asia-northeast2 (大阪) 64512 Cloud Routerに表示されるすべてのサブネットにアドバタイズ(デフォルト)

2.2. VPNの作成(IPsecまで)

2.2.1. VPNオプション

ウィザード最初の画面
今回は「高可用性(HA)VPN」を選択します。
03_vpnオプション.png

2.2.2. Cloud HA VPNゲートウェイの作成

04_vpn作成画面.png

VPNゲートウェイの名前 VPCネットワーク リージョン
kato-vpn-gateway kato-vpc asia-northeast2 (大阪)

2.2.3. VPNトンネルの追加


ここでは選択されたVPNゲートウェイの情報が正しいことを確認します。
VPNゲートウェイにインターフェースが2つ、パブリックIPアドレスが自動で付与されているはずです。

インターフェース番号 パブリックIPアドレス
0 35.242.45.253
1 35.220.45.2


「ピアVPNゲートウェイ」を選択しますが、この時点で作成されていないため、
「オンプレミスまたは非Google Cloud」を選択し、「新しいピアVPNゲートウェイを作成する」を選択します。

2.2.4. ピアVPNゲートウェイのを作成

ピアVPNゲートウェイを以下の形で作成しました。
05_ピアVPNゲートウェイ(rtx1200).png

名前 ピアVPNゲートウェイ インターフェース インターフェース0のIPアドレス
kato-rtx1200 1つのインターフェース xxx.xxx.xxx.xxx(家のグローバルIPアドレス)

2.2.5. トンネル設定

まずはトンネルを1つ作成します。
先に作成したクラウドルーターを選択し、インターフェースを指定します。

ピアVPNゲートウェイはインターフェースが1つですが、VPNゲートウェイは2つあるので、まずは「インターフェーズ 0」を指定します。

IKEバージョンは2とします。

IKE事前共有キーはここで生成してしまっていいです。
05_vpnトンネル1.png

2.2.6. BGPセッションの構成

BGPはここで設定してしまってもよいですが、本手順ではまずIPsecのトンネルが問題なく接続されることを確認した後で、BGPを構成します。
その方が、後々エラーでうまく接続できない場合に、ルーター側で設定するコンフィグの切り分けがしやすいからです。
06_vpnトンネル1_bgp.png

2.2.7. rtx1200 VPN設定(IPsecまで)

① rtx1200 トンネル1
こんな感じ

tunnel select 81
 ipsec tunnel 101
  ipsec sa policy 101 81 esp aes-cbc sha-hmac
  ipsec ike version 81 2
  ipsec ike duration ipsec-sa 81 3600
  ipsec ike encryption 81 aes-cbc
  ipsec ike group 81 modp1024
  ipsec ike hash 81 sha
  ipsec ike keepalive use 81 on dpd 10 3
  ipsec ike local address 81 192.168.123.254(家のルーター プライベートIPアドレス)
  ipsec ike local name 81 xxx.xxx.xxx.xxx(家のルーター グローバルIPアドレス) ipv4-addr
  ipsec ike pfs 81 on
  ipsec ike pre-shared-key 81 text 【IKE 事前共有キー】
  ipsec ike remote address 81 35.242.45.253(VPNゲートウェイ インターフェース0)
  ipsec ike remote name 81 35.242.45.253(VPNゲートウェイ インターフェース0) ipv4-addr
 ipsec tunnel outer df-bit clear
 ip tunnel tcp mss limit 1379
 tunnel enable 81

tunnel select none
ipsec auto refresh on

IKEバージョンが2なので、明示的に指定してます。
ipsec ike version 81 2
IKEバージョンが2の場合、下記が必要かと思われます。
ipsec ike local name 81 xxx.xxx.xxx.xxx(家のルーター グローバルIPアドレス) ipv4-addr
ipsec ike remote name 81 35.242.45.253(VPNゲートウェイ インターフェース0) ipv4-addr

2.2.8. IPsecステータス確認

ここで一度状態を確認します。
うまくいってればこんな感じ。

【GCP側】
08_vpnトンネル確認.png

【rtx1200側】

# show ipsec sa

sa   sgw isakmp connection   dir  life[s] remote-id
-----------------------------------------------------------------------------
1     81   -    ike          -    9547    35.242.45.253
2     81   1    tun[081]esp  send 3285    35.242.45.253
3     81   1    tun[081]esp  send 580     35.242.45.253
4     81   1    tun[081]esp  recv 580     35.242.45.253
5     81   1    tun[081]esp  recv 3285    35.242.45.253

うまくいかない場合は、GCP側のログ、rtx1200側のログをみてつぶしていきましょう。

https://network.yamaha.com/setting/router_firewall/cloud/amazon_vpc/setup_rt
AWSのVPNのときも必要となった設定で下記があります。VPN(IPsec)に使うパケットに必要です。
トンネル以外でこの設定が必要になるかと思います。

参考:

ip filter 200080 pass * 192.168.123.254 udp * 500
ip filter 200081 pass * 192.168.123.254 esp * *

nat descriptor type 1000 masquerade
nat descriptor address outer 1000 (ルーターのグローバルIPアドレス)
nat descriptor masquerade static 1000 1 192.168.123.254 udp 500
nat descriptor masquerade static 1000 2 192.168.123.254 esp

私の実際の設定:

ip filter 200101 pass * 192.168.123.254 esp
ip filter 200102 pass * 192.168.123.254 udp * 500

nat descriptor type 1000 masquerade
nat descriptor address outer 1000 ipcp
nat descriptor address inner 1000 auto
nat descriptor masquerade static 1000 1 192.168.123.254 esp
nat descriptor masquerade static 1000 2 192.168.123.254 udp 500

プロバイダ設定 pp1

pp select 1
 ip pp secure filter in 200101 200102 #デフォルトからルールを追記した形でここに記載してる(本当はもっと多いし、全部記載する必要がある)
 ip pp nat descriptor 1000 #NATのルールをここに適用

2.3. VPNの作成(BGP構成)

2.3.1. BGPセッションを構成

作成したトンネルを選択して、「BGPセッションを構成」をクリックします。
09_トンネルbgp1_設定1.png

10_トンネル1_bgp設定2.png

図ではカスタムルートになってますが、実際の設定は「Cloud Routerのアドバタイズを使用(デフォルト)」を選択してます。

名前 ピアASN Cloud RouterのBGP IP BGPピアIP アドバタイズされたルート
kato-tvpn-tunnel1-bgp 65100(家のルーター側) 169.254.0.1 169.254.0.2 Cloud Routerのアドバタイズを使用(デフォルト)

BGP IPについて。
1対1の通信なので、CIDRは/30ならなんでもよいと思われるが、GCP側のマニュアルに合わせる感じで。

2.3.2. rtx1200 VPN設定(BGP)

② rtx1200 トンネル1 BGP

tunnel select 81
 ip tunnel address 169.254.0.2/30
 ip tunnel remote address 169.254.0.1
tunnel select none

bgp use on
bgp autonomous-system 65100
bgp neighbor 1 64512 169.254.0.1 hold-time=30 local-address=169.254.0.2
bgp import filter 1 equal 192.168.123.0/24
bgp import 64512 static filter 1
bgp configure refresh

もしかしたら、最初の4行はいらないかもしれない。(AWSのときには入れてたので今回も入れました)

bgp neighbor 1 64512 169.254.0.1 hold-time=30 local-address=169.254.0.2
ここは重要。

bgp import filter 1 equal 192.168.123.0/24
bgp import 64512 static filter 1
これも重要。
GCP側にオンプレ側のネットワークをアドバタイズする必要があるので、広告したいネットワークを記載
この場合、オンプレ側のプライベートネットワークCIDR。

2.3.3. VPNのステータス確認

ここでBGPまでが完了するはずなので、ステータスを確認します。

2.3.3.1. GCP クラウドルーター確認

11_bgp確認1.png

2.3.3.2. GCP VPN確認

12_bgp確認2.png

2.3.3.3. rtx1200側の確認

# show status bgp neighbor 
BGP neighbor is 169.254.0.1, remote AS 64512, local AS 65100, external link
  BGP version 4, remote router ID 169.254.0.1
  BGP state = Established, up for 05:20:47
  Last read 00:00:03, hold time is 30, keepalive interval is 10 seconds
  Received 1925 messages, 0 notifications, 0 in queue
  Sent 1929 messages, 0 notifications, 0 in queue
  Connection established 8; dropped 7
  Last reset 05:21:11
Local host: 169.254.0.2, Local port: 179
Foreign host: 169.254.0.1, Foreign port: 40805

2.4. トンネルが1つでVPN構成完了

ここまでで、ひとまず完了です。
トンネル1つでVPNができてます。
ただ、ここはAWSのVPNと同様トンネルを2つ構成したい。(オンプレのルーターは1つやからあんまり意味ないけど。)

ということでトンネルをもう1つ追加します。
さくっと流します。

2.4.1. トンネル + BGP設定

13_vpnトンネル2.png

14_トンネル2_bgp設定1.png

2.4.2. rtx1200 トンネル + BGP

tunnel select 82
 ipsec tunnel 102
  ipsec sa policy 102 82 esp aes-cbc sha-hmac
  ipsec ike version 82 2
  ipsec ike duration ipsec-sa 82 3600
  ipsec ike encryption 82 aes-cbc
  ipsec ike group 82 modp1024
  ipsec ike hash 82 sha
  ipsec ike keepalive use 82 on dpd 10 3
  ipsec ike local address 82 192.168.123.254(家のルーター プライベートIPアドレス)
  ipsec ike local name 82 xxx.xxx.xxx.xxx(家のルーター グローバルIPアドレス) ipv4-addr
  ipsec ike pfs 82 on
  ipsec ike pre-shared-key 82 text 【IKE 事前共有キー】
  ipsec ike remote address 82 35.220.45.2(VPNゲートウェイ インターフェース1)
  ipsec ike remote name 82 35.220.45.2(VPNゲートウェイ インターフェース1) ipv4-addr
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.0.6/30
 ip tunnel remote address 169.254.0.5
 ip tunnel tcp mss limit 1379
 tunnel enable 82

tunnel select none

bgp neighbor 2 64512 169.254.0.5 hold-time=30 local-address=169.254.0.6
bgp configure refresh

2.4.3. VPNのステータス確認

2.4.3.1. GCP クラウドルーター確認

15_bgp2確認1.png

2.4.3.2. GCP VPN確認

16_bgp2確認2.png

2.4.3.3. rtx1200側の確認

IPsec

# show ipsec sa

sa   sgw isakmp connection   dir  life[s] remote-id
-----------------------------------------------------------------------------
12    81   -    ike          -    18293   35.242.45.253
26    81   12   tun[081]esp  send 1212    35.242.45.253
27    81   12   tun[081]esp  recv 1212    35.242.45.253
31    82   -    ike          -    27131   35.220.45.2
32    82   31   tun[082]esp  send 1931    35.220.45.2
33    82   31   tun[082]esp  recv 1931    35.220.45.2

BGP

# show status bgp neighbor 
BGP neighbor is 169.254.0.1, remote AS 64512, local AS 65100, external link
  BGP version 4, remote router ID 169.254.0.1
  BGP state = Established, up for 00:26:41
  Last read 00:00:09, hold time is 30, keepalive interval is 10 seconds
  Received 161 messages, 0 notifications, 0 in queue
  Sent 164 messages, 0 notifications, 0 in queue
  Connection established 1; dropped 0
  Last reset never
Local host: 169.254.0.2, Local port: 179
Foreign host: 169.254.0.1, Foreign port: 37739

BGP neighbor is 169.254.0.5, remote AS 64512, local AS 65100, external link
  BGP version 4, remote router ID 169.254.0.5
  BGP state = Established, up for 00:19:39
  Last read 00:00:08, hold time is 30, keepalive interval is 10 seconds
  Received 119 messages, 0 notifications, 0 in queue
  Sent 121 messages, 0 notifications, 0 in queue
  Connection established 1; dropped 0
  Last reset never
Local host: 169.254.0.6, Local port: 179
Foreign host: 169.254.0.5, Foreign port: 36357

3. VPN BGP完了

ここまででVPN BGPがトンネル2つで完了しています。
ここからは通信確認になります。

3.1. ルート(経路)確認

3.1.1. GCPルート確認

GCPの場合、BGPでアドバタイズがちゃんとできていれば、下記画面のように自動で「ルート」の動的情報が追加されます。
AWSのようにルートテーブルを設定する必要はありません。
動的情報が上がってこない場合、アドバタイズがミスってると思います。
17_ルート動的.png

3.1.2. rtx1200ルート確認

# show ip route 
宛先ネットワーク    ゲートウェイ     インタフェース  種別  付加情報
default             -                    PP[01]    static  
169.254.0.0/30      -                TUNNEL[81]  implicit  
169.254.0.4/30      -                TUNNEL[82]  implicit  
172.28.0.0/20       169.254.0.1      TUNNEL[81]       BGP  path=64512
192.168.123.0/24    192.168.123.254        LAN1  implicit   

3.2. ファイアウォールルール

ということで必要な設定としてはファイアウォールルールとなります。
設定の詳細はここでは割愛しますが、基本的にインバウンド(上り)のルールにオンプレミス側のプライベートIPアドレスCIDRを許可します。
※ 下りは拒否しない限り0.0.0.0/0で許可されてるはず

オンプレミス側、GCP側より双方で通信確認をし、通れば完了となります。

以上です。

6
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9