この記事は、ニフクラブログで2019-12-20に公開された記事を移転したものです。 この記事は富士通クラウドテクノロジーズ Advent Calendar 2019 20日目の記事です。
こんにちは。富士通クラウドテクノロジーズの id:foobaron です。
ニフクラでは2019年12月11日に、プライベートLAN同士を接続する機能プライベートブリッジの提供を開始しました。 この機能と使い方をご紹介します。
概要
これまで、ニフクラで同一リージョン内のプライベートLAN同士を接続するには、 ゾーンコネクトを利用する必要がありました。 また、異なるリージョン間のプライベートLAN同士を接続するには、拠点間VPNを使用する必要がありました。
プライベートブリッジでは、VPN接続等を必要とせずに、異なるプライベートLAN内のサーバー同士がプライベートIPアドレスを利用して通信できます。
プライベートブリッジを利用する通信は、インターネットを通過せずニフクラのバックボーンネットワークを通過します。 ニフクラのバックボーンネットワークに単一障害点はありません。
プライベートブリッジは、オンデマンドに設定して利用可能です。 提供するリージョンは、east-1, west-1です。
利用可能なゾーンのプライベートLAN同士であれば、プライベートブリッジで接続可能です。 同一ゾーン内のプライベートLAN同士もルーターを経由せずに接続することもできます。
プライベートブリッジの構成要素
プライベートブリッジの構成要素は次の3つです。
プライベートブリッジ
プライベートLAN同士を接続するための要素です。
プライベートLANをプライベートブリッジに接続するには、コネクターが必要です。
コネクター
プライベートLANをプライベートブリッジに接続する概念です。
プライベートLAN1つにつきコネクター1つを接続します。
リーチャビリティ
コネクターで複数リージョンのプライベートLANを接続するために、プライベートブリッジに設定する概念です。 図には載っていません。
1つのプライベートブリッジに複数リージョンのコネクターを接続するには、 プライベートブリッジに、指定したリージョンのリーチャビリティを追加します。 リーチャビリティを追加しない場合、プライベートブリッジには1つのリージョンのコネクターしか接続できません。
プライベートブリッジの使い方
本記事では、次のネットワーク構成図のように、3つのプライベートLANを1つのプライベートブリッジで接続します。 図ではプライベートLAN以外のネットワークは省略しています。 サーバー3台にはUbuntu 18.04 LTSを使用しました。 ゾーンにはeast-11とwest-11を使用しました。
1. ファイアウォールグループの作成
ファイアウォールグループはゾーンごとに作成する必要があります。 east-11とwest-11のそれぞれでファイアウォールグループを作成します。
今回のネットワーク構成では、プライベートブリッジのサブネットに 192.168.0.0/24
を利用します。
プライベートブリッジの通信を許可するために、そのサブネットのINルールとOUTルールを設定します。
(プライベートブリッジとは関係ありませんが、SSHを許可するINルールも設定しています。)
east-11でe11、west-11でw11という名前のファイアウォールグループを作成しました。
2. プライベートLANの作成
east-11に2つ (e111, e112) 、west-11に1つ (w111) のプライベートLANを作成します。
3つのプライベートLANのサブネットは 192.168.0.0/24
を入力しました。
3. サーバーの作成
east-11に2台 (e112, e112) 、west-11に1台 (w111) のサーバーを作成します。
サーバーにはSSHキーが必要です。 また、手順1, 2で作成したファイアウォール、プライベートLANを指定します。
手順1-3で、今回接続するサーバー3台とプライベートLAN3つが作成できました。
4. コネクターの作成
プライベートブリッジにプライベートLANを接続するために、コネクターを作成します。 プライベーLAN1つにつきコネクターを1つ作成します。
作成すると、コネクターIDが自動で割り当てられます。
今回はプライベートLANが3つあるので、コネクターも3つを作成します。
コネクターを3つ作成すると、次のような状態になります。
5. プライベートブリッジの作成
今回は3つのプライベートLANを1つに接続するため、プライベートブリッジは1つ作成します。
作成すると、プライベートブリッジIDが自動で割り当てられます。
6. リーチャビリティの追加
コネクターを接続する前に、プライベートブリッジにリーチャビリティを追加します。
今回は、手順5で作成したプライベートブリッジに、east-1とwest-1のリーチャビリティを追加しました。
7. コネクターの接続
コネクターをプライベートブリッジに接続します。 プライベートブリッジを選択し、コネクターIDを指定します。
今回は、手順4で作成した3つのコネクターを、手順5で作成したプライベートブリッジに接続しました。
接続が完了すると、3つのプライベートLANが接続された状態になります。
ここまでの設定が、ニフクラのコントロールパネル上でオンデマンドに実施できました。
8. サーバー間の接続性確認
では最後に、サーバー同士の疎通性を、 ping
コマンドで確認します。
簡単な動作確認のみのため、サーバーには iproute2
で構成図どおりのIPアドレスを設定しました。
なお、Ubuntu 18.04 LTSの場合は netplan
でIPアドレスの設定を永続化できます。
e111:~# ip -4 address add 192.168.0.101/24 dev ens192
e112:~# ip -4 address add 192.168.0.102/24 dev ens192
w111:~# ip -4 address add 192.168.0.103/24 dev ens192
iptables
等の サーバー側のファイアウォールの設定を変更するなどして通信が破棄されない状態 で、3台のサーバーの間の疎通性を確認します。
次のように、同一ゾーン内のプライベートLAN同士が接続できていることが確認できます。
e111:~# ping -c 10 192.168.0.102 PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102: icmp_seq=1 ttl=64 time=0.355 ms 64 bytes from 192.168.0.102: icmp_seq=2 ttl=64 time=0.357 ms 64 bytes from 192.168.0.102: icmp_seq=3 ttl=64 time=0.320 ms 64 bytes from 192.168.0.102: icmp_seq=4 ttl=64 time=0.277 ms 64 bytes from 192.168.0.102: icmp_seq=5 ttl=64 time=0.295 ms 64 bytes from 192.168.0.102: icmp_seq=6 ttl=64 time=0.323 ms 64 bytes from 192.168.0.102: icmp_seq=7 ttl=64 time=0.302 ms 64 bytes from 192.168.0.102: icmp_seq=8 ttl=64 time=0.285 ms 64 bytes from 192.168.0.102: icmp_seq=9 ttl=64 time=0.244 ms 64 bytes from 192.168.0.102: icmp_seq=10 ttl=64 time=0.291 ms --- 192.168.0.102 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9207ms rtt min/avg/max/mdev = 0.244/0.304/0.357/0.040 ms
異なるリージョン間のプライベートLAN同士も接続できていることが確認できます。 東日本のeast-11と西日本のwest-11の間がRTT (Round Trip Time: 往復遅延時間) 14.0ミリ秒で通信できました。
e111:~$ ping -c 10 192.168.0.103 PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data. 64 bytes from 192.168.0.103: icmp_seq=1 ttl=64 time=14.0 ms 64 bytes from 192.168.0.103: icmp_seq=2 ttl=64 time=14.3 ms 64 bytes from 192.168.0.103: icmp_seq=3 ttl=64 time=14.0 ms 64 bytes from 192.168.0.103: icmp_seq=4 ttl=64 time=14.0 ms 64 bytes from 192.168.0.103: icmp_seq=5 ttl=64 time=14.0 ms 64 bytes from 192.168.0.103: icmp_seq=6 ttl=64 time=13.9 ms 64 bytes from 192.168.0.103: icmp_seq=7 ttl=64 time=13.9 ms 64 bytes from 192.168.0.103: icmp_seq=8 ttl=64 time=14.0 ms 64 bytes from 192.168.0.103: icmp_seq=9 ttl=64 time=14.0 ms 64 bytes from 192.168.0.103: icmp_seq=10 ttl=64 time=13.9 ms --- 192.168.0.103 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9010ms rtt min/avg/max/mdev = 13.988/14.046/14.316/0.108 ms
プライベートブリッジの利用がオンデマンドに実施できることを確認しました。 具体的には、本記事執筆時点 (2019/12/19) では、コネクターをプライベートブリッジに接続するまでに、かかった時間を見てみます。
east-11のプライベートLAN e111のコネクターをプライベートブリッジに接続した状態で、
east-11のプライベートLAN e112のコネクターを接続したところ、すぐに ping
で到達性を確認できました。
VM e111からVM e112に ping
を実行した状態で、VM e111で tcpdump
した結果は次のとおりです。
e111:~# tcpdump -i ens192 <中略> 16:36:33.546967 IP 192.168.0.101 > 192.168.0.102: ICMP echo request, id 1632, seq 201, length 64 16:36:33.547232 IP 192.168.0.102 > 192.168.0.101: ICMP echo reply, id 1632, seq 201, length 64 16:36:34.570834 IP 192.168.0.101 > 192.168.0.102: ICMP echo request, id 1632, seq 202, length 64 16:36:34.571131 IP 192.168.0.102 > 192.168.0.101: ICMP echo reply, id 1632, seq 202, length 64 16:36:35.594841 IP 192.168.0.101 > 192.168.0.102: ICMP echo request, id 1632, seq 203, length 64 16:36:35.595174 IP 192.168.0.102 > 192.168.0.101: ICMP echo reply, id 1632, seq 203, length 64
ニフクラのコントロールパネルでプライベートブリッジの接続情報を確認すると、
2つ目のプライベートLAN e112の接続完了時間が 16:36:33
であり、ICMP echo replyの応答を受信している時刻も 16:36:33
でした。
2つ目のコネクターを接続した直後から、2つのプライベートLANの間で通信できるようになりました。
なお、プライベートブリッジ接続情報は、コネクターIDでなくアタッチメントIDで表示されます。ご注意ください。
制限事項
プライベートブリッジと他のサービスの併用には一部制限があります。 詳細は、プライベートブリッジの制限事項をご確認ください。
まとめ
プライベートブリッジでは、オンデマンドに複数のプライベートLAN同士が接続できます。 プライベートブリッジにより、複数のゾーンやリージョンを利用したシステムを構築できます。
ご利用の際は、併用制限サービスや併用不可サービスにご注意ください。