🐕

さくらのクラウド やってみたシリーズ(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