さくらのクラウド やってみたシリーズ(4) ~スイッチによる内部ネットワークの構築~
今までの記事では仮想サーバのパブリックなセグメントに構築してきましたが、さくらのクラウドでももちろん内部ネットワークを作ることができます。
Amazon VPC との違い
このブログを読んでいただける多くの方は AWS の VPC をご存じかと思います。VPCはまず最初にプライベートなネックワーク空間が存在し、そこにパブリックIPを伴うパブリックサブネット、プライベートIPのみのプライベートサブネットを作成します。その後外部通信を担うインターネットゲートウェイをアタッチして初めて外部との通信が成立します。
一報、さくらのクラウドは逆のアプローチです。まず最初に共有ネットワーク
という外部ネットワークが割り当てられています。セグメントを分けるためには、スイッチやルーターなどを作り意図的にプライベートネットワークを作る、という形態になります。
さらにさくらのクラウドはハウジングや専用サーバと連携できる、という外資ハイパースケーラーにはない強みを持っています。このためブリッジ接続と組み合わせるとこういう構成になります。
仮想サーバ と NIC
さくらのクラウドでは起動する仮想サーバにNICをアタッチし、そのNICをどこに接続するかで構成が異なります。
コンソール左ペインの一番下にある マップ
をクリックします。
現在共有セグメント、つまりパブリックなスペースに検証用サーバが1台存在していることがわかります。
ではここに、内部ネットワークを作成して行きます。
さっそくやってみる
1. スイッチの構築
まずは最初にスイッチを作成します。コンソール左ペインのスイッチをクリックします。
画面右上から追加
をクリックします。
適当な名前を付けてルーター
なしのスイッチを作ります。
ここでいうスイッチ
とルーター
はオンプレミスのそれと同じです。スイッチは同じセグメント間の通信を実現させ、ルーターを付与すると異なるセグメントへの通信が可能となります。
マップ
ではこうなります。
2.仮想サーバの起動とスイッチへの接続
ではこのスイッチに仮想サーバを接続します。新規のサーバ起動でNIC設定でスイッチに接続
を選びます。
IPアドレスはDHCPを指定します。スイッチで作成されるセグメントではIPv6のみが有効化されます。IPv4は使えませんので注意してください
同じ手順でサーバを2台起動します。起動したらわかりやすいように名前を変えておきます。
3.疎通
今起動したサーバ2台はパブリックIPを持っていないため、外部からのSSH接続ができません。このため、さくらのクラウドコンソールのコンソール
機能を使ってログインを行いIPアドレスを特定します。
ip a
の実行結果が以下です。
internal1
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 9c:3a:ba:31:db:33 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet6 fe80::9ea3:baff:fe31:db33/64 scope link
valid_lft forever preferred_lft forever
internal2
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 9c:3a:ba:31:c1:51 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet6 fe80::9ea3:baff:fe31:c151/64 scope link
valid_lft forever preferred_lft forever
それぞれeth0
にIPv6アドレスが付与されています。
インターナルネットワークですので付与されているのはローカルリンクアドレスになります。ローカルリンクアドレスとは、IPv6 の fe80::/10 プレフィックスで始まるアドレスで、同一リンク(同一L2セグメント)内の通信にのみ使用できる特別なアドレスです。ルータを越えた通信はできません。今回の手順ではルーターを作成していないためこれで問題ありません。
Pingで疎通を行うとこうなります。
ping6 fe80::9ea3:baff:fe31:c151%eth0
ping6 fe80::9ea3:baff:fe31:c151%eth0
PING fe80::9ea3:baff:fe31:c151%eth0(fe80::9ea3:baff:fe31:c151%eth0) 56 data bytes
64 bytes from fe80::9ea3:baff:fe31:c151%eth0: icmp_seq=1 ttl=64 time=1.49 ms
64 bytes from fe80::9ea3:baff:fe31:c151%eth0: icmp_seq=2 ttl=64 time=0.268 ms
64 bytes from fe80::9ea3:baff:fe31:c151%eth0: icmp_seq=3 ttl=64 time=0.312 ms
64 bytes from fe80::9ea3:baff:fe31:c151%eth0: icmp_seq=4 ttl=64 time=0.288 ms
64 bytes from fe80::9ea3:baff:fe31:c151%eth0: icmp_seq=5 ttl=64 time=0.278 ms
--- fe80::9ea3:baff:fe31:c151%eth0 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 0.268/0.528/1.494/0.483 ms
Discussion