Cisco ASA のマルチモード (マルチコンテキスト) 設定
Cisco ASA のマルチモード (マルチコンテキスト) 設定についてメモしておきます。
マルチモードへの変更
ASA のモード設定は show mode で確認出来ます。single と表示された場合はシングルモード (非マルチモード) です。既にマルチモードになっているようであれば、以降のモード変更手順は不要です。
| ciscoasa# show mode
Security context mode: single
|
マルチモードに変更するには mode multiple を設定後に再起動します。もしくは mode noconfirm multiple を設定すると自動的に再起動が開始されます。
| ciscoasa# configure terminal
ciscoasa(config)# mode noconfirm multiple
|
再起動が完了するとマルチモードになっているはずです。
| ciscoasa# show mode
Security context mode: multiple
|
シングルモード時のコンフィグがマルチモード用に変換され、startup-config に残っているはずです。意図したコンフィグしか設定したくないので、write erase で startup-config を削除して再起動します。
| ciscoasa# write erase
Erase configuration in flash memory? [confirm]
[OK]
ciscoasa# reload
Proceed with reload? [confirm]
|
マルチモードへ変更した際、自動的に admin.cfg 等のファイルが作成されています。再起動が完了したら、これらのファイル (*.cfg ファイル) を削除します。
| ciscoasa# delete *.cfg
Delete filename [*.cfg]?
Delete disk0:/old_running.cfg? [confirm]
Delete disk0:/admin.cfg? [confirm]
|
Failover の設定
コンテキストを含む、あらゆる設定を実施する前に、まずは Failover を設定します。ASA の Failover 設定については 以前の記事 で記載しました。今回は以下のように設定しました。
ASA-1 側の設定
マルチモードではプロンプトに「現在のコンテキスト」を表示した方が便利なので prompt に context も指定しています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | interface GigabitEthernet0/0
channel-group 1 mode active
no shutdown
!
interface GigabitEthernet0/1
channel-group 1 mode active
no shutdown
!
interface Port-channel1
!
failover
failover lan unit primary
failover lan interface FAILOVER Port-channel1
failover link FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2
!
prompt hostname state priority context
|
ASA-2 側の設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | interface GigabitEthernet0/0
channel-group 1 mode active
no shutdown
!
interface GigabitEthernet0/1
channel-group 1 mode active
no shutdown
!
interface Port-channel1
!
failover
failover lan unit secondary
failover lan interface FAILOVER Port-channel1
failover link FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2
|
状態確認
設定が完了し、Failover が構成されたら show failover state で状態を確認しておきます。
| ciscoasa/act/pri# show failover state
State Last Failure Reason Date/Time
This host - Primary
Active None
Other host - Secondary
Standby Ready None
====Configuration State===
Sync Done
====Communication State===
|
最初の状態
設定されたコンテキストの一覧は show context で確認出来ます。(write erase を実施しているので) 最初の状態では追加コンテキストが存在しません。つまり、「system コンテキストしか無い状態」と言えます。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
Total active Security Contexts: 0
|
「ASA 内に system コンテキストしか存在しない」状態を図示すると以下のようになります。
管理用コンテキストを作成する
コンテキストを作成する
管理用に「admin」コンテキストを作成します。コンテキストの作成は context [NAME] で行いますが管理用コンテキストに限り、明示的に admin-context [NAME] を一緒に設定し、該当コンテキストが管理用である旨を宣言します。具体的には以下のように設定します。この例では管理用コンテキストの名前を「admin」にしました。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# admin-context admin
Creating context 'admin'... Done. (1)
ciscoasa/act/pri(config)# context admin
ciscoasa/act/pri(config-ctx)#
|
show context を確認すると admin コンテキストが表示されるようになりました。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
*admin default Routed (not entered)
Total active Security Contexts: 1
|
現在の状態を図示すると以下の通りです。system コンテキスト上で admin コンテキストを作成しました。
インターフェイスを割り当てる
次は作成したコンテキストにインターフェイスを割り当てます。コンテキスト内部からは割り当てられたインターフェイスしか認識することが出来ません。インターフェイスの割り当ては allocate-interface [INTERFACE] で行います。今回は admin コンテキストに Management0/0 を割り当ててみます。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# context admin
ciscoasa/act/pri(config-ctx)# allocate-interface Management0/0
|
これまでの状態を図示すると以下のようになります。admin コンテキストを作成し、Ma0/0 インターフェイスを割り当てました。
コンフィグの保存位置を指定する
コンテキスト毎のコンフィグはテキストファイルとして保存されます。保存位置は config-url [LOCATION] で指定します。今回は disk0:admin.cfg として保存してみます。まず、設定前に disk0:admin.cfg ファイルが存在しないことを dir で確認します。
| ciscoasa/act/pri# dir disk0:admin.cfg
%Error opening disk0:/admin.cfg (No such file or directory)
|
admin コンテキストのコンフィグ保存位置を config-url [LOCATION] で指定します。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# context admin
ciscoasa/act/pri(config-ctx)# config-url disk0:admin.cfg
INFO: Converting disk0:admin.cfg to disk0:/admin.cfg
WARNING: Could not fetch the URL disk0:/admin.cfg
INFO: Creating context with default config
INFO: Admin context will take some time to come up .... please wait.
|
これでコンフィグの保存位置は指定完了です。しかし、まだこの状態ではコンフィグファイルは作成されていません。これは「該当コンテキストでの初回コンフィグ保存時にコンフィグファイルが作成される」為です。
| ciscoasa/act/pri# dir disk0:/admin.cfg
%Error opening disk0:/admin.cfg (No such file or directory)
|
write memory では現在のコンテキストのコンフィグのみを保存します (=他のコンテキストのコンフィグは保存しません)。しかし、system コンテキストだけで利用出来る write memory all を実行すると全コンテキストのコンフィグを保存することが出来ます。但し、「コンテキストをエンドユーザ毎に割り当て、自身で設定させている場合」等は一括して全コンテキストのコンフィグを保存してはならないケースもあるので、write memory all の使用には注意が必要です。今回は初期設定中なので write memory all を実行し、全コンテキストの設定を保存します。
1
2
3
4
5
6
7
8
9
10
11
12 | ciscoasa/act/pri# write memory all
Building configuration...
Do you wish to continue? [confirm]
Saving context : system : (000/001 Contexts saved)
Cryptochecksum: 7835d168 7161969b 2b2e085d e0b46987
1862 bytes copied in 0.730 secs
Saving context : admin : (001/001 Contexts saved)
Cryptochecksum: 8ebc25be 88f63985 d5403b94 852ac8ce
1747 bytes copied in 0.120 secs
[OK]
|
write memory all の実行結果を確認すると全コンテキスト (system と admin) の設定が一度に保存されているのが分かります。これで admin コンテキストのコンフィグファイルが生成されました。
| ciscoasa/act/pri# dir disk0:/admin.cfg
Directory of disk0:/admin.cfg
80 -rwx 1747 15:30:27 May 02 2016 admin.cfg
8238202880 bytes total (4848738304 bytes free)
|
現在の状態を図示すると以下の通りです。admin コンテキストを作成して Management0/0 を割り当て、コンフィグの保存位置も指定しました。
一般用コンテキストを作成する (context2)
コンテキストを作成する
管理用では無い、一般コンテキストは context [NAME] で作成します。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# context context2
Creating context 'context2'... Done. (2)
|
これで context2 コンテキストが作成されました。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
*admin default Management0/0 Routed disk0:/admin.cfg
context2 default Routed (not entered)
Total active Security Contexts: 2
|
現在の状態を図示すると以下の通りです。admin コンテキストに続いて context2 コンテキストを作成しました。
インターフェイスを割り当てる
context2 には GigabitEthernet0/2 を割り当てます。admin コンテキストの設定時同様、allocate-interface [INTERFACE] で設定します。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# context context2
ciscoasa/act/pri(config-ctx)# allocate-interface GigabitEthernet0/2
|
show context を確認すると context2 に GigabitEthernet0/2 が割り当てられていることを確認出来ます。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
*admin default Management0/0 Routed disk0:/admin.cfg
context2 default GigabitEthernet0/2 Routed (not entered)
Total active Security Contexts: 2
|
現在の状態を図示すると以下の通りです。作成した context2 コンテキストに GigabitEthernet0/2 を割り当てました。
コンフィグの保存位置を指定する
context2 コンテキストのコンフィグ保存位置も指定しておきます。今回は disk0:context2.cfg にします。必ずしもコンテキスト名とファイル名をあわせる必要はありませんが、管理のし易さを考慮するとコンテキスト名とファイル名は揃えておいた方が無難だと思います。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# context context2
ciscoasa/act/pri(config-ctx)# config-url disk0:context2.cfg
INFO: Converting disk0:context2.cfg to disk0:/context2.cfg
WARNING: Could not fetch the URL disk0:/context2.cfg
INFO: Creating context with default config
|
show context を確認すると context2 コンテキストも URL が指定されたことが分かります。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
*admin default Management0/0 Routed disk0:/admin.cfg
context2 default GigabitEthernet0/2 Routed disk0:/context2.cfg
Total active Security Contexts: 2
|
現在の状態を図示すると以下の通りです。admin コンテキストに加え、context2 コンテキストを作成し、GigabitEthernet0/2 を割り当て、コンフィグの保存位置も指定しました。
一般用コンテキストを作成する (context3)
もうひとつ、一般用コンテキストを作成します。コンテキスト名は「context3」、割り当てるインターフェイスは「GigabitEthernet0/3」、コンフィグファイルの保存位置は「disk0:context3.cfg」にします。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# context context3
Creating context 'context3'... Done. (3)
ciscoasa/act/pri(config-ctx)# allocate-interface GigabitEthernet0/3
ciscoasa/act/pri(config-ctx)# config-url disk0:context3.cfg
INFO: Converting disk0:context3.cfg to disk0:/context3.cfg
WARNING: Could not fetch the URL disk0:/context3.cfg
INFO: Creating context with default config
|
write memory all で全コンテキストのコンフィグを保存しておきます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | ciscoasa/act/pri# write memory all
Building configuration...
Do you wish to continue? [confirm]
Saving context : system : (000/003 Contexts saved)
Cryptochecksum: 4b24510b 804daf7f 84115d13 c14f93d3
2058 bytes copied in 0.730 secs
Saving context : admin : (001/003 Contexts saved)
Cryptochecksum: 8ebc25be 88f63985 d5403b94 852ac8ce
1747 bytes copied in 0.120 secs
Saving context : context2 : (002/003 Contexts saved)
Cryptochecksum: 98671e5b 555f8999 840464a2 f5aafab8
1655 bytes copied in 0.110 secs
Saving context : context3 : (003/003 Contexts saved)
Cryptochecksum: d95e8c9f 12e2b2b7 891630e5 1b6d6b95
1655 bytes copied in 0.110 secs
[OK]
|
dir でコンフィグファイルが保存されたことを確認しておきます。
| ciscoasa/act/pri# dir *.cfg
Directory of disk0:/*.cfg
80 -rwx 1747 16:06:23 May 02 2016 admin.cfg
81 -rwx 1655 16:06:23 May 02 2016 context2.cfg
84 -rwx 1655 16:06:24 May 02 2016 context3.cfg
8238202880 bytes total (4848721920 bytes free)
|
現在の状態を図示すると以下の通りです。デフォルトで存在する system に加え、admin、context2、context3 というコンテキストを作成しました。
コンテキスト間の移動
管理用コンテキストからの移動
コンテキスト間の移動は changeto context [NAME] で行います。但し、system コンテキストに移動する場合のみ changeto system も使用することが出来ます (changeto context system を使うことも出来ます)。
一般用コンテキストからの移動
一般用コンテキストにも telnet や ssh の設定をすることは可能です。但し、telnet や ssh 等で一般用コンテキストにログインした場合、他のコンテキストに移動することは出来ません。
コンテキストから認識出来るインターフェイス
各コンテキストから認識出来るのは「system コンテキスト上で割り当てられたインターフェイスのみ」です。割り当てられていないインターフェイスは show interface 等で表示されないだけでなく、syslog や SNMP でもログを検知したり Trap を飛ばしたりすることは出来ません。ASA のコンテキストとインターフェイス割り当てが以下のようになっているとします。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
*admin default Management0/0 Routed disk0:/admin.cfg
context2 default GigabitEthernet0/2 Routed disk0:/context2.cfg
context3 default GigabitEthernet0/3 Routed disk0:/context3.cfg
Total active Security Contexts: 3
|
この状態で system コンテキストで show interface ip brief を確認すると全インターフェイスが表示されます。system では常に全てのインターフェイスが認識されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | ciscoasa/act/pri# show interface ip brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 unassigned YES unset up up
GigabitEthernet0/1 unassigned YES unset up up
GigabitEthernet0/2 unassigned YES unset administratively down up
GigabitEthernet0/3 unassigned YES unset administratively down up
GigabitEthernet0/4 unassigned YES unset administratively down down
GigabitEthernet0/5 unassigned YES unset administratively down down
Internal-Control0/0 127.0.1.1 YES unset up up
Internal-Data0/0 unassigned YES unset down up
Internal-Data0/1 unassigned YES unset up up
Internal-Data0/2 unassigned YES unset up up
Management0/0 unassigned YES unset administratively down up
Port-channel1 10.0.0.1 YES unset up up
|
admin コンテキストでは以下のように表示されます。割り当てられている Management0/0 のみ、表示されています。
| ciscoasa/act/pri/admin# show interface ip brief
Interface IP-Address OK? Method Status Protocol
Management0/0 unassigned YES unset up up
|
context2 コンテキストでも同様に、割り当てられているインターフェイスのみ、表示されています。
| ciscoasa/act/pri/context2# show interface ip brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/2 unassigned YES unset down down
|
context3 コンテキストでも同様です。
| ciscoasa/act/pri/context3# show interface ip brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/3 unassigned YES unset down down
|
インターフェイスの状態について
同じインターフェイスに対して「system コンテキストで shutdown / no shutdown」しつつ、コンテキストで「shutdown / no shutdown」した場合、インターフェイスの状態は以下のように表示されます。尚、対向スイッチとは正しく結線され、対向スイッチ側では no shutdown されているものとします。
No. |
system の設定 |
system での見え方 |
コンテキストの設定 |
コンテキストでの見え方 |
1 |
shutdown |
administratively down |
shutdown |
administratively down |
2 |
shutdown |
administratively down |
no shutdown |
down |
3 |
no shutdown |
up |
shutdown |
administratively down |
4 |
no shutdown |
up |
no shutdown |
up |
No.2 に該当しますが、system で shutdown している場合、コンテキストで no shutdown してもコンテキストでの状態表示は「down」と表示され、通信は出来ません。各コンテキストでインターフェイスを LinkUp させるには No.4 のように system コンテキストと各コンテキストの両方で no shutdown する必要があります (デフォルトで system のインターフェイスは shutdown、各コンテキストのインターフェイスは no shutdown になっているはずです)。
コンフィグの保存位置を指定しないとコンテキストを利用出来ない
以下のように config-url を指定しないコンテキストを作成したとします。
| ciscoasa/act/pri# show running-config context context4
context context4
allocate-interface GigabitEthernet0/3
|
changeto context でこのコンテキストに移動しようとするとエラーになってしまい、コンテキストを設定することが出来ません。
| ciscoasa/act/pri# changeto context context4
ERROR: Context hasn't been initialized with 'config-url'
|
同じインターフェイスを別コンテキストで shutdown されたら?
結論から述べると「影響ありません」。
そもそも同じ物理インターフェイスを別のコンテキストに割り当てることも可能です。例えば、以下では context3 と context4 に同じ GigabitEthernet0/3 を割り当てています。
| ciscoasa/act/pri# show context
Context Name Class Interfaces Mode URL
*admin default Management0/0 Routed disk0:/admin.cfg
context2 default GigabitEthernet0/2 Routed disk0:/context2.cfg
context3 default GigabitEthernet0/3 Routed disk0:/context3.cfg
context4 default GigabitEthernet0/3 Routed disk0:/context4.cfg
Total active Security Contexts: 4
|
system コンテキストで GigabitEthernet0/3 が no shutdown されているとします。
| ciscoasa/act/pri# configure terminal
ciscoasa/act/pri(config)# interface GigabitEthernet 0/3
ciscoasa/act/pri(config-if)# no shutdown
|
| ciscoasa/act/pri# show interface GigabitEthernet 0/3
Interface GigabitEthernet0/3 "", is up, line protocol is up
|
context3 では GigabitEthernet0/3 を shutdown します。一見、物理インターフェイスを閉塞したように見えますが、対向側の機器では LinkDown しません。
| ciscoasa/act/pri/context3# configure terminal
ciscoasa/act/pri/context3(config)# interface GigabitEthernet 0/3
ciscoasa/act/pri/context3(config-if)# shutdown
|
| ciscoasa/act/pri/context3# show interface GigabitEthernet 0/3
Interface GigabitEthernet0/3 "", is administratively down, line protocol is down
Available but not configured via nameif
|
context4 では GigabitEthernet0/3 を no shutdown します。先程、context3 では shutdown したにも関わらず、インターフェイスの状態は LinkUp しています。実際に Ping 等で通信確認すると問題無く、通信出来ています。
| ciscoasa/act/pri/context4# configure terminal
ciscoasa/act/pri/context4(config)# interface GigabitEthernet 0/3
ciscoasa/act/pri/context4(config-if)# no shutdown
|
| ciscoasa/act/pri/context4# show interface GigabitEthernet 0/3
Interface GigabitEthernet0/3 "", is up, line protocol is up
Available but not configured via nameif
|
マルチモードだと SSL-VPN が使えない?
従来はマルチモードにすると SSL-VPN が使えなかったようです。しかし、リリースノートを見る限り、OS バージョン 9.5(2) からはサポートされるようになったようです。
参考 URL