KVM を使用した ASAv の導入

カーネルベースの仮想マシン(KVM)を使用して ASAv を導入することができます。

KVM を使用した ASAv の導入について

図 1は、ASAv と KVM によるネットワーク トポロジの例を示しています。この章で説明している手順は、このトポロジの例に基づいています。実際に必要な手順は、各自の要件に応じて異なります。ASAv は、内部ネットワークと外部ネットワークの間のファイアウォールとして動作します。また、別個の管理ネットワークが設定されます。

図 1 KVM を使用した ASAv の導入例

 

ASAv と KVM の前提条件

  • Cisco.com から ASAv qcow2 ファイルをダウンロードし、Linux ホストに格納します。

Cisco.com のログインおよびシスコ サービス契約が必要です。

  • このマニュアルの導入例では、ユーザが Ubuntu 14.04 LTS を使用していることを前提としています。Ubuntu 14.04 LTS ホストの最上部に次のパッケージをインストールします。

qemu-kvm

libvirt bin

bridge-utils

Virt-Manager

virtinst

virsh tools

genisoimage

macvtap:高性能の Linux ブリッジ。Linux ブリッジの代わりに macvtap を使用できます。ただし、Linux ブリッジの代わりに macvtap を使用する場合は、特定の設定を行う必要があります。

Transparent Huge Pages:メモリ ページ サイズを増加させます。Ubuntu 14.04 では、デフォルトでオンになっています。

Hyperthread disabled:2 つの vCPUを 1 つのシングル コアに削減します。

txqueuelength:デフォルトの txqueuelength を 4000 パケットに増加させ、ドロップ レートを低減します。

pinning:qemu および vhost プロセスを特定のCPU コア にピン接続します。特定の条件下では、ピン接続によってパフォーマンスが大幅に向上します。

第 0 日のコンフィギュレーション ファイルの準備

ASAv を起動する前に、第 0 日(Day 0)用のコンフィギュレーション ファイルを準備できます。このファイルは、ASAv の起動時に適用される ASAv の設定を含むテキスト ファイルです。この初期設定は、「day0-config」というテキスト ファイルとして指定の作業ディレクトリに格納され、さらに day0.iso ファイルへと処理されます。この day0.iso ファイルが最初の起動時にマウントされて読み取られます。第 0 日用コンフィギュレーション ファイルには、少なくとも、管理インターフェイスをアクティブ化するコマンドと、公開キー認証用 SSH サーバをセットアップするコマンドを含める必要がありますが、すべての ASA 設定を含めることもできます。day0.iso ファイル(カスタム day0 またはデフォルトの day0.iso)は、最初の起動中に使用できなければなりません。

:初期導入時に自動的に ASAv をライセンス許諾するには、Cisco Smart Software Manager からダウンロードした Smart Licensing Identity(ID)トークンを「idtoken」というテキスト ファイルに格納し、第 0 日用コンフィギュレーション ファイルと同じディレクトリに保存します。

:トランスペアレント モードで ASAv を導入する場合は、トランスペアレント モードで実行される既知の ASA コンフィギュレーション ファイルを第 0 日用コンフィギュレーション ファイルとして使用します。これは、ルーテッド ファイアウォールの第 0 日用コンフィギュレーション ファイルには該当しません。

:この例では Linux が使用されていますが、Windows の場合にも同様のユーティリティがあります。

手順

1. 「day0-config」というテキスト ファイルに ASAv の CLI 設定を記入します。3 つのインターフェイスの設定とその他の必要な設定を追加します。

最初の行は ASA のバージョンで始める必要があります。day0-config は、有効な ASA 構成である必要があります。day0-config を生成する最適な方法は、既存の ASA または ASAv から実行コンフィギュレーションの必要な部分をコピーすることです。day0-config 内の行の順序は重要で、既存の show run コマンド出力の順序と一致している必要があります。

例:

ASA Version 9.4.1
!
interface management0/0
nameif management
security-level 100
ip address 192.168.1.2 255.255.255.0
no shutdown
interface gigabitethernet0/0
nameif inside
security-level 100
ip address 10.1.1.2 255.255.255.0
no shutdown
interface gigabitethernet0/1
nameif outside
security-level 0
ip address 198.51.100.2 255.255.255.0
no shutdown
http server enable
http 192.168.1.0 255.255.255.0 management
crypto key generate rsa modulus 1024
username AdminUser password paSSw0rd
ssh 192.168.1.0 255.255.255.0 management
aaa authentication ssh console LOCAL

2. (任意)Cisco Smart Software Manager により発行された Smart License ID トークン ファイルをコンピュータにダウンロードします。

3. (任意)ダウンロード ファイルから ID トークンをコピーし、ID トークンのみを含む「idtoken」というテキスト ファイルを作成します。

4. (任意)ASAv の初期導入時に自動的にライセンス許諾を行う場合は、day0-config ファイルに次の情報が含まれていることを確認してください。

管理インターフェイスの IP アドレス

(任意)Smart Licensing で使用する HTTP プロキシ

HTTP プロキシ(指定した場合)または tools.cisco.com への接続を有効にする route コマンド

tools.cisco.com を IP アドレスに解決する DNS サーバ

要求する ASAv ライセンスを指定するための Smart Licensing の設定

(任意)CSSM での ASAv の検索を容易にするための一意のホスト名

5. テキスト ファイルを ISO ファイルに変換して仮想CD-ROM を生成します。

stack@user-ubuntu:-/KvmAsa$ sudo genisoimage -r -o day0.iso day0-config idtoken
I: input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 252
Total directory bytes: 0
Path table size (byptes): 10
Max brk space used 0
176 extents written (0 MB)
stack@user-ubuntu:-/KvmAsa$

この ID トークンによって、Smart Licensing サーバに ASAv が自動的に登録されます。

6. ステップ 1から 5 を繰り返し、導入する ASAv ごとに、適切な IP アドレスを含むデフォルトのコンフィギュレーション ファイルを作成します。

仮想ブリッジ XML ファイルの準備

ASAv ゲストを KVM ホストに接続し、ゲストを相互接続する仮想ネットワークを設定する必要があります。

この手順では、KVM から外部への接続は確立されません。

KVM ホスト上に仮想ブリッジ XMLファイルを準備します。第 0 日のコンフィギュレーション ファイルの準備に記載されている仮想ネットワーク トポロジの例では、3 つの仮想ブリッジ ファイル(virbr1.xml、virbr2.xml、virbr3.xml)が必要です(これらの 3 つのファイル名を使用する必要があります。たとえば、virbr0 はすでに存在しているため使用できません)。各ファイルには、仮想ブリッジの設定に必要な情報が含まれています。仮想ブリッジに対して名前と一意の MAC アドレスを指定する必要があります。IP アドレスの指定は任意です。

手順

1. 次の 3 つの仮想ネットワーク ブリッジ XML ファイルを作成します。

virbr1.xml:

<network>
<name>virbr1</name>
<bridge name='virbr1' stp='on' delay='0' />
<mac address='52:54:00:05:6e:00' />
<ip address='192.168.1.10' netmask='255.255.255.0' />
</network>

virbr2.xml:

<network>
<name>virbr2</name>
<bridge name='virbr2' stp='on' delay='0' />
<mac address='52:54:00:05:6e:01' />
<ip address='10.1.1.10' netmask='255.255.255.0' />
</network>

virbr3.xml:

<network>
<name>virbr3</name>
<bridge name='virbr3' stp='on' delay='0' />
<mac address='52:54:00:05:6e:02' />
<ip address='198.51.100.10' netmask='255.255.255.0' />
</network>

2. 以下を含むスクリプトを作成します(この例では、スクリプトに virt_network_setup.sh という名前を付けます)。

virsh net-create virbr1.xml
virsh net-create virbr2.xml
virsh net-create virbr3.xml

3. このスクリプトを実行して仮想ネットワークを設定します。スクリプトによって仮想ネットワークが確立されます。ネットワークは、KVM ホストが動作している限り稼動します。

stack@user-ubuntu:-/KvmAsa$ virt_network_setup.sh

Linux ホストをリロードする場合は、virt_network_setup.sh スクリプトを再実行する必要があります。スクリプトはリブート後に継続されません。

4. 仮想ネットワークが作成されたことを確認します。

stack@user-ubuntu:-/KvmAsa$ brctl show
bridge name bridge id STP enabled Interfaces
virbr0 8000.0000000000000 yes
virbr1 8000.5254000056eed yes virb1-nic
virbr2 8000.5254000056eee yes virb2-nic
virbr3 8000.5254000056eec yes virb3-nic
stack@user-ubuntu:-/KvmAsa$

5. virbr1 ブリッジに割り当てられている IP アドレスを表示します。これは、XML ファイルで割り当てた IP アドレスです。

stack@user-ubuntu:-/KvmAsa$ ip address show virbr1
S: virbr1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 52:54:00:05:6e:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global virbr1
valid_lft forever preferred_lft forever

ASAv の起動

ASAv を起動するには、virt-install ベースの導入スクリプトを使用します。

手順

1. 「virt_install_asav.sh」という virt-install スクリプトを作成します。

ASAv VM の名前は、KVM ホスト上の他の仮想マシン(VM)全体において一意である必要があります。ASAv は最大 10 のネットワークをサポートできます。この例では 3 つのネットワークが使用されています。ネットワーク ブリッジの句の順序は重要です。リストの最初の句は常に ASAv の管理インターフェイス(管理 0/0)、2 番目の句は ASAv の GigabitEthernet 0/0、3 番目の句は ASAv の GigabitEthernet 0/1 に該当し、GigabitEthernet0/8 まで同様に続きます。仮想 NIC は Virtio でなければなりません。

virt-install \
--connect=qemu:///system \
--network network=default,model=virtio \
--network network=default,model=virtio \
--network network=default,model=virtio \
--name=asav \
--cpu host \
--arch=x86_64 \
--machine=pc-1.0 \
--vcpus=1 \
--ram=2048 \
--os-type=linux \
--os-variant=generic26 \
--noacpi \
--virt-type=kvm \
--import \
--disk path=/home/kvmperf/Images/desmo.qcow2,format=qcow2,device=disk,bus=ide,cache=none \
--disk path=/home/kvmperf/asav_day0.iso,format=iso,device=cdrom \
--console pty,target_type=virtio \
--serial tcp,host=127.0.0.1:4554,mode=bind,protocol=telnet

2. virt_install スクリプトを実行します。

stack@user-ubuntu:-/KvmAsa$./virt_install_asav.sh
 
Starting install...
Creating domain...

ウィンドウが開き、VM のコンソールが表示されます。VM が起動中であることを確認できます。VM が起動するまでに数分かかります。VM が起動したら、コンソール画面から CLI コマンドを実行できます。