ネットワークの管理
ここで説明するネットワーク設定手順は、スタンドアロンホストとリソースプール内のホストとで異なります。
スタンドアロンホストでのネットワークの作成
ホストのインストール時に各PIFに対して外部ネットワークが作成されるため、追加のネットワーク作成が必要になるのは、通常以下の場合のみです:
-
プライベートネットワークを使用する。
-
VLANやNICボンディングなどの高度な機能を使用する。
XenCenterを使用してネットワークを追加または削除する方法については、XenCenterドキュメントの「新しいネットワークの追加」を参照してください。
Citrix Hypervisorサーバーのテキストコンソールを開きます。
次のnetwork-createコマンドを実行してネットワークを作成します。これにより、新規に作成したネットワークのUUIDが返されます:
xe network-create name-label=mynetwork
<!--NeedCopy-->
この時点で、このネットワークはPIFに接続されていないため、内部ネットワークです。
リソースプールでのネットワークの作成
リソースプール内のすべてのCitrix Hypervisorサーバーで、同数の物理NICが装着されている必要があります。ただし、この要件はホストをプールに追加するときの絶対条件ではありません。NICの1つは常に管理インターフェイスとして指定され、Citrix Hypervisor管理トラフィックに使用されます。
リソースプール内のすべてのホストでネットワークの共通セットが共有されるため、プール内のすべてのCitrix Hypervisorサーバーで、同じ物理ネットワーク設定を使用することが重要です。個々のホスト上のPIFは、デバイス名に基づいたプール全体のネットワークに接続されます。たとえば、eth0 NICを持つすべてのCitrix Hypervisorサーバーでは、それに対応するPIFがプール全体のNetwork 0
ネットワークに接続されます。eth1 NICを持つホストも同様にNetwork 1
ネットワークに接続され、プール内の1つ以上のCitrix Hypervisorサーバーに装着されたほかのNICも同様にネットワークに接続されます。
リソースプール内のCitrix HypervisorサーバーでNICの数が異なると、複雑な状況になります。その理由は、一部のプールネットワークが一部のホストに対して有効にならないためです。たとえば、リソースプール内にホストhost1とホストhost2があり、host1に4つのNICが装着されており、host2に2つのNICが装着されている場合、eth0とeth1に対応するPIFに接続されたネットワークだけがhost2上で有効になります。つまり、host1上の仮想マシンがeth2とeth3のネットワークに接続された2つのVIFを持つ場合、この仮想マシンはhost2上に移行できなくなります。
VLANの作成
リソースプール内の複数のホストで使用するVLANを作成するには、pool-vlan-create
コマンドを実行します。これによりVLANが作成され、必要なPIFがプール内の各ホスト上で作成され、プラグされます。詳しくは、pool-vlan-create
を参照してください。
Citrix Hypervisorサーバーのコンソールを開きます。
次のコマンドを実行して、VLANで使用するネットワークを作成します。これにより、新しいネットワークのUUIDが返されます:
xe network-create name-label=network5
<!--NeedCopy-->
次のpif-list
コマンドを実行して、目的のVLANタグをサポートする物理NICに対応しているPIFのUUIDを確認します。既存のVLANを含め、すべてのPIFのUUIDとデバイスの名前が返されます:
xe pif-list
<!--NeedCopy-->
新しいVLANに接続するすべての仮想マシンで、目的の物理PIFおよびVLANタグを指定するVLANオブジェクトを作成します。これにより、新しいPIFが作成され、指定したネットワークにプラグされます。また、新しいPIFオブジェクトのUUIDが返されます。
xe vlan-create network-uuid=network_uuid pif-uuid=pif_uuid vlan=5
<!--NeedCopy-->
仮想マシンのVIFを新しいネットワークに接続します。詳しくは、「スタンドアロンホストでのネットワークの作成」を参照してください。
スタンドアロンホストでのNICボンディングの作成
NICボンディングを作成する場合、XenCenterを使用することをお勧めします。詳しくは「NICの構成」を参照してください。
ここでは、xe CLIを使用して、リソースプールに属していない、スタンドアロンのCitrix HypervisorサーバーのNICボンディングを作成します。xe CLIを使用してリソースプール内のCitrix HypervisorサーバーでNICボンディングを作成する方法については、「リソースプールでのNICボンディングの作成」を参照してください。
NICボンディングの作成
管理インターフェイスでNICボンディングを使用する場合、管理インターフェイスで使用しているPIF/NICをボンディングPIFに移動する必要があります。管理インターフェイスが自動的にボンディングのPIFに移動します。
-
次の
network-create
コマンドを実行して、NICボンディングで使用するネットワークを作成します。これにより、新しいネットワークのUUIDが返されます:xe network-create name-label=bond0 <!--NeedCopy-->
-
次の
pif-list
コマンドを実行して、ボンディングに使用するPIFのUUIDを検出します:xe pif-list <!--NeedCopy-->
-
次のいずれかを行います:
-
アクティブ/アクティブモードのボンディング(デフォルト)を作成するには、
bond-create
コマンドを使用します。パラメーターをコンマで区切って、新しく作成したネットワークのUUIDと、ボンディングするPIFのUUIDを指定します:xe bond-create network-uuid=network_uuid / pif-uuids=pif_uuid_1,pif_uuid_2,pif_uuid_3,pif_uuid_4 <!--NeedCopy-->
ボンディングを構成するNICの数に応じて、2つまたは4つのUUIDを指定してください。これにより、ボンディングのUUIDが返されます。
-
アクティブ/パッシブモードまたはLACPモードのボンディングを作成するには、上記と同じ構文に
mode
パラメーターを追加して、lacp
またはactive-backup
を指定します:xe bond-create network-uuid=network_uuid pif-uuids=pif_uuid_1, / pif_uuid_2,pif_uuid_3,pif_uuid_4 / mode=balance-slb | active-backup | lacp <!--NeedCopy-->
-
ボンディングのMACアドレス制御
管理インターフェイスでNICボンディングを作成するということは、その管理インターフェイスで使用しているPIF/NICが、ボンディングに含まれることを意味します。ホストでDHCPを使用する場合、ボンディングのMACアドレスは使用中のPIF/NICのものと同じになり、管理インターフェイスのIPアドレスはボンディング作成後も保持されます。
管理インターフェイスとして使用しているNICと異なるMACアドレスをボンディングに設定することもできますが、ボンディングが有効になってMACアドレスやIPアドレスが変更されたときに、そのホストとの既存のネットワークセッションが切断されます。
ボンディングのMACアドレスは、以下の2つの方法で制御できます。
-
bond-create
コマンドでmac
パラメーターを指定します。このパラメーターを使用して、ボンディングのMACアドレスを任意のアドレスに設定できます。 -
管理インターフェイスのボンディングで
mac
パラメーターを指定しない場合、Citrix Hypervisorではその管理インターフェイスのMACアドレスが使用されます。そのほかの管理インターフェイスのボンディングでは、その管理インターフェイスのMACアドレス(およびIPアドレス)が使用されます。非管理インターフェイスのボンディングでは、最初のNICのMACアドレスが使用されます。
NICボンディングを元に戻す
Citrix Hypervisorサーバーのボンディングを解除する場合は、bond-destroy
コマンドによりプライマリNICが自動的に管理インターフェイスとして使用されます。このため、すべてのVIFが管理インターフェイスに移動します。ホストの管理インターフェイスがタグ付きVLANにボンディングされたインターフェイス上にある場合、bond-destroy
を実行すると、管理VLANはプライマリNICに移行します。
プライマリNICとは、ボンディング作成時にMACアドレスおよびIP設定の元になったPIFを指します。2つのNICをボンディングする場合、以下のようにプライマリNICが決定されます:
-
ボンディングの一方が管理インターフェイスの場合はそのNIC。
-
管理インターフェイスが含まれないボンディングの場合はIPアドレスを持つNIC。
-
それ以外の場合は最初のNIC。最初のNICは、次のコマンドで確認できます。
xe bond-list params=all <!--NeedCopy-->
リソースプールでのNICボンディングの作成
リソースプールでのNICボンディングの作成は、リソースプールにホストを追加したり仮想マシンを作成したりした後ではなく、リソースプールの初期作成時に行ってください。これにより、プールに追加するホストにボンディング設定が自動的に適用されるため、必要な手順を減らすことができます。
既存のプールにNICボンディングを作成する場合、以下のいずれかが必要です。
-
CLIでプールマスター上にボンディングを作成し、さらにほかのホスト上にボンディングを作成する。
-
CLIでプールマスター上にボンディングを作成し、ほかのホストを再起動する。これにより、プールマスターの設定がすべてのホストに継承されます。
-
XenCenterでプールマスター上にボンディングを作成する。これにより、プールマスターのネットワーク設定がXenCenterによりすべてのホストに同期されます。ホストの再起動も不要です。
操作が簡単であり、設定ミスを防ぐためにも、XenCenterを使用してNICボンディングを作成することをお勧めします。詳しくは「NICの構成」を参照してください。
ここでは、xe CLIを使用して、リソースプール内のCitrix HypervisorサーバーのNICボンディングを作成します。スタンドアロンホストでNICボンディングを作成する方法については、「スタンドアロンホストでのNICボンディングの作成」を参照してください。
警告:
高可用性機能が有効な場合は、ネットワークボンディングを作成しないでください。ボンディングの作成処理により、実行中の高可用性ハートビートが阻害されて、ホストの自己隔離(つまりシャットダウン)を引き起こします。ホストが正しく再起動しなくなり、復元するには
host-emergency-ha-disable
コマンドを実行する必要がある場合があります。
マスターにするホストを選択します。XenServerホストは、デフォルトで名前のないリソースプールに属します。リソースプールを作成するには、次のコマンドを実行して、名前のないリソースプールに名前を設定します。
xe pool-param-set name-label="New Pool" uuid=pool_uuid
<!--NeedCopy-->
「NICボンディングの作成」の手順に従って、NICボンディングを作成します。
プールに追加するホストでコンソールを開き、次のコマンドを実行します。
xe pool-join master-address=host1 master-username=root master-password=password
<!--NeedCopy-->
ネットワークとボンディングの情報が、新しいホストに自動的に複製されます。管理インターフェイスが、元のホスト上のNICからボンディングのPIFに移動します。これにより、このボンディング全体が管理インターフェイスとして動作します。
次のhost-list
コマンドを実行して、そのホストのUUIDを確認します:
xe host-list
<!--NeedCopy-->
警告:
高可用性機能が有効な場合は、ネットワークボンディングを作成しないでください。ボンディングの作成処理により、実行中の高可用性ハートビートが阻害されて、ホストの自己隔離(つまりシャットダウン)を引き起こします。ホストが正しく再起動しなくなり、復元するには
host-emergency-ha-disable
コマンドを実行する必要がある場合があります。
ストレージ専用NICの設定
ストレージなどの特定機能専用のNICを設定するには、XenCenterまたはxe CLIを使用してそのNICにIPアドレスを割り当てます。NICにIPアドレスを割り当てると、セカンダリインターフェイスが作成されます(IPアドレスが割り当てられるNICのうち、Citrix Hypervisorを管理するために使用される管理インターフェイスを「管理インターフェイス」と呼びます)。
セカンダリインターフェイスに特定の機能を割り当てる場合、適切なネットワーク設定を行う必要があります。これは、NICがほかの用途に使用されないようにするためです。NICをストレージトラフィック専用にするには、ストレージターゲットにそのNICからしかアクセスできないように、NIC、ストレージターゲット、スイッチ、およびVLANを設定する必要があります。つまり、ストレージ用のNICで送信するトラフィックを、物理的な構成やIPアドレスの設定により制限します。これにより、そのNICにほかのトラフィック(管理トラフィックなど)が送信されることを防ぎます。
ストレージトラフィック用のセカンダリインターフェイスを作成するには、次の条件を満たすIPアドレスを割り当てる必要があります:
-
使用する記憶域コントローラーと同じサブネットに属し、
-
ほかのセカンダリインターフェイスや管理インターフェイスとは異なるサブネットに属しています。
複数のセカンダリインターフェイスを作成する場合は、各インターフェイスが個別のサブネットに属している必要があります。たとえば、ストレージトラフィック用のセカンダリインターフェイスを2つ追加する場合、3つの異なるサブネットに属するIPアドレスが必要です。つまり、管理インターフェイスのサブネット、1つ目のセカンダリインターフェイスのサブネット、および2つ目のセカンダリインターフェイスのサブネットです。
ストレージトラフィックの耐障害性を高めるためにボンディングを使用する場合は、LinuxブリッジボンディングではなくLACPを使用することを検討してください。LACPボンディングを使用するには、ネットワークスタックとしてvSwitchを設定する必要があります。詳しくは、「vSwitchネットワーク」を参照してください。
注:
iSCSIまたはNFSのストレージリポジトリで使用するセカンダリインターフェイスのNICを選択する場合、そのNICのIPサブネットが管理インターフェイスからルーティングできない隔離されたものである必要があります。ネットワークが隔離されていない場合、ホストを再起動した後のネットワークインターフェイスの初期化順序によっては、管理インターフェイスを経由してストレージトラフィックが送信される可能性があります。
PIFが別のサブネット上にあること、またはそのPIF経由で目的のトラフィックが転送されるようにネットワークトポロジに適したルーティングが設定されていることを確認します。
次のコマンドを実行して、そのPIFのIP設定を行います。このコマンドでは、modeパラメーターに適切な値を設定し、静的IPアドレスを使用する場合はそのアドレス、ネットマスク、ゲートウェイ、およびDNSのパラメーターを設定します:
xe pif-reconfigure-ip mode=DHCP | Static uuid=pif-uuid
<!--NeedCopy-->
次のコマンドを実行して、PIFのdisallow-unplugパラメーターをtrueに設定します。
xe pif-param-set disallow-unplug=true uuid=pif-uuid
<!--NeedCopy-->
xe pif-param-set other-config:management_purpose="Storage" uuid=pif-uuid
<!--NeedCopy-->
管理インターフェイスからもルーティングされるストレージ用のセカンダリインターフェイスを設定するには、以下の2つの選択肢があります(ただし、この構成は推奨されません)。
-
ホストの再起動後に、セカンダリインターフェイスが正しく設定されていることを確認し、
xe pbd-unplug
コマンドとxe pbd-plug
コマンドを使用してストレージ接続を再初期化します。これによりストレージ接続が再起動し、正しいインターフェイスにルーティングされます。 -
または、
xe pif-forget
コマンドを使用してそのインターフェイスをCitrix Hypervisorデータベースから消去し、コントロールドメイン内で手作業でインターフェイスを設定します。xe pif-forget
コマンドの使用は上級者向けであり、手作業でLinuxネットワークを設定する方法を理解している必要があります。
SR-IOV対応NICの使用
SR-IOV(Single Root I/O Virtualization)とは、単一のPCIデバイスを物理システム上で複数のPCIデバイスとして仮想化する技術です。実際の物理デバイスは物理機能(PF)と呼ばれ、その他は仮想機能(VF)と呼ばれます。ハイパーバイザーは、仮想マシン(VM)に1つまたは複数のVFを割り当てることができます。ゲストは、直接割り当てられているようにデバイスを使用できます。
1つまたは複数のNIC VFを仮想マシンに割り当てると、ネットワークトラフィックが仮想スイッチをバイパスできます。このように設定すると、各仮想マシンがNICを直接使用しているかのように動作するため、処理のオーバーヘッドが軽減されてパフォーマンスが向上します。
SR-IOVの利点
SR-IOV VFはVIFよりも優れたパフォーマンスを提供します。同じNICを経由する(Citrix Hypervisorネットワークスタックをバイパス)異なる仮想マシンからのトラフィックをハードウェアベースで分離できます。
この機能を使用することで、以下のことを実行できます:
-
SR-IOVをサポートするNICでSR-IOVを有効にします。
-
SR-IOVをサポートするNICでSR-IOVを無効にします。
-
SR-IOV VFをVFリソースプールとして管理します。
-
仮想マシンにSR-IOV VFを割り当てます。
-
SR-IOV VFを構成します(MACアドレス、VLAN、レートなど)。
-
SR-IOVがAutomated Certification Kitの一部としてサポートされているかを確認するテストを実行します。
システム構成
SR-IOVをサポートするには、ハードウェアプラットフォームを正しく構成する必要があります。次の技術が必要です:
-
I/O MMU仮想化(AMD-ViおよびIntel VT-d)
-
Alternative Routing ID Interpretation(ARI)
-
Address Translation Services(ATS)
-
Access Control Services(ACS)
前述のテクノロジを有効にするようにBIOSを構成する方法については、システム付属のマニュアルを参照してください。
NICでのSR-IOVネットワーク有効化
XenCenterで、[ネットワーク] タブの新規ネットワークウィザードを使用して、NIC上にSR-IOVネットワークを作成して有効にします。
仮想インターフェイス(仮想マシンレベル)へのSR-IOVネットワーク割り当て
XenCenterの仮想マシンレベルで、[ネットワーク] タブの仮想インターフェイスの追加ウィザードを使用して、この仮想マシンの仮想インターフェイスとしてSR-IOV対応ネットワークを追加します。詳しくは、「新しいネットワークの追加」を参照してください。
サポートされているNICおよびゲスト
サポートされているハードウェアプラットフォームとNICの一覧については、「Hardware Compatibility List」(ハードウェア互換性リスト)を参照してください。特定のゲストがSR-IOVをサポートしているかを判断するには、ベンダーが提供するマニュアルを参照してください。
制限事項
-
特定のNICがレガシードライバー(Intel I350ファミリなど)を使用する場合、これらのデバイスでSR-IOVを有効または無効にするには、ホストを再起動する必要があります。
-
SR-IOVではHVMゲストのみがサポートされています。
-
異なる種類のNICがあるプールレベルのSR-IOVネットワークはサポートされていません。
-
NICのハードウェアの制限により、同じNICのSR-IOV VFと通常のVIFが互いに通信できない場合があります。有効にするには、通信がVFからVFまたはVIFからVIFへのパターンであり、VFからVIFへのパターンではないことを確認してください。
-
一部のSR-IOV VFのQoS(サービス品質)設定は、ネットワーク速度の制限をサポートしていないため、有効になりません。
-
ライブマイグレーション、一時停止、チェックポイントの実行は、SR-IOV VFを使用する仮想マシンではサポートされていません。
-
SR-IOV VFはホットプラグをサポートしていません。
-
レガシーNICドライバーを使用した一部のNICでは、ホストの再起動後NICがSR-IOVを有効にできない場合、再起動が必要なことがあります。
-
以前のリリースで作成された仮想マシンでは、XenCenterのこの機能を使用できません。
-
仮想マシンにSR-IOV VFがある場合、ライブマイグレーションが必要な機能は使用できません。これは、仮想マシンが物理的なSR-IOV対応NICのVFに直接関連付けられるためです。
-
ハードウェア制限:ハイパーバイザーから機能レベルリセット(FLR)の実行を要求された場合、SR-IOV機能はControllerを使用してデバイスの機能を100ミリ秒以内に初期状態にリセットします。
-
SR-IOVは、高可用性を活用する環境で使用できます。ただし、容量計画ではSR-IOVは考慮されません。SR-IOV VFが割り当てられた仮想マシンは、適切なリソースを持つプール内にホストがある場合、ベストエフォート方式で再起動します。これらのリソースには、適切なネットワーク上で有効になっているSR-IOV、および空きVFが含まれます。
レガシードライバー用のSR-IOV VFの構成
通常、NICがサポートできるVFの最大数は自動的に決定されます。レガシードライバー(Intel I350ファミリなど)を使用するNICでは、ドライバーモジュール構成ファイル内で制限が定義されているため、手動で調整する必要があります。最大値に設定するには、エディターを使用してファイルを開き、次の行を変更します。
## VFs-maxvfs-by-user:
<!--NeedCopy-->
たとえば、igb
ドライバーの最大VFを4に設定するには、/etc/modprobe.d/igb.conf
を次のように編集します:
## VFs-param: max_vfs
## VFs-maxvfs-by-default: 7
## VFs-maxvfs-by-user: 4
options igb max_vfs=0
<!--NeedCopy-->
メモ:
値は
VFs-maxvfs-by-default
行の値以下にする必要があります。これらのファイルの他の行は変更しないでください。
変更はSR-IOVを有効にする前に行う必要があります。
CLI
SR-IOVネットワークの作成、削除、表示、およびSR-IOV VFの仮想マシンへの割り当てについては、「SR-IOVコマンド」を参照してください。
出力データレート(QoS)の制御
仮想マシンが1秒間に送信可能な出力データ量を仮想インターフェイス(VIF)に設定して、QoS(Quality of Service:サービス品質)を制御できます。このQoS値は、出力パケットの最大転送レートを1秒あたりのキロバイト単位で設定します。
この値で制御されるのは、仮想マシンからの出力(送信)転送レートのみです。仮想マシンの受信データ量は制限されません。受信データ量を制御する場合、ネットワークレベル(スイッチなど)で入力パケットを制限することをお勧めします。
VIFのQoS値を設定するには、リソースプールのネットワークスタック構成に応じて、この値は、xe CLIを使用するかXenCenterで設定できます。
- XenCenter - [仮想インターフェイスプロパティ]ダイアログボックスで、QoS転送レートの上限値を設定できます。
- xeコマンド - xeコマンドでQoS転送レートを設定することもできます。後のセクションを参照してください。
QoSのCLIコマンドの例
以下の例では、vif-param-set
コマンドを使用してVIFの最大転送レートを毎秒100キロバイトに設定しています:
xe vif-param-set uuid=vif_uuid qos_algorithm_type=ratelimit
xe vif-param-set uuid=vif_uuid qos_algorithm_params:kbps=100
<!--NeedCopy-->
注:
kbps
パラメーターは、キロビット/秒(kbps)ではなく、キロバイト/秒(kBps)を意味します。
ネットワーク設定オプションの変更
ここでは、Citrix Hypervisorサーバーのネットワーク設定を変更する方法について説明します。これには以下のタスクが含まれます:
-
ホスト名(DNS名)を変更する。
-
DNSサーバーを追加または削除する。
-
IPアドレスを変更する。
-
管理インターフェイスとして使用するNICを変更する。
-
サーバーに新しい物理NICを追加する。
-
ネットワークに目的を追加する。
-
ARPフィルターを有効にする(スイッチポートのロック)。
ホスト名
システムのホスト名(DNS名)はプール全体のデータベースに定義され、次のxe host-set-hostname-live
コマンドで変更できます:
xe host-set-hostname-live host-uuid=host_uuid host-name=host-name
<!--NeedCopy-->
新しいホスト名は、コントロールドメインのホスト名にも自動的に反映されます。
DNSサーバー
Citrix HypervisorサーバーのIPアドレス設定にDNSサーバーを追加したり削除したりするには、pif-reconfigure-ip
コマンドを使用します。たとえば、静的IPを持つPIFの場合:
xe pif-reconfigure-ip uuid=pif_uuid mode=static DNS=new_dns_ip IP=IP netmask=netmask
<!--NeedCopy-->
スタンドアロンホストでのIPアドレス設定の変更
ネットワークインターフェイスの設定は、xe CLIを使用して変更できます。ネットワーク設定スクリプトを直接編集することは避けてください。
PIFのIPアドレス設定を変更するには、pif-reconfigure-ip
コマンドを使用します。pif-reconfigure-ip
コマンドで使用可能なオプションについて詳しくは、「pif-reconfigure-ip
」を参照してください。リソースプール内のホストのIPアドレスを変更する方法については、次のセクションを参照してください。
リソースプールでのIPアドレス設定の変更
リソースプール内のCitrix Hypervisorサーバーには、管理やプール内のほかのホストとの通信に使用する単一の管理IPアドレスがあります。管理インターフェイスのIPアドレスの変更手順は、プールマスターとそれ以外のホストで異なります。
注:
サーバーのIPアドレスやその他のネットワークパラメーターを変更するときは注意が必要です。環境のネットワークトポロジや変更内容によっては、ネットワークストレージへの接続が切断される場合があります。この問題が発生した場合は、XenCenterの [ストレージ]>[修復] コマンドや、CLIの
pbd-plug
コマンドを使用してストレージを再プラグする必要があります。この理由から、仮想マシンをほかのホストに移行してから、IPアドレス設定を変更することをお勧めします。
次のpif-reconfigure-ip
コマンドを実行して、IPアドレスを設定します。pif-reconfigure-ip
コマンドで使用可能なオプションについて詳しくは、「pif-reconfigure-ip
」を参照してください:
xe pif-reconfigure-ip uuid=pif_uuid mode=DHCP
<!--NeedCopy-->
次のhost-list
コマンドを実行して、プール内のほかのすべてのCitrix Hypervisorサーバーが認識されることを確認します(メンバーホストがプールマスターに正しく再接続されたことを示します):
xe host-list
<!--NeedCopy-->
プールマスターとして動作するCitrix HypervisorサーバーのIPアドレスを変更する場合は、追加の手順が必要です。これは、各プールメンバーがプールマスターと通信するときに、変更前の古いIPアドレスが使用されるため、IPアドレスが変更されると、プールマスターとどのように接続すればよいかわからなくなるためです。
可能な場合は、リソースプールの運用中に変更される可能性が低いIPアドレスをプールマスターに割り当ててください。
次のpif-reconfigure-ip
コマンドを実行して、IPアドレスを設定します:
xe pif-reconfigure-ip uuid=pif_uuid mode=DHCP
<!--NeedCopy-->
プールマスターのIPアドレスが変更され、メンバーホストが接続できなくなると、すべてのメンバーホストが緊急モードに切り替わります。
プールマスター上で、次のpool-recover-slaves
コマンドを実行します。これにより、プールマスターが各メンバーホストと通信し、プールマスターの新しいIPアドレスが通知されます:
xe pool-recover-slaves
<!--NeedCopy-->
管理インターフェイス
ホストにCitrix Hypervisorをインストールする場合、NICの1つは管理インターフェイスとして指定されます。管理インターフェイスは、Citrix Hypervisor管理トラフィックに使用されます。管理インターフェイスは、XenCenterやその他の管理APIとホスト(Citrix Virtual Apps and Desktopsなど)間の通信、およびホスト同士の通信で使用されます。
次のpif-list
コマンドを実行して、管理インターフェイスとして使用するNICのPIFを確認します。各PIFのUUIDが返されます。
xe pif-list
<!--NeedCopy-->
次のpif-param-list
コマンドを実行して、管理インターフェイスとして使用するPIFのIPアドレス設定を確認します。必要な場合は、pif-reconfigure-ip
コマンドを使用して、そのPIFのIPアドレス設定を変更します。
xe pif-param-list uuid=pif_uuid
<!--NeedCopy-->
次のhost-management-reconfigure
コマンドを実行して、管理インターフェイスとして使用するPIFを変更します。このホストがリソースプールの一部である場合は、メンバーホストコンソールで次のコマンドを実行する必要があります:
xe host-management-reconfigure pif-uuid=pif_uuid
<!--NeedCopy-->
次のnetwork-list
コマンドを実行して、プールのすべてのホストで管理インターフェイスとして使用されるNICのPIFを確認します。このコマンドには、プール全体のネットワークUUIDが返されます。
xe network-list
<!--NeedCopy-->
network-param-list
コマンドを使用して、リソースプールのすべてのホストのPIF UUIDを取得します。次のpif-param-list
コマンドを実行して、管理インターフェイスとして使用するPIFのIPアドレス設定を確認します。必要な場合は、pif-reconfigure-ip
コマンドを使用して、そのPIFのIPアドレス設定を変更します。
xe pif-param-list uuid=pif_uuid
<!--NeedCopy-->
次のpool-management-reconfigure
コマンドを実行して、ネットワーク一覧で管理インターフェイスとして使用されるPIFを変更します。
xe pool-management-reconfigure network-uuid=network_uuid
<!--NeedCopy-->
ポート80の使用の制限
Citrix Hypervisorとの通信には、ポート443経由のHTTPSまたはポート80経由のHTTPを使用できます。セキュリティ上の理由から、管理インターフェイスのTCPポート80を閉じることができます。デフォルトでは、ポート80はまだ開いています。これを閉じると、管理APIを使用する外部クライアントはポート443経由でHTTPSを使用してCitrix Hypervisorに接続する必要があります。ただし、ポート80を閉じる前に、すべてのAPIクライアント(特にCitrix Virtual Apps and Desktops)がポート443経由でHTTPSを使用できるかどうかを確認してください。
ポート80を閉じるには、XenCenterドキュメントのhttps-only
xe CLIコマンドまたは「プールのプロパティの変更」を参照してください。
管理アクセスの無効化
管理コンソールへのリモートアクセスを完全に無効にするには、host-management-disable
コマンドを使用します。
警告:
管理インターフェイスを無効にした場合、物理ホストコンソールにログインして管理タスクを行う必要があります。管理インターフェイスを無効にすると、XenCenterなどの外部インターフェイスは機能しなくなります。
物理NICの新規追加
- Citrix Hypervisorサーバーへの物理NICのインストールは、通常の手順で行います。
- Citrix Hypervisorサーバーを再起動します。
-
次のコマンドを使用して、Citrix Hypervisorサーバーのすべての物理NICを一覧表示します:
xe pif-list host-uuid=<host_uuid>
-
追加のNICが表示されない場合は、次のコマンドを使用して新しい物理インターフェイスをスキャンします:
xe pif-scan host-uuid=<host_uuid>
このコマンドは、新しいNICの新しいPIFオブジェクトを作成します。
-
Citrix Hypervisorサーバー上の物理NICを再度一覧表示して、新しいNICが表示されていることを確認します:
xe pif-list host-uuid=<host_uuid>
-
新しいPIFは、最初は切断されたものとして一覧表示されます(
currently-attached ( RO): false
)。これを起動するには、次のコマンドを使用します:xe pif-plug uuid=<uuid_of_pif>
あるいは、XenCenterを使用して新しいNICを再スキャンすることもできます。詳しくは、XenCenterのドキュメントの「NICの構成」を参照してください。
物理NICの削除
NICを削除する前に、対応するPIFのUUIDを確認してください。Citrix Hypervisorサーバーから通常の方法で物理NICを削除します。サーバーを再起動したら、pif-forget uuid=<UUID>
コマンドを実行してPIFオブジェクトを破棄します。
ネットワークへの目的の追加
ネットワーク目的は、ネットワークにさらに機能を追加するために使用できます。たとえば、ネットワークを使用してNBD接続を確立する機能です。
ネットワーク目的を追加するには、xe network-param-add
コマンドを使用します:
xe network-param-add param-name=purpose param-key=purpose uuid=network-uuid
<!--NeedCopy-->
ネットワーク目的を削除するには、xe network-param-remove
コマンドを使用します:
xe network-param-remove param-name=purpose param-key=purpose uuid=network-uuid
<!--NeedCopy-->
現在、ネットワーク目的で使用可能な値はnbd
とinsecure_nbd
です。詳しくは、「Citrix Hypervisor Changed Block Tracking Guide」を参照してください。
スイッチポートロックの使用
Citrix Hypervisorのスイッチポートロック機能を使用すると、仮想マシンがMACアドレスやIPアドレスを偽装できなくなり、不明な仮想マシンからの悪意のあるトラフィックを制御できるようになります。ポートロックコマンドでは、特定のネットワーク上のトラフィックをすべてブロック(デフォルト)したり、特定のIPアドレスからのトラフィック以外をブロックしたりできます。
クラウドサービスプロバイダでスイッチポートロック機能を使用すると、内部脅威に対するセキュリティを強化できます。仮想マシンがインターネットのパブリックなIPアドレスを使用するクラウド環境では、なりすましなどに対するセキュリティ対策を施して、クラウドのテナントがほかの仮想マシンを攻撃することを防ぐ必要があります。
スイッチポートロック機能を使用すると、すべてのテナントや仮想マシンで同じレイヤー2ネットワークを使用して、ネットワーク設定をシンプルにできます。
ポートロックコマンドの機能の1つに、信頼できない仮想マシンからのトラフィックを制限して、その仮想マシンがMACアドレスやIPアドレスを偽装することを不可能にするものがあります。これにより、以下の行為を制限できます。
-
Citrix Hypervisorの管理者が許可していないMACアドレスやIPアドレスを偽装する。
-
ほかの仮想マシンのトラフィックを傍受、なりすまし、または妨害する。
要件
-
Citrix Hypervisorのスイッチポートロック機能は、LinuxブリッジおよびvSwitchネットワークスタックでサポートされます。
-
役割ベースのアクセス制御(RBAC)を使用する環境でこの機能を設定するには、プールオペレータまたはプール管理者以上の権限を持つアカウントでログインする必要があります。RBACを使用しない環境では、プールマスターのルートアカウントでログインする必要があります。
-
ポートロックコマンドは、オンラインおよびオフラインのネットワークに対して実行できます。
-
Windows仮想マシンで切断されたネットワークアイコンを表示するには、XenServer VM Toolsをインストールする必要があります。
メモ
スイッチポートロック構成がない場合は、VIFは「network_default」に設定され、ネットワークは「unlocked」に設定されます。
サードパーティコントローラーを使用する環境でスイッチポートロックを設定することはサポートされません。
スイッチポートロックを設定しても、以下の行為は制限されません。
-
ほかのテナントやユーザーに対してIPレベルの攻撃をする。ただし、そのクラウド内のほかのテナントやユーザーになりすましたり、ほかのユーザーのトラフィックを傍受したりするIPレベル攻撃は、スイッチポートロックで防御できます。
-
ネットワークリソースを過度に消費する。
-
通常のスイッチフラッディングの手段(ブロードキャストMACアドレスまたは不明な送信先MACアドレスを使用するなど)を使用して、ほかの仮想マシン宛てのトラフィックを受信する。
同様に、スイッチポートロックを設定しても、仮想マシンからのトラフィックの送信先は制限されません。
実装における注意事項
スイッチポートロック機能は、コマンドラインまたはCitrix Hypervisor APIを使って実装できます。特に、大規模な環境では、APIを使って自動化することが一般的です。
例
ここでは、スイッチポートロック機能を使用してさまざまな攻撃から環境を保護する方法について、例を挙げて説明します。これらの例で、「VM-c」は悪意のあるテナント(Tenant C)が使用している仮想マシンを表します。「VM-a」および「VM-b」は、通常のテナントが使用している仮想マシンを表します。
例1:スイッチポートロックによるARPスプーフィングからの保護:
ARPスプーフィングとは、攻撃者が自分のMACアドレスを別のノードのIPアドレスに関連付けようとすることです。ARPスプーフィングにより、ノードのトラフィックが攻撃者に送信される可能性があります。攻撃者はこの目標を達成するために、偽の(なりすまされた)ARPメッセージをイーサネットLANに送信します。
シナリオ:
VM-aがVM-bのIPアドレスを指定してVM-bにIPトラフィックを送信します。VM-cの攻撃者は、ARPスプーフィングを使用してVM-bになりすまします。
-
VM-cから、推測的なARP応答のストリームがVM-aに送信されます。これらのARP応答では、VM-cのMACアドレス(c_MAC)とVM-bのIPアドレス(b_IP)との関連付けが偽装されます。
結果:管理者がスイッチポートロック機能を有効にしたため、偽装が無効になり、これらのパケットはすべてドロップします。
-
VM-bからVM-aへのARP応答により、VM-bのMACアドレス(b_MAC)がVM-bのIPアドレス(b_IP)に関連付けられます。
結果:VM-aがVM-bのARP応答を受信します。
例2:IPアドレススプーフィングからの保護:
IPアドレススプーフィングは、ソースIPアドレスが偽装されたインターネットプロトコル(IP)パケットを作成することで、パケットの本当のIPアドレスを隠す手法です。
シナリオ:
攻撃者(Tenant C)が自分のホスト(Host-C)を使用してリモートシステムにサービス拒否攻撃をしかけ、自分のIDを偽装しようとします。
試行1:
Tenant CがHost-CのIPアドレスとMACアドレスとして、VM-aのもの(a_IPとa_MAC)を設定します。Tenant Cは、Host-CからリモートシステムにIPトラフィックを送信します。
結果:Host-Cからのパケットはドロップします。これは、管理者がスイッチポートロック機能を有効にしたためです。これにより偽装が無効になり、Host-Cからのパケットがドロップします。
試行2:
Tenant CがHost-CのIPアドレスとして、VM-aのもの(a_IP)を設定し、元のc_MACは保持します。
Tenant Cは、Host-CからリモートシステムにIPトラフィックを送信します。
結果:Host-Cからのパケットはドロップします。これは、管理者がスイッチポートロック機能を有効にしたためです。これにより、偽装が無効になります。
例3:Webホスト:
シナリオ:
山田氏はインフラストラクチャ管理者です。
彼のテナント(Tenant B)は自分の仮想マシンVM-bで複数のWebサイトをホストしています。各Webサイトでは、同一仮想ネットワークインターフェイス(VIF)上でホストされる個別のIPアドレスが必要です。
山田氏はHost-BのVIFを再設定して、このVIFが単一MACアドレスと複数IPアドレスを保持するように変更します。
スイッチポートロック機能のしくみ
スイッチポートロック機能により、以下の2つのレベルでパケットフィルターを制御できます。
-
VIFレベル:VIF上での設定により、パケットがどのようにフィルターされるかが決定されます。仮想マシンからのすべてのトラフィックをブロックしたり、そのVIFに関連付けられているIPアドレスを使用したトラフィックだけを送信したり、そのVIFが接続しているネットワーク上のすべてのIPアドレスにトラフィックを送信したりできます。
-
ネットワークレベル:Citrix Hypervisorネットワークにより、パケットがどのようにフィルターされるかが決定されます。VIFのロックモードを
network_default
に設定すると、ネットワークレベルのロック設定に基づいて許可されるトラフィックが決定されます。
使用するネットワークスタックにかかわらず、この機能は同じしくみで動作します。ただし、後続のセクションで説明するように、LinuxブリッジではIPv6でのスイッチポートロックが完全にはサポートされません。
VIFのロックモード
Citrix Hypervisorのスイッチポートロック機能では、VIFに4つのロックモードを設定できます。これらのロックモードは、実行中の仮想マシンに接続されているVIFに対してのみ適用されます。
-
Network_default:VIFのロックモードを
network_default
に設定すると、Citrix Hypervisorはネットワークのdefault-locking-mode
パラメーターに基づいてそのVIFを介したパケットをフィルターします。関連付けられているネットワークで、ネットワークのデフォルトのロックモードパラメーターが無効またはロック解除に設定されているかどうかによって、動作が異なります:- ネットワークのロックモードが
default-locking-mode
=disabled
の場合、Citrix HypervisorによってVIFですべてのトラフィックをドロップするフィルター規則が適用されます。- ネットワークのロックモードが
default-locking-mode
=unlockedの場合、Citrix HypervisorによってVIFのすべてのフィルター規則が解除されます。default-locking-modeパラメーターのデフォルト値はunlocked
です。default-locking-mode
パラメーターについては、「ネットワークコマンド」を参照してください。ネットワークのdefault-locking-modeパラメーターの設定がそのネットワークに接続しているVIFのフィルター規則に影響するのは、そのVIFのロックモードが
network_default
である場合のみです。注:
VIFがアクティブな場合、そのネットワークの
default-locking-mode
パラメーターを変更することはできません。 -
Locked(ロック済み)。VIFのロックモードをlockedに設定すると、Citrix HypervisorはそのVIFで特定のMACアドレスおよびIPアドレスとの送受信トラフィックのみを許可します。このモードでIPアドレスが指定されていない場合、仮想マシンはそのネットワーク上のVIFを介してトラフィックを送信できません。
VIFでのトラフィックを許可するIPアドレスを指定するには、IPv4またはIPv6のIPアドレスを
ipv4_allowed
またはipv6_allowed
パラメーターで指定します。ただし、Linuxブリッジを使用する環境では、IPv6アドレスを指定しないでください。Linuxブリッジがアクティブな場合でも、IPv6アドレスを指定すること自体は可能ですが、Citrix HypervisorではそのIPv6アドレスでトラフィックをフィルターすることはできません。LinuxブリッジにはNDP(Neighbor Discovery Protocol)パケットをフィルターするモジュールがないため、完全な保護を実装できません。このため、NDPパケットを偽造することで仮想マシンが偽装される場合があります。この結果、Linuxブリッジ環境でIPv6アドレスを指定しても、Citrix HypervisorによってすべてのIPv6トラフィックがそのVIFで許可されてしまいます。IPv6アドレスを指定しなければ、Citrix HypervisorによってすべてのIPv6トラフィックがそのVIFでドロップされます。
-
Unlocked(ロック解除)。すべてのネットワークトラフィックが許可され、そのVIFを通過できるようになります。つまり、そのVIFで送受信されるトラフィックにいかなるフィルターも適用されません。
-
無効。すべてのネットワークトラフィックが禁止され、そのVIFを通過できなくなります。(つまり、Citrix HypervisorによってVIFですべてのトラフィックをドロップするフィルター規則が適用されます。)
スイッチポートロックの設定
ここでは、以下の手順について説明します:
-
VIFで特定のIPアドレスのトラフィックだけを許可する。
-
許可するIPアドレスの一覧にほかのIPアドレスを追加する。たとえば、仮想マシンがネットワークに接続されて実行中に、VIFにIPアドレスを追加する場合(たとえば、ネットワークを一時的にオフラインにしている場合)。
-
許可するIPアドレスの一覧から特定のIPアドレスを削除する。
VIFのロックモードをlocked
に設定すると、ipv4-allowed
またはipv6-allowed
パラメーターで指定されたIPアドレスのトラフィックだけが許可されるようになります。
VIFに複数のIPアドレスが割り当てられることもあるため、これらのパラメーターでは、複数のIPアドレスを指定することもできます。
これらの手順は、VIFの接続前および接続後(仮想マシンの起動後)に実行できます。
VIFのロックモードがlockedに設定されていない場合は、次のコマンドでlocking-modeパラメーターにlockedを指定します。
xe vif-param-set uuid=vif-uuid locking-mode=locked
<!--NeedCopy-->
ここで、vif-uuid
にはVIFのUUIDを指定します。VIFのUUIDを確認するには、そのホスト上でxe vif-list
コマンドを実行します。vm-uuid
仮想マシンのUUID(vm-uuid)ごとに各デバイスの一覧が表示され、デバイスIDは、VIFのデバイス番号を示します。
vif-param-set
コマンドに以下のパラメーターを使用して、許可するIPアドレスを指定します。以下の1つまたは複数の操作を行います:
-
許可するIPv4 IPアドレスを指定します。例:
xe vif-param-set uuid=vif-uuid ipv4-allowed=comma separated list of ipv4-addresses <!--NeedCopy-->
-
許可するIPv6 IPアドレスを指定します。例:
xe vif-param-set uuid=vif-uuid ipv6-allowed=comma separated list of ipv6-addresses <!--NeedCopy-->
複数のIPアドレスをコンマで区切って入力できます。
上記の手順で許可されるIPアドレスを指定した後で、そのVIFに許可されるIPアドレスを追加することができます。
vif-param-add
コマンドに以下のパラメーターを使用して、許可するIPアドレスを追加します。以下の1つまたは複数の操作を行います:
-
IPv4 IPアドレスを指定します。例:
xe vif-param-add uuid=vif-uuid ipv4-allowed=comma separated list of ipv4-addresses <!--NeedCopy-->
-
IPv6 IPアドレスを指定します。例:
xe vif-param-add uuid=vif-uuid ipv6-allowed=comma separated list of ipv6-addresses <!--NeedCopy-->
許可するIPアドレスとして複数のアドレスが指定されている場合は、特定のIPアドレスを削除して、そのアドレスのトラフィックをドロップできます。
vif-param-remove
コマンドに以下のパラメーターを使用して、削除するIPアドレスを指定します。以下の1つまたは複数の操作を行います:
-
削除するIPv4 IPアドレスを指定します。例:
xe vif-param-remove uuid=vif-uuid ipv4-allowed=comma separated list of ipv4-addresses <!--NeedCopy-->
-
削除するIPv6 IPアドレスを指定します。例:
xe vif-param-remove uuid=vif-uuid ipv6-allowed=comma separated list of ipv6-addresses <!--NeedCopy-->
仮想マシンが特定のネットワークでトラフィックを送信したり受信したりできなくする
ここでは、仮想マシンで特定のVIFを介した送受信を禁止します。VIFは特定のCitrix Hypervisorネットワークに接続するため、この手順を使用して仮想マシンが特定のネットワークを介して通信できないように設定できます。これにより、ネットワーク全体を無効にしなくても、トラフィックの送受信を詳細に制御できるようになります。
CLIコマンドを使用する場合、VIFの接続を解除しなくてもそのVIFのロックモードを設定できます。このコマンドでは、実行中のVIFのフィルター規則を変更できます。ネットワーク接続は許可されているように表示されますが、仮想マシンから送信されるパケットはVIFですべてドロップされます。
ヒント:
VIFのUUIDを確認するには、そのホスト上でxe
vif-list
コマンドを実行します。デバイスIDは、VIFのデバイス番号を示します。
VIFがトラフィックを受信しないようにするには、次のコマンドを実行して、禁止するネットワークに接続しているVIFのロックモードをdisabledに設定します:
xe vif-param-set uuid=vif-uuid locking-mode=disabled
<!--NeedCopy-->
また、XenCenterでVIFを無効にすることもできます。これを行うには、仮想マシンの[ネットワーク]タブでそのVIFを選択して、[非アクティブ化]をクリックします。
VIFのIPアドレス制限の解除
VIFのロックモードを元のデフォルトの設定に戻すには、以下の手順に従います。新規に作成するVIFには、Citrix Hypervisorよって「unlocked」(ロック解除)のロックモードが設定され、すべてのIPアドレスのトラフィックが許可されます。
VIFをロック解除状態に戻すには、VIFのデフォルトのロックモードをunlockedに変更します。ロックモードがunlockedに設定されていない場合は、次のコマンドを実行します:
xe vif-param-set uuid=vif_uuid locking-mode=unlocked
<!--NeedCopy-->
クラウド環境でのVIFロックモードの簡単設定
クラウド環境では、各VIFに対してロックモードコマンドを個別に実行せずに、すべてのVIFがデフォルトでdisabledになるように設定できます。これを行うには、ネットワークレベルでパケットのフィルター規則を変更します。これにより、前のセクション「スイッチポートロック機能のしくみ」で説明したように、パケットがどのようにフィルターされるかがCitrix Hypervisorネットワークにより決定されるようになります。
ネットワークのdefault-locking-mode
パラメーターにより、新しく作成するVIFのデフォルトの動作が決定されます。VIFのlocking-mode
がnetwork_default
の場合、ネットワークレベルのロックモード(default-locking-mode
)が参照され、その設定によりVIFでパケットの通過を禁止するか許可するかが決定されます。
-
Unlocked(ロック解除)。ネットワークの
default-locking-mode
パラメーターがunlocked
の場合、Citrix Hypervisorによってそのネットワークが接続するVIFですべてのトラフィックが許可されます。 -
無効。ネットワークの
default-locking-mode
パラメーターがdisabled
の場合、Citrix Hypervisorによってそのネットワークが接続するVIFですべてのトラフィックをドロップするフィルター規則が適用されます。
XenCenterやCLIで作成するネットワークのdefault-locking-mode
パラメーターには、デフォルトでunlocked
が設定されます。
VIFのロックモードをデフォルト(network_default
)のままにしておくことで、ネットワークのdefault-locking-modeパラメーターでそのネットワークに接続するすべてのVIFのフィルター規則を制御できます。
次の図は、各VIFのlocking-mode
パラメーターがデフォルト値(network_default
)の場合に、ネットワークのdefault-locking-mode
パラメーターの設定がすべてのVIFに適用されることを示しています。
たとえば、デフォルトでは、新しく作成されるVIFのlocking-mode
はnetwork_default
に設定されるため、ネットワークのdefault-locking-mode
をdisabled
に設定した場合、ロックモードが設定されていないすべてのVIFにこの設定が適用されます。この設定を特定のVIFで変更するには、そのVIFのlocking-mode
パラメーターを変更するか、VIFのlocking-mode
パラメーターを明示的にunlockedに設定します。これは、特定の仮想マシンを十分に信頼しているため、そのトラフィックをまったくフィルタリングしたくない場合に役立ちます。
ネットワークのデフォルトのロックモード設定を変更するには:
ネットワークを作成した後で、次のコマンドを実行してデフォルトのロックモードを変更します。
xe network-param-set uuid=network-uuid default-locking-mode=[unlocked|disabled]
<!--NeedCopy-->
注:
ネットワークのUUIDを確認するには、xe
network-list
コマンドを実行します。このコマンドは、コマンドを実行したホスト上のすべてのネットワークのUUIDを表示します。
ネットワークのデフォルトのロックモード設定を確認するには:
以下のいずれかのコマンドを実行します:
xe network-param-get uuid=network-uuid param-name=default-locking-mode
<!--NeedCopy-->
または
xe network-list uuid=network-uuid params=default-locking-mode
<!--NeedCopy-->
VIFトラフィックフィルタリングのネットワーク設定を使用する
Citrix Hypervisorネットワークのdefault-locking-mode
設定に基づいて、そのネットワークに接続する仮想マシン上のVIFのフィルター規則を制御するには、以下の手順に従います。
-
VIFのロックモードが
network_default
に設定されていない場合は、次のコマンドを実行します:xe vif-param-set uuid=vif_uuid locking-mode=network_default <!--NeedCopy-->
-
VIFのロックモードが
unlocked
に設定されていない場合は、次のコマンドを実行します:xe network-param-set uuid=network-uuid default-locking-mode=unlocked <!--NeedCopy-->