らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

IOSv / IOSvL2 の OVA ファイルを作って vSphere 上で使う夢を見た

Cisco ルータやファイアウォールを仮想環境で利用したい場合、CSR1000v (IOS-XE) や ASAv を使う、といった手段があります。 しかし、従来からある Cisco IOS を仮想環境で使う手段は無いように思います。 以前、onePK が合った頃は all-in-one-vm 内部で IOSv を使う… という手段はあったかも知れませんが、all-in-one-vm も現在は配信されていないと思われます。 全くニーズ無いと思いますが、「OVA ファイル版の IOSv や IOSvL2 があったら良いな」という夢を見たので、内容をメモしておきます。

Step.1

VIRL で glance 上のイメージを確認します。

$ glance image-list
+--------------------------------------+--------------+
| ID                                   | Name         |
+--------------------------------------+--------------+
| 3354d403-85f3-4b02-83d0-d3c26f3817b4 | ASAv         |
| b0759344-4bd1-4211-8a2c-2d2505a4b997 | coreos       |
| f4c9e5f3-2073-4f0c-8328-b20276c1117d | CSR1000v     |
| b9d9d199-ee68-49e0-888d-baf7ecdfc083 | IOS XRv      |
| b4c33ad5-90f0-4596-a62d-80ca2614356b | IOS XRv 9000 |
| 850d39ff-d041-4682-8326-62679315f8d1 | IOSv         |
| 0b12a387-478d-480e-a43b-ca814d0a358f | IOSvL2       |
| cbe211ce-bcda-47b9-9d99-da7efa1f2856 | NX-OSv       |
| eaffa073-8601-43ed-bbd1-a713f3d22191 | NX-OSv 9000  |
| 7a5f1575-b0cc-49a1-b34f-c38cfb67d26a | server       |
+--------------------------------------+--------------+

IOSvL2 のイメージを作業用 Linux へコピーします。

sudo scp /var/lib/glance/images//0b12a387-478d-480e-a43b-ca814d0a358f \
  USERNAME@ADDRESS:~/vios_l2-adventerprisek9-m.152-1.20180619.qcow2

Step.2

qemu-img info ~ で確認すると glance 上のイメージは qcow2 形式のようです。

# qemu-img info vios_l2-adventerprisek9-m.152-1.20180619.qcow2
image: vios_l2-adventerprisek9-m.152-1.20180619.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 43M
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

vSphere でインポート出来るように qcow2 → vmdk へフォーマットを変換しておきます。

qemu-img convert \
  -f qcow2 vios_l2-adventerprisek9-m.152-1.20180619.qcow2 \
  -O vmdk vios_l2-adventerprisek9-m.152-1.20180619.vmdk

変換が完了しました。

# qemu-img info vios_l2-adventerprisek9-m.152-1.20180619.vmdk
image: vios_l2-adventerprisek9-m.152-1.20180619.vmdk
file format: vmdk
virtual size: 2.0G (2147483648 bytes)
disk size: 102M
cluster_size: 65536
Format specific information:
    cid: 1373171663
    parent cid: 4294967295
    create type: monolithicSparse
    extents:
        [0]:
            virtual size: 2147483648
            filename: vios_l2-adventerprisek9-m.152-1.20180619.vmdk
            cluster size: 65536
            format:

Step.3

以下のスペックで新規仮想マシンを作成します。 仮想マシン名は vios_l2-adventerprisek9-m.152-1.20180619 としました。

No. 項目
1 ゲスト OS ファミリ Linux
2 ゲスト OS バージョン その他の Linux (64bit)
3 vCPU 1
4 メモリ 512MB
5 新規ハードディスク (削除)
6 新規 SCSI コントローラ (削除)
7 新規 CD/DVD ドライブ (削除)
8 新規ネットワーク アダプタタイプは E1000 を選択

Step.4

仮想マシンと同じディレクトリに vmdk 形式で用意したディスクイメージをコピーしておきます。

  • vios_l2-adventerprisek9-m.152-1.20180619.vmdk

Step.5

仮想マシンの作成が完了したら仮想マシンの構成へ以下の修正を加えます。

  1. 新規デバイスを追加既存のハードディスク を選択し、予め用意しておいた vios_l2-adventerprisek9-m.152-1.20180619.vmdk を指定する
  2. 追加した vmdk ファイル (新規ハードディスク) の 仮想デバイスノード 設定を (SCSI では無く) IDE 接続へ変更する
  3. (既存のハードディスク を追加しようとした際に、自動的に SCSI コントローラが追加されてしまっているので) SCSI コントローラを削除する
  4. 好みの枚数、ネットワークアダプタ を追加する (※ vSphere 6.7 時点でひとつの仮想マシンあたり、ネットワークアダプタは最大 10 まで)

以下はディスクの設定画面例です。

f:id:sig9:20200509014355p:plain

Step.6

以降の手順で作成した仮想マシンをファイルへエクスポートします。 しかし、vSphere Web Client になってからエクスポート形式が OVF しか選択出来なくなっています。 ファイル数の少ない OVA 形式の方が配布しやすい為、OVA を作成する為に ovftool をインストールします。

My VMware から Linux 用の 64bit 版 ovftool をダウンロードし、インストールします。 しかし、今回の環境ではライブラリが足りず、以下のエラーになりました。

# /bin/sh ./VMware-ovftool-4.3.0-15755677-lin.x86_64.bundle
Extracting VMware Installer...done.
User interface initialization failed.  Exiting.  Check the log for details.

必要なライブラリを追加インストールします。

dnf -y install libnsl ncurses-compat-libs

再度、ovftool をインストールします。 ライセンス条項を承諾するのが手間なので、引数を指定してしまいます。

# /bin/sh VMware-ovftool-4.3.0-15755677-lin.x86_64.bundle --console --required --eulas-agreed

これで ovftool がインストール出来ました。

Step.7

ovftool を使って仮想マシンOVA 形式でエクスポートします。 ただ、vCenter / ESXi に接続する際のパスワードに記号を含んでいる場合、URL エンコードする必要があります。 具体的には以下のように実行します (PASSWORD 部分を任意に書き換えます)。

python -c 'import urllib.parse; import os; print(urllib.parse.quote_plus("PASSWORD"))'

これで URL エンコードされたパスワードを得られるはずです。 ovftool で仮想マシンOVA 形式でエクスポートします。

ovftool vi://USERNAME:PASSWORD@ADDRESS/vios_l2-adventerprisek9-m.152-1.20180619 ./vios_l2-adventerprisek9-m.152-1.20180619.ova

Step.8

この OVA ファイルのままでも利用することは可能なのですが、OVA ファイルをデプロイする際にウィザード形式でネットワークを割り当て出来るように修正します。 一旦、OVA ファイルを展開します。

tar xvf vios_l2-adventerprisek9-m.152-1.20180619.ova

vios_l2-adventerprisek9-m.152-1.20180619.ovf の内容を以下のように書き換えます。

<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by VMware ESX Server, User: root, UTC time: 2020-05-08T15:23:35.823272Z-->
<Envelope vmw:buildId="build-10302608" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <References>
    <File ovf:href="vios_l2-adventerprisek9-m.152-1.20180619-disk1.vmdk" ovf:id="file1" ovf:size="46556160"/>
  </References>
  <DiskSection>
    <Info>Virtual disk information</Info>
    <Disk ovf:capacity="2" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="106692608"/>
  </DiskSection>
  <NetworkSection>
    <Info>The list of logical networks</Info>
    <Network ovf:name="Ethernet 1">
      <Description>Ethernet 1</Description>
    </Network>
    <Network ovf:name="Ethernet 2">
      <Description>Ethernet 2</Description>
    </Network>
    <Network ovf:name="Ethernet 3">
      <Description>Ethernet 3</Description>
    </Network>
    <Network ovf:name="Ethernet 4">
      <Description>Ethernet 4</Description>
    </Network>
    <Network ovf:name="Ethernet 5">
      <Description>Ethernet 5</Description>
    </Network>
    <Network ovf:name="Ethernet 6">
      <Description>Ethernet 6</Description>
    </Network>
    <Network ovf:name="Ethernet 7">
      <Description>Ethernet 7</Description>
    </Network>
    <Network ovf:name="Ethernet 8">
      <Description>Ethernet 8</Description>
    </Network>
    <Network ovf:name="Ethernet 9">
      <Description>Ethernet 9</Description>
    </Network>
    <Network ovf:name="Ethernet 10">
      <Description>Ethernet 10</Description>
    </Network>
  </NetworkSection>
  <VirtualSystem ovf:id="vios_l2-adventerprisek9-m.152-1.20180619">
    <Info>A virtual machine</Info>
    <Name>vios_l2-adventerprisek9-m.152-1.20180619</Name>
    <OperatingSystemSection ovf:id="101" vmw:osType="otherLinux64Guest">
      <Info>The kind of installed guest operating system</Info>
    </OperatingSystemSection>
    <VirtualHardwareSection>
      <Info>Virtual hardware requirements</Info>
      <System>
        <vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
        <vssd:InstanceID>0</vssd:InstanceID>
        <vssd:VirtualSystemIdentifier>vios_l2-adventerprisek9-m.152-1.20180619</vssd:VirtualSystemIdentifier>
        <vssd:VirtualSystemType>vmx-14</vssd:VirtualSystemType>
      </System>
      <Item>
        <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
        <rasd:Description>Number of Virtual CPUs</rasd:Description>
        <rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
        <rasd:InstanceID>1</rasd:InstanceID>
        <rasd:ResourceType>3</rasd:ResourceType>
        <rasd:VirtualQuantity>1</rasd:VirtualQuantity>
      </Item>
      <Item>
        <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
        <rasd:Description>Memory Size</rasd:Description>
        <rasd:ElementName>512MB of memory</rasd:ElementName>
        <rasd:InstanceID>2</rasd:InstanceID>
        <rasd:ResourceType>4</rasd:ResourceType>
        <rasd:VirtualQuantity>512</rasd:VirtualQuantity>
      </Item>
      <Item>
        <rasd:Address>1</rasd:Address>
        <rasd:Description>IDE Controller</rasd:Description>
        <rasd:ElementName>VirtualIDEController 1</rasd:ElementName>
        <rasd:InstanceID>3</rasd:InstanceID>
        <rasd:ResourceType>5</rasd:ResourceType>
      </Item>
      <Item>
        <rasd:Address>0</rasd:Address>
        <rasd:Description>IDE Controller</rasd:Description>
        <rasd:ElementName>VirtualIDEController 0</rasd:ElementName>
        <rasd:InstanceID>4</rasd:InstanceID>
        <rasd:ResourceType>5</rasd:ResourceType>
      </Item>
      <Item ovf:required="false">
        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
        <rasd:ElementName>VirtualVideoCard</rasd:ElementName>
        <rasd:InstanceID>5</rasd:InstanceID>
        <rasd:ResourceType>24</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="useAutoDetect" vmw:value="false"/>
        <vmw:Config ovf:required="false" vmw:key="videoRamSizeInKB" vmw:value="4096"/>
        <vmw:Config ovf:required="false" vmw:key="enable3DSupport" vmw:value="false"/>
        <vmw:Config ovf:required="false" vmw:key="use3dRenderer" vmw:value="automatic"/>
      </Item>
      <Item ovf:required="false">
        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
        <rasd:ElementName>VirtualVMCIDevice</rasd:ElementName>
        <rasd:InstanceID>6</rasd:InstanceID>
        <rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
        <rasd:ResourceType>1</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="allowUnrestrictedCommunication" vmw:value="false"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>0</rasd:AddressOnParent>
        <rasd:ElementName>Hard Disk 1</rasd:ElementName>
        <rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
        <rasd:InstanceID>7</rasd:InstanceID>
        <rasd:Parent>4</rasd:Parent>
        <rasd:ResourceType>17</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>7</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 1</rasd:Connection>
        <rasd:Description>Ethernet 1</rasd:Description>
        <rasd:ElementName>Ethernet 1</rasd:ElementName>
        <rasd:InstanceID>8</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>8</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 2</rasd:Connection>
        <rasd:Description>Ethernet 2</rasd:Description>
        <rasd:ElementName>Ethernet 2</rasd:ElementName>
        <rasd:InstanceID>9</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>9</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 3</rasd:Connection>
        <rasd:Description>Ethernet 3</rasd:Description>
        <rasd:ElementName>Ethernet 3</rasd:ElementName>
        <rasd:InstanceID>10</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>10</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 4</rasd:Connection>
        <rasd:Description>Ethernet 4</rasd:Description>
        <rasd:ElementName>Ethernet 4</rasd:ElementName>
        <rasd:InstanceID>11</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>11</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 5</rasd:Connection>
        <rasd:Description>Ethernet 5</rasd:Description>
        <rasd:ElementName>Ethernet 5</rasd:ElementName>
        <rasd:InstanceID>12</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>12</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 6</rasd:Connection>
        <rasd:Description>Ethernet 6</rasd:Description>
        <rasd:ElementName>Ethernet 6</rasd:ElementName>
        <rasd:InstanceID>13</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>13</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 7</rasd:Connection>
        <rasd:Description>Ethernet 7</rasd:Description>
        <rasd:ElementName>Ethernet 7</rasd:ElementName>
        <rasd:InstanceID>14</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>14</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 8</rasd:Connection>
        <rasd:Description>Ethernet 8</rasd:Description>
        <rasd:ElementName>Ethernet 8</rasd:ElementName>
        <rasd:InstanceID>15</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>15</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 9</rasd:Connection>
        <rasd:Description>Ethernet 9</rasd:Description>
        <rasd:ElementName>Ethernet 9</rasd:ElementName>
        <rasd:InstanceID>16</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <Item>
        <rasd:AddressOnParent>16</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>Ethernet 10</rasd:Connection>
        <rasd:Description>Ethernet 10</rasd:Description>
        <rasd:ElementName>Ethernet 10</rasd:ElementName>
        <rasd:InstanceID>17</rasd:InstanceID>
        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
        <vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
        <vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true"/>
      </Item>
      <vmw:Config ovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="cpuHotRemoveEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="memoryHotAddEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="bios"/>
      <vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="tools.afterPowerOn" vmw:value="true"/>
      <vmw:Config ovf:required="false" vmw:key="tools.afterResume" vmw:value="true"/>
      <vmw:Config ovf:required="false" vmw:key="tools.beforeGuestShutdown" vmw:value="true"/>
      <vmw:Config ovf:required="false" vmw:key="tools.beforeGuestStandby" vmw:value="true"/>
      <vmw:Config ovf:required="false" vmw:key="tools.toolsUpgradePolicy" vmw:value="manual"/>
      <vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="soft"/>
      <vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="soft"/>
      <vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="hard"/>
      <vmw:Config ovf:required="false" vmw:key="nestedHVEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="virtualICH7MPresent" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="virtualSMCPresent" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="flags.vvtdEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="flags.vbsEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="bootOptions.efiSecureBootEnabled" vmw:value="false"/>
      <vmw:Config ovf:required="false" vmw:key="powerOpInfo.standbyAction" vmw:value="checkpoint"/>
      <vmw:ExtraConfig ovf:required="false" vmw:key="nvram" vmw:value="vios_l2-adventerprisek9-m.152-1.20180619.nvram"/>
    </VirtualHardwareSection>
  </VirtualSystem>
</Envelope>

再度、OVA 形式に圧縮し直します。 ovftool でエクスポートした OVA ファイルには SHA256 のハッシュ値を記載した .mf ファイルが含まれていますが、これは必須では無い為、除外しています。

tar cvf \
  vios_l2-adventerprisek9-m.152-1.20180619.ova \
  vios_l2-adventerprisek9-m.152-1.20180619.ovf \
  vios_l2-adventerprisek9-m.152-1.20180619-disk1.vmdk

Step.9

これで準備 OK です。 OVA ファイルから仮想マシンを作成後、シリアルコンソールを追加して設定します。 尚、IOSvL2 は上手くトラフィック処理出来ていないように見えた (IOSvL2 からパケットが送信されいない。但し、受信は出来ていた) のですが、IOSv は問題無く利用出来ました。

Step.10

…という夢をみました。